From 0bb2f662e4fc455d8b300d0cdbbde3a74c5aa363 Mon Sep 17 00:00:00 2001 From: Aman Date: Tue, 10 Dec 2024 15:30:30 -0800 Subject: [PATCH 001/111] Created SQS, function to pass parameters to it, and trigger. --- cdk/OpenAPI_Swagger_Definition.yaml | 47 +++--- cdk/bin/cdk.ts | 10 +- cdk/lambda/lib/instructorFunction.js | 138 +++++++++--------- cdk/lambda/sqsFunction/sqsFunction.js | 37 +++++ cdk/lambda/sqsTrigger/sqsTrigger.js | 11 ++ cdk/lib/api-gateway-stack.ts | 77 ++++++++++ .../src/pages/instructor/ViewStudents.jsx | 21 +-- 7 files changed, 236 insertions(+), 105 deletions(-) create mode 100644 cdk/lambda/sqsFunction/sqsFunction.js create mode 100644 cdk/lambda/sqsTrigger/sqsTrigger.js diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 52c7610..2cf7713 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -1279,34 +1279,39 @@ paths: responseTemplates: application/json: | {} - get: - summary: Retrieve course messages and competency status for a specific student - description: | - This endpoint returns all messages for a specific student in a course. It includes user_id, module_name, session, message content, competency status (complete/incomplete), and message timestamp, ordered by user_id, module_name, session, and timestamp. - parameters: - - name: instructor_email - in: query - required: true - schema: - type: string - description: The email of the instructor. - - name: course_id - in: query - required: true - schema: - type: string - description: The course ID. + post: + tags: + - Instructor + summary: Submit course message retrieval job + operationId: instructor_course_messages_POST + description: Submit a job to retrieve course messages via SQS. + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + instructor_email: + type: string + description: The instructor's email. + course_id: + type: string + description: The course ID. + required: + - instructor_email + - course_id responses: "200": - description: Presigned URL generated successfully + description: Job submitted successfully. content: application/json: schema: type: object properties: - presignedurl: + message: type: string - description: Presigned URL to upload document file to S3 Bucket + description: A success message. "400": description: Bad Request "401": @@ -1319,7 +1324,7 @@ paths: - instructorAuthorizer: [] x-amazon-apigateway-integration: uri: - Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${instructorFunction.Arn}/invocations" + Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${sqsFunction.Arn}/invocations" passthroughBehavior: "when_no_match" httpMethod: "POST" type: "aws_proxy" diff --git a/cdk/bin/cdk.ts b/cdk/bin/cdk.ts index 2d8e3e8..a657981 100644 --- a/cdk/bin/cdk.ts +++ b/cdk/bin/cdk.ts @@ -14,9 +14,9 @@ const env = { region: process.env.CDK_DEFAULT_REGION }; -const vpcStack = new VpcStack(app, 'aila-VpcStack', { env }); -const dbStack = new DatabaseStack(app, 'aila-DatabaseStack', vpcStack, { env }); -const apiStack = new ApiGatewayStack(app, 'aila-ApiGatewayStack', dbStack, vpcStack, { env }); -const dbFlowStack = new DBFlowStack(app, 'aila-DBFlowStack', vpcStack, dbStack, apiStack, { env }); -const amplifyStack = new AmplifyStack(app, 'aila-AmplifyStack',apiStack, { env }); +const vpcStack = new VpcStack(app, 'VpcStack', { env }); +const dbStack = new DatabaseStack(app, 'DatabaseStack2', vpcStack, { env }); +const apiStack = new ApiGatewayStack(app, 'ApiGatewayStack', dbStack, vpcStack, { env }); +const dbFlowStack = new DBFlowStack(app, 'DBFlowStack', vpcStack, dbStack, apiStack, { env }); +const amplifyStack = new AmplifyStack(app, 'AmplifyStack',apiStack, { env }); Tags.of(app).add("app", "AI-Learning-Assistant"); \ No newline at end of file diff --git a/cdk/lambda/lib/instructorFunction.js b/cdk/lambda/lib/instructorFunction.js index 2f6ab86..39264d5 100644 --- a/cdk/lambda/lib/instructorFunction.js +++ b/cdk/lambda/lib/instructorFunction.js @@ -1183,75 +1183,75 @@ exports.handler = async (event) => { }); } break; - case "GET /instructor/course_messages": - if ( - event.queryStringParameters != null && - event.queryStringParameters.instructor_email && - event.queryStringParameters.course_id - ) { - const { instructor_email, course_id } = event.queryStringParameters; - - try { - // Get the instructor user_id - const instructorResult = await sqlConnection` - SELECT user_id FROM "Users" WHERE user_email = ${instructor_email} LIMIT 1; - `; - const instructorId = instructorResult[0]?.user_id; - if (!instructorId) { - response.statusCode = 404; - response.body = JSON.stringify({ error: "Instructor not found" }); - break; - } - // Query to fetch messages, session, and other related data - const data = await sqlConnection` - SELECT - u.user_id, - cm.module_name, - cc.concept_name, -- Added concept name - s.session_id, - m.message_content AS message, - m.student_sent AS "sent by student", -- Renamed to "sent by student" - CASE - WHEN sm.module_score = 100 THEN 'complete' - ELSE 'incomplete' - END AS competency_status, - m.time_sent AS timestamp - FROM - "Messages" m - JOIN - "Sessions" s ON m.session_id = s.session_id - JOIN - "Student_Modules" sm ON s.student_module_id = sm.student_module_id - JOIN - "Course_Modules" cm ON sm.course_module_id = cm.module_id - JOIN - "Course_Concepts" cc ON cm.concept_id = cc.concept_id - JOIN - "Enrolments" e ON sm.enrolment_id = e.enrolment_id - JOIN - "Users" u ON e.user_id = u.user_id - WHERE - cc.course_id = ${course_id} - ORDER BY - u.user_id, cm.module_name, s.session_id, m.time_sent; - - `; - - response.statusCode = 200; - response.body = JSON.stringify(data); - } catch (err) { - response.statusCode = 500; - console.error(err); - response.body = JSON.stringify({ error: "Internal server error" }); - } - } else { - response.statusCode = 400; - response.body = JSON.stringify({ - error: - "instructor_email, student_email, and course_id are required", - }); - } - break; + // case "GET /instructor/course_messages": + // if ( + // event.queryStringParameters != null && + // event.queryStringParameters.instructor_email && + // event.queryStringParameters.course_id + // ) { + // const { instructor_email, course_id } = event.queryStringParameters; + + // try { + // // Get the instructor user_id + // const instructorResult = await sqlConnection` + // SELECT user_id FROM "Users" WHERE user_email = ${instructor_email} LIMIT 1; + // `; + // const instructorId = instructorResult[0]?.user_id; + // if (!instructorId) { + // response.statusCode = 404; + // response.body = JSON.stringify({ error: "Instructor not found" }); + // break; + // } + // // Query to fetch messages, session, and other related data + // const data = await sqlConnection` + // SELECT + // u.user_id, + // cm.module_name, + // cc.concept_name, -- Added concept name + // s.session_id, + // m.message_content AS message, + // m.student_sent AS "sent by student", -- Renamed to "sent by student" + // CASE + // WHEN sm.module_score = 100 THEN 'complete' + // ELSE 'incomplete' + // END AS competency_status, + // m.time_sent AS timestamp + // FROM + // "Messages" m + // JOIN + // "Sessions" s ON m.session_id = s.session_id + // JOIN + // "Student_Modules" sm ON s.student_module_id = sm.student_module_id + // JOIN + // "Course_Modules" cm ON sm.course_module_id = cm.module_id + // JOIN + // "Course_Concepts" cc ON cm.concept_id = cc.concept_id + // JOIN + // "Enrolments" e ON sm.enrolment_id = e.enrolment_id + // JOIN + // "Users" u ON e.user_id = u.user_id + // WHERE + // cc.course_id = ${course_id} + // ORDER BY + // u.user_id, cm.module_name, s.session_id, m.time_sent; + + // `; + + // response.statusCode = 200; + // response.body = JSON.stringify(data); + // } catch (err) { + // response.statusCode = 500; + // console.error(err); + // response.body = JSON.stringify({ error: "Internal server error" }); + // } + // } else { + // response.statusCode = 400; + // response.body = JSON.stringify({ + // error: + // "instructor_email, student_email, and course_id are required", + // }); + // } + // break; default: throw new Error(`Unsupported route: "${pathData}"`); } diff --git a/cdk/lambda/sqsFunction/sqsFunction.js b/cdk/lambda/sqsFunction/sqsFunction.js new file mode 100644 index 0000000..a950cc2 --- /dev/null +++ b/cdk/lambda/sqsFunction/sqsFunction.js @@ -0,0 +1,37 @@ +const { SQSClient, SendMessageCommand } = require("@aws-sdk/client-sqs"); + +const sqsClient = new SQSClient({ region: process.env.AWS_REGION }); + +exports.handler = async (event) => { + try { + const { instructor_email, course_id } = JSON.parse(event.body); + + if (!instructor_email || !course_id) { + return { + statusCode: 400, + body: JSON.stringify({ error: "Missing instructor_email or course_id" }), + }; + } + + const params = { + QueueUrl: process.env.SQS_QUEUE_URL, + MessageBody: JSON.stringify({ instructor_email, course_id }), + MessageGroupId: course_id, // FIFO requires group ID + MessageDeduplicationId: `${instructor_email}-${course_id}`, // Deduplication ID + }; + + const command = new SendMessageCommand(params); + await sqsClient.send(command); + + return { + statusCode: 200, + body: JSON.stringify({ message: "Job submitted successfully" }), + }; + } catch (error) { + console.error("Error submitting job to SQS:", error); + return { + statusCode: 500, + body: JSON.stringify({ error: "Internal Server Error" }), + }; + } +}; \ No newline at end of file diff --git a/cdk/lambda/sqsTrigger/sqsTrigger.js b/cdk/lambda/sqsTrigger/sqsTrigger.js new file mode 100644 index 0000000..1b76abc --- /dev/null +++ b/cdk/lambda/sqsTrigger/sqsTrigger.js @@ -0,0 +1,11 @@ +exports.handler = async (event) => { + for (const record of event.Records) { + const body = JSON.parse(record.body); + console.log("Processing message:", body); + } + + return { + statusCode: 200, + body: JSON.stringify({ message: "Hello World!" }), + }; +}; \ No newline at end of file diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index b05224d..03f460d 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -24,6 +24,7 @@ import * as s3 from "aws-cdk-lib/aws-s3"; import * as bedrock from "aws-cdk-lib/aws-bedrock"; import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager"; import * as ssm from "aws-cdk-lib/aws-ssm"; +import * as sqs from "aws-cdk-lib/aws-sqs"; export class ApiGatewayStack extends cdk.Stack { private readonly api: apigateway.SpecRestApi; @@ -117,6 +118,22 @@ export class ApiGatewayStack extends cdk.Stack { this.layerList["postgres"] = postgres; this.layerList["jwt"] = jwt; + // Create FIFO SQS Queue for jobs that get classroom chatlogs for a course + const messagesQueue = new sqs.Queue(this, `${id}-MessagesQueue`, { + queueName: `${id}-messages-queue.fifo`, + fifo: true, + removalPolicy: cdk.RemovalPolicy.DESTROY, + visibilityTimeout: Duration.seconds(300), + }); + + messagesQueue.addToResourcePolicy( + new iam.PolicyStatement({ + actions: ["sqs:SendMessage"], + principals: [new iam.ServicePrincipal("lambda.amazonaws.com")], + resources: [messagesQueue.queueArn], + }) + ); + // Create Cognito user pool /** @@ -1305,5 +1322,65 @@ export class ApiGatewayStack extends cdk.Stack { ], }) ); + + /** + * + * Create a Lambda function that populates SQS with parameters to start new job + */ + const sqsFunction = new lambda.Function(this, `${id}-sqsFunction`, { + runtime: lambda.Runtime.NODEJS_20_X, + code: lambda.Code.fromAsset("lambda/sqsFunction"), + handler: "sqsFunction.handler", + timeout: Duration.seconds(300), + environment: { + SQS_QUEUE_URL: messagesQueue.queueUrl, + }, + functionName: `${id}-sqsFunction`, + memorySize: 128, + }); + + messagesQueue.grantSendMessages(sqsFunction); + + sqsFunction.addToRolePolicy( + new iam.PolicyStatement({ + actions: ["sqs:SendMessage"], + resources: [messagesQueue.queueArn], + effect: iam.Effect.ALLOW, + }) + ); + + // Override the Logical ID of the Lambda Function to get ARN in OpenAPI + const cfnSqsFunction = sqsFunction.node + .defaultChild as lambda.CfnFunction; + cfnSqsFunction.overrideLogicalId("sqsFunction"); + + // Add the permission to the Lambda function's policy to allow API Gateway access + sqsFunction.addPermission("AllowApiGatewayInvoke", { + principal: new iam.ServicePrincipal("apigateway.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:execute-api:${this.region}:${this.account}:${this.api.restApiId}/*/*/instructor*`, + }); + + /** + * + * Create a Lambda function that gets triggered when SQS has new parameters + */ + const sqsTrigger = new lambda.Function(this, `${id}-SQSTrigger`, { + runtime: lambda.Runtime.NODEJS_20_X, + code: lambda.Code.fromAsset("lambda/sqsTrigger"), + handler: "sqsTrigger.handler", + timeout: Duration.seconds(300), + environment: { + BUCKET: dataIngestionBucket.bucketName, + }, + functionName: `${id}-SQSTrigger`, + memorySize: 128, + }); + + sqsTrigger.addEventSource( + new lambdaEventSources.SqsEventSource(messagesQueue, { + batchSize: 1, // Process messages one at a time + }) + ); } } diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index 9709ece..7f5931c 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -142,29 +142,30 @@ export const ViewStudents = ({ courseName, course_id }) => { const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); + const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT - }instructor/course_messages?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, { - method: "GET", + method: "POST", headers: { Authorization: token, "Content-Type": "application/json", }, + body: JSON.stringify({ + course_id: course_id, // Include course_id in the body + instructor_email: email, // Include instructor_email in the body + }), } ); + if (response.ok) { const data = await response.json(); - setAllMessageData(data); - downloadCSV(data); + console.log("Job submitted successfully:", data); } else { - console.error("Failed to fetch messages:", response.statusText); + console.error("Failed to submit job:", response.statusText); } } catch (error) { - console.error("Error fetching data:", error); + console.error("Error submitting job:", error); } }; From e2cfaf055a2908742cac53401bf0d5b89856a7a8 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 10 Dec 2024 16:33:58 -0800 Subject: [PATCH 002/111] Add presigned URL Lambda and update SQS trigger logic --- cdk/lambda/getPresignedURL/getPresignedURL.py | 28 +++++++ cdk/lambda/sqsTrigger/sqsTrigger.js | 74 ++++++++++++++++++- cdk/lib/api-gateway-stack.ts | 18 +++++ 3 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 cdk/lambda/getPresignedURL/getPresignedURL.py diff --git a/cdk/lambda/getPresignedURL/getPresignedURL.py b/cdk/lambda/getPresignedURL/getPresignedURL.py new file mode 100644 index 0000000..7c723f4 --- /dev/null +++ b/cdk/lambda/getPresignedURL/getPresignedURL.py @@ -0,0 +1,28 @@ +import boto3 +import os + +s3 = boto3.client("s3") +BUCKET_NAME = os.environ["BUCKET_NAME"] + +def lambda_handler(event, context): + try: + # Extract file key from query parameters + file_key = event["queryStringParameters"]["fileKey"] + + # Generate presigned URL valid for 1 hour + presigned_url = s3.generate_presigned_url( + "get_object", + Params={"Bucket": BUCKET_NAME, "Key": file_key}, + ExpiresIn=3600, + ) + + return { + "statusCode": 200, + "body": presigned_url, + } + except Exception as e: + print("Error generating presigned URL:", e) + return { + "statusCode": 500, + "body": str(e), + } diff --git a/cdk/lambda/sqsTrigger/sqsTrigger.js b/cdk/lambda/sqsTrigger/sqsTrigger.js index 1b76abc..7c92eff 100644 --- a/cdk/lambda/sqsTrigger/sqsTrigger.js +++ b/cdk/lambda/sqsTrigger/sqsTrigger.js @@ -1,11 +1,77 @@ +const AWS = require("aws-sdk"); +const { parse } = require("json2csv"); +const { v4: uuidv4 } = require("uuid"); + +// Initialize AWS clients +const S3 = new AWS.S3(); +const AppSync = new AWS.AppSync(); // For notifying AppSync WebSocket +const BUCKET_NAME = process.env.BUCKET_NAME; +const APPSYNC_API_URL = process.env.APPSYNC_API_URL; + exports.handler = async (event) => { for (const record of event.Records) { - const body = JSON.parse(record.body); - console.log("Processing message:", body); + try { + // Parse SQS message + const { instructor_email, course_id } = JSON.parse(record.body); + console.log("Processing course_id:", course_id); + + // Simulate fetching chat logs from a database + const chatLogs = await fetchChatLogs(course_id); + + // Convert chat logs to CSV + const csv = parse(chatLogs); + + // Generate a unique file name and upload CSV to S3 + const fileKey = `chatlogs/${course_id}/${uuidv4()}.csv`; + await S3.putObject({ + Bucket: BUCKET_NAME, + Key: fileKey, + Body: csv, + ContentType: "text/csv", + }).promise(); + + console.log("CSV uploaded to S3:", fileKey); + + // Notify AppSync WebSocket + await notifyAppSync(course_id, fileKey); + console.log("Notification sent to AppSync WebSocket"); + + } catch (error) { + console.error("Error processing record:", error); + } } return { statusCode: 200, - body: JSON.stringify({ message: "Hello World!" }), + body: JSON.stringify({ message: "Messages processed successfully." }), }; -}; \ No newline at end of file +}; + +async function fetchChatLogs(course_id) { + // Simulate fetching logs from a database + console.log(`Fetching logs for course_id: ${course_id}`); + return [ + { user: "Student1", message: "Hello!", timestamp: "2024-06-10T10:00:00Z" }, + { user: "Student2", message: "Hi there!", timestamp: "2024-06-10T10:01:00Z" }, + ]; +} + +async function notifyAppSync(course_id, fileKey) { + const mutation = ` + mutation NotifyCSVGenerated($course_id: String!, $fileKey: String!) { + notifyCSVGenerated(course_id: $course_id, fileKey: $fileKey) + } + `; + + const fetch = require("node-fetch"); + const response = await fetch(APPSYNC_API_URL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + query: mutation, + variables: { course_id, fileKey }, + }), + }); + + return response.json(); +} diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 03f460d..b36ff39 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1382,5 +1382,23 @@ export class ApiGatewayStack extends cdk.Stack { batchSize: 1, // Process messages one at a time }) ); + + // Presigned URL Lambda + const presignedUrlLambda = new lambda.Function(this, "PresignedUrlLambda", { + runtime: lambda.Runtime.PYTHON_3_9, + handler: "index.lambda_handler", + code: lambda.Code.fromAsset("lambda/getPresignedURL"), + environment: { + BUCKET_NAME: dataIngestionBucket.bucketName, + }, + }); + + // Grant read access to the S3 bucket + dataIngestionBucket.grantRead(presignedUrlLambda); + + // API Gateway Integration + const presignedUrlResource = this.api.root.addResource("presigned-url"); + presignedUrlResource.addMethod("GET", new apigateway.LambdaIntegration(presignedUrlLambda)); + } } From e46d5d8a3e3e85d2eb21fa84299eb8e9703dba23 Mon Sep 17 00:00:00 2001 From: Sinclair Date: Thu, 12 Dec 2024 17:23:54 -0800 Subject: [PATCH 003/111] app sync progress --- cdk/OpenAPI_Swagger_Definition.yaml | 66 ++++++++++++++++++- cdk/graphql/schema.graphql | 19 ++++++ .../eventNotification/eventNotification.py | 50 ++++++++++++++ cdk/lambda/getPresignedURL/getPresignedURL.py | 29 ++++---- cdk/lambda/sqsTrigger/sqsTrigger.js | 36 ++-------- cdk/lib/api-gateway-stack.ts | 65 +++++++++++++++--- cdk/package-lock.json | 14 ++++ cdk/package.json | 1 + 8 files changed, 224 insertions(+), 56 deletions(-) create mode 100644 cdk/graphql/schema.graphql create mode 100644 cdk/lambda/eventNotification/eventNotification.py diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 2cf7713..55465e5 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -1253,7 +1253,71 @@ paths: passthroughBehavior: "when_no_match" httpMethod: "POST" type: "aws_proxy" - + + /instructor/events_notify: + options: + summary: CORS support + description: | + Enable CORS by returning correct headers + responses: + 200: + $ref: "#/components/responses/Success" + x-amazon-apigateway-integration: + type: mock + requestTemplates: + application/json: | + { + "statusCode" : 200 + } + responses: + default: + statusCode: "200" + responseParameters: + method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'" + method.response.header.Access-Control-Allow-Methods: "'*'" + method.response.header.Access-Control-Allow-Origin: "'*'" + responseTemplates: + application/json: | + {} + post: + tags: + - Events + summary: Notify clients of an event + operationId: events_notify_POST + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + message: + type: string + description: The message to send + sessionId: + type: string + description: The session ID + responses: + "200": + description: Notification sent + "400": + description: Invalid value + "401": + description: Unauthorized + "429": + description: Too Many Requests + "500": + description: Internal Server Error + security: + - instructorAuthorizer: [] + x-amazon-apigateway-integration: + uri: + Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${NotificationFunction.Arn}/invocations" + passthroughBehavior: "when_no_match" + httpMethod: "POST" + type: "aws_proxy" + + /instructor/course_messages: options: summary: CORS support diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql new file mode 100644 index 0000000..6065a2e --- /dev/null +++ b/cdk/graphql/schema.graphql @@ -0,0 +1,19 @@ +type Subscription { + onNotify: Notification + @aws_subscribe(mutations: ["sendNotification"]) +} +type Notification { + message: String + sessionId: String +} +type Mutation { + sendNotification(message: String!, sessionId: String!): Notification +} +type Query { + getNotifications: [Notification] +} +schema { + query: Query + mutation: Mutation + subscription: Subscription +} diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py new file mode 100644 index 0000000..f062b0a --- /dev/null +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -0,0 +1,50 @@ +import json +import os +import requests + +def lambda_handler(event, context): + try: + session_id = event['sessionId'] + message = event.get('message', "Embeddings created successfully") + + url = f"https://{os.environ['APPSYNC_API_ID']}.appsync-api.{os.environ['REGION']}.amazonaws.com/graphql" + headers = { + "Content-Type": "application/json", + "x-api-key": os.environ["APPSYNC_API_KEY"], + } + payload = { + "query": """ + mutation sendNotification($message: String!, $sessionId: String!) { + sendNotification(message: $message, sessionId: $sessionId) { + message + sessionId + } + } + """, + "variables": { + "message": message, + "sessionId": session_id, + }, + } + + response = requests.post(url, headers=headers, json=payload) + response_json = response.json() + + if response.status_code != 200 or "errors" in response_json: + return { + 'statusCode': response.status_code, + 'body': json.dumps({"error": response_json.get("errors", "Unknown error")}) + } + + return { + 'statusCode': 200, + 'body': json.dumps({ + "message": "Notification sent successfully", + "response": response_json + }) + } + except Exception as e: + return { + 'statusCode': 500, + 'body': json.dumps({"error": str(e)}) + } diff --git a/cdk/lambda/getPresignedURL/getPresignedURL.py b/cdk/lambda/getPresignedURL/getPresignedURL.py index 7c723f4..180a746 100644 --- a/cdk/lambda/getPresignedURL/getPresignedURL.py +++ b/cdk/lambda/getPresignedURL/getPresignedURL.py @@ -1,28 +1,27 @@ -import boto3 import os +import boto3 +import json -s3 = boto3.client("s3") -BUCKET_NAME = os.environ["BUCKET_NAME"] +s3 = boto3.client('s3') +BUCKET_NAME = os.environ['BUCKET_NAME'] def lambda_handler(event, context): try: - # Extract file key from query parameters - file_key = event["queryStringParameters"]["fileKey"] + body = json.loads(event['body']) + file_key = body['fileKey'] - # Generate presigned URL valid for 1 hour - presigned_url = s3.generate_presigned_url( - "get_object", - Params={"Bucket": BUCKET_NAME, "Key": file_key}, - ExpiresIn=3600, + url = s3.generate_presigned_url( + 'get_object', + Params={'Bucket': BUCKET_NAME, 'Key': file_key}, + ExpiresIn=300 ) return { - "statusCode": 200, - "body": presigned_url, + 'statusCode': 200, + 'body': json.dumps({'url': url}) } except Exception as e: - print("Error generating presigned URL:", e) return { - "statusCode": 500, - "body": str(e), + 'statusCode': 500, + 'body': json.dumps({'error': str(e)}) } diff --git a/cdk/lambda/sqsTrigger/sqsTrigger.js b/cdk/lambda/sqsTrigger/sqsTrigger.js index 7c92eff..a21c5eb 100644 --- a/cdk/lambda/sqsTrigger/sqsTrigger.js +++ b/cdk/lambda/sqsTrigger/sqsTrigger.js @@ -1,27 +1,20 @@ const AWS = require("aws-sdk"); const { parse } = require("json2csv"); const { v4: uuidv4 } = require("uuid"); +const fetch = require("node-fetch"); -// Initialize AWS clients const S3 = new AWS.S3(); -const AppSync = new AWS.AppSync(); // For notifying AppSync WebSocket const BUCKET_NAME = process.env.BUCKET_NAME; const APPSYNC_API_URL = process.env.APPSYNC_API_URL; exports.handler = async (event) => { for (const record of event.Records) { try { - // Parse SQS message const { instructor_email, course_id } = JSON.parse(record.body); - console.log("Processing course_id:", course_id); - - // Simulate fetching chat logs from a database const chatLogs = await fetchChatLogs(course_id); - - // Convert chat logs to CSV const csv = parse(chatLogs); - // Generate a unique file name and upload CSV to S3 + // Upload CSV to S3 const fileKey = `chatlogs/${course_id}/${uuidv4()}.csv`; await S3.putObject({ Bucket: BUCKET_NAME, @@ -30,30 +23,16 @@ exports.handler = async (event) => { ContentType: "text/csv", }).promise(); - console.log("CSV uploaded to S3:", fileKey); - - // Notify AppSync WebSocket + // Notify AppSync await notifyAppSync(course_id, fileKey); - console.log("Notification sent to AppSync WebSocket"); - } catch (error) { - console.error("Error processing record:", error); + console.error("Error:", error); } } - - return { - statusCode: 200, - body: JSON.stringify({ message: "Messages processed successfully." }), - }; }; async function fetchChatLogs(course_id) { - // Simulate fetching logs from a database - console.log(`Fetching logs for course_id: ${course_id}`); - return [ - { user: "Student1", message: "Hello!", timestamp: "2024-06-10T10:00:00Z" }, - { user: "Student2", message: "Hi there!", timestamp: "2024-06-10T10:01:00Z" }, - ]; + return [{ user: "Student1", message: "Hello", timestamp: "2024-06-10T10:00:00Z" }]; } async function notifyAppSync(course_id, fileKey) { @@ -63,8 +42,7 @@ async function notifyAppSync(course_id, fileKey) { } `; - const fetch = require("node-fetch"); - const response = await fetch(APPSYNC_API_URL, { + await fetch(APPSYNC_API_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ @@ -72,6 +50,4 @@ async function notifyAppSync(course_id, fileKey) { variables: { course_id, fileKey }, }), }); - - return response.json(); } diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index b36ff39..c8b64f5 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -25,6 +25,8 @@ import * as bedrock from "aws-cdk-lib/aws-bedrock"; import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager"; import * as ssm from "aws-cdk-lib/aws-ssm"; import * as sqs from "aws-cdk-lib/aws-sqs"; +import * as appsync from "aws-cdk-lib/aws-appsync"; + export class ApiGatewayStack extends cdk.Stack { private readonly api: apigateway.SpecRestApi; @@ -1383,22 +1385,65 @@ export class ApiGatewayStack extends cdk.Stack { }) ); - // Presigned URL Lambda - const presignedUrlLambda = new lambda.Function(this, "PresignedUrlLambda", { + ////////////////////////////// + ////////////////////////////// + + // Create AppSync API + const eventApi = new appsync.GraphqlApi(this, `${id}-EventApi`, { + name: 'EventApi', + schema: appsync.SchemaFile.fromAsset('graphql/schema.graphql'), + authorizationConfig: { + defaultAuthorization: { + authorizationType: appsync.AuthorizationType.API_KEY, + }, + }, + xrayEnabled: true, + }); + + // Output API information + // new cdk.CfnOutput(this, 'GraphQLAPIURL', { value: eventApi.graphqlUrl }); + // new cdk.CfnOutput(this, 'GraphQLAPIKey', { value: eventApi.apiKey! }); + // new cdk.CfnOutput(this, 'GraphQLAPIID', { value: eventApi.apiId }); + + // Lambda function to handle AppSync notifications + const notificationFunction = new lambda.Function(this, `${id}-NotificationFunction`, { runtime: lambda.Runtime.PYTHON_3_9, - handler: "index.lambda_handler", - code: lambda.Code.fromAsset("lambda/getPresignedURL"), + code: lambda.Code.fromAsset('lambda/eventNotification'), + handler: 'eventNotification.lambda_handler', environment: { - BUCKET_NAME: dataIngestionBucket.bucketName, + APPSYNC_API_URL: eventApi.graphqlUrl, + APPSYNC_API_ID: eventApi.apiId, + APPSYNC_API_KEY: eventApi.apiKey!, + REGION: this.region, }, + timeout: cdk.Duration.seconds(300), + memorySize: 128, + vpc: vpcStack.vpc, + role: lambdaRole, // Ensure your role has required permissions }); - // Grant read access to the S3 bucket - dataIngestionBucket.grantRead(presignedUrlLambda); + // IAM permissions for the Lambda function + notificationFunction.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['appsync:GraphQL'], + resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`], + }) + ); - // API Gateway Integration - const presignedUrlResource = this.api.root.addResource("presigned-url"); - presignedUrlResource.addMethod("GET", new apigateway.LambdaIntegration(presignedUrlLambda)); + // Allow AppSync to invoke Lambda + notificationFunction.addPermission('AppSyncInvokePermission', { + principal: new iam.ServicePrincipal('appsync.amazonaws.com'), + action: 'lambda:InvokeFunction', + sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`, + }); + // Override the Logical ID of the Lambda Function to get ARN in OpenAPI + const cfneventNotificationLambdaDockerFunction = notificationFunction + .node.defaultChild as lambda.CfnFunction; + cfneventNotificationLambdaDockerFunction.overrideLogicalId( + "NotificationFunction" + ); + } } diff --git a/cdk/package-lock.json b/cdk/package-lock.json index 2c67bbf..80e91d5 100644 --- a/cdk/package-lock.json +++ b/cdk/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@aws-cdk/aws-amplify-alpha": "^2.146.0-alpha.0", + "@aws-cdk/aws-appsync-alpha": "^2.59.0-alpha.0", "@aws-cdk/custom-resources": "^1.204.0", "aws-cdk-lib": "^2.146.0", "constructs": "^10.0.0", @@ -126,6 +127,19 @@ "node": ">= 16.14.0" } }, + "node_modules/@aws-cdk/aws-appsync-alpha": { + "version": "2.59.0-alpha.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-appsync-alpha/-/aws-appsync-alpha-2.59.0-alpha.0.tgz", + "integrity": "sha512-6Q1SpTw7F3TTrip7h7DHOqeCCPBeg0YveZZoWElHgYyi1LyVdMOvK8f2gxmrG9Z0mUpSeo2/FKkxUUC/+SJCLw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "aws-cdk-lib": "^2.59.0", + "constructs": "^10.0.0" + } + }, "node_modules/@aws-cdk/aws-autoscaling-common": { "version": "1.204.0", "resolved": "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.204.0.tgz", diff --git a/cdk/package.json b/cdk/package.json index 4fd2915..83afb1f 100644 --- a/cdk/package.json +++ b/cdk/package.json @@ -21,6 +21,7 @@ }, "dependencies": { "@aws-cdk/aws-amplify-alpha": "^2.146.0-alpha.0", + "@aws-cdk/aws-appsync-alpha": "^2.59.0-alpha.0", "@aws-cdk/custom-resources": "^1.204.0", "aws-cdk-lib": "^2.146.0", "constructs": "^10.0.0", From a71246917406d2423a569f9b27cde9f0faa27a61 Mon Sep 17 00:00:00 2001 From: Sinclair Date: Fri, 13 Dec 2024 14:55:07 -0800 Subject: [PATCH 004/111] merges --- cdk/lib/dbFlow-stack.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk/lib/dbFlow-stack.ts b/cdk/lib/dbFlow-stack.ts index 9859ff0..f4d9bb6 100644 --- a/cdk/lib/dbFlow-stack.ts +++ b/cdk/lib/dbFlow-stack.ts @@ -34,7 +34,7 @@ export class DBFlowStack extends Stack { "secretsmanager:PutSecretValue" ], resources: [ - `arn:aws:secretsmanager:${this.region}:${this.account}:secret:AILA/*`, + `arn:aws:secretsmanager:${this.region}:${this.account}:secret:*`, ], }) ); From 56e62dfbacb5028c775295974e8a8b0faafbb849 Mon Sep 17 00:00:00 2001 From: Sinclair Date: Fri, 13 Dec 2024 17:00:24 -0800 Subject: [PATCH 005/111] appsync notifications working --- .../eventNotification/eventNotification.py | 97 ++++++++++------ cdk/lib/api-gateway-stack.ts | 109 +++++++++--------- 2 files changed, 114 insertions(+), 92 deletions(-) diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index f062b0a..8539e09 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -1,50 +1,71 @@ import json import os -import requests def lambda_handler(event, context): - try: - session_id = event['sessionId'] - message = event.get('message', "Embeddings created successfully") + # try: + # session_id = event['sessionId'] + # message = event.get('message', "Embeddings created successfully") - url = f"https://{os.environ['APPSYNC_API_ID']}.appsync-api.{os.environ['REGION']}.amazonaws.com/graphql" - headers = { - "Content-Type": "application/json", - "x-api-key": os.environ["APPSYNC_API_KEY"], - } - payload = { - "query": """ - mutation sendNotification($message: String!, $sessionId: String!) { - sendNotification(message: $message, sessionId: $sessionId) { - message - sessionId - } - } - """, - "variables": { - "message": message, - "sessionId": session_id, - }, - } + # url = f"https://{os.environ['APPSYNC_API_ID']}.appsync-api.{os.environ['REGION']}.amazonaws.com/graphql" + # headers = { + # "Content-Type": "application/json", + # "x-api-key": os.environ["APPSYNC_API_KEY"], + # } + # payload = { + # "query": """ + # mutation sendNotification($message: String!, $sessionId: String!) { + # sendNotification(message: $message, sessionId: $sessionId) { + # message + # sessionId + # } + # } + # """, + # "variables": { + # "message": message, + # "sessionId": session_id, + # }, + # } - response = requests.post(url, headers=headers, json=payload) - response_json = response.json() + # response = requests.post(url, headers=headers, json=payload) + # response_json = response.json() - if response.status_code != 200 or "errors" in response_json: - return { - 'statusCode': response.status_code, - 'body': json.dumps({"error": response_json.get("errors", "Unknown error")}) - } + # if response.status_code != 200 or "errors" in response_json: + # return { + # 'statusCode': response.status_code, + # 'body': json.dumps({"error": response_json.get("errors", "Unknown error")}) + # } + # return { + # 'statusCode': 200, + # 'body': json.dumps({ + # "message": "Notification sent successfully", + # "response": response_json + # }) + # } + # except Exception as e: + # return { + # 'statusCode': 500, + # 'body': json.dumps({"error": str(e)}) + # } + + + print(f"Event Received: {json.dumps(event)}") + try: + # Process the event to extract the sessionId and message + session_id = event.get("sessionId", "DefaultSessionId") + message = event.get("message", "Default message") + # Return the processed data return { - 'statusCode': 200, - 'body': json.dumps({ - "message": "Notification sent successfully", - "response": response_json - }) - } + "message": message, + "sessionId": session_id + } except Exception as e: return { - 'statusCode': 500, - 'body': json.dumps({"error": str(e)}) + 'error': str(e) } + + + + + + diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 714395c..4c3d039 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1428,61 +1428,62 @@ export class ApiGatewayStack extends cdk.Stack { ////////////////////////////// // Create AppSync API - const eventApi = new appsync.GraphqlApi(this, `${id}-EventApi`, { - name: 'EventApi', - schema: appsync.SchemaFile.fromAsset('graphql/schema.graphql'), - authorizationConfig: { - defaultAuthorization: { - authorizationType: appsync.AuthorizationType.API_KEY, - }, - }, - xrayEnabled: true, - }); - - // Output API information - // new cdk.CfnOutput(this, 'GraphQLAPIURL', { value: eventApi.graphqlUrl }); - // new cdk.CfnOutput(this, 'GraphQLAPIKey', { value: eventApi.apiKey! }); - // new cdk.CfnOutput(this, 'GraphQLAPIID', { value: eventApi.apiId }); - - // Lambda function to handle AppSync notifications - const notificationFunction = new lambda.Function(this, `${id}-NotificationFunction`, { - runtime: lambda.Runtime.PYTHON_3_9, - code: lambda.Code.fromAsset('lambda/eventNotification'), - handler: 'eventNotification.lambda_handler', - environment: { - APPSYNC_API_URL: eventApi.graphqlUrl, - APPSYNC_API_ID: eventApi.apiId, - APPSYNC_API_KEY: eventApi.apiKey!, - REGION: this.region, - }, - timeout: cdk.Duration.seconds(300), - memorySize: 128, - vpc: vpcStack.vpc, - role: lambdaRole, // Ensure your role has required permissions - }); - - // IAM permissions for the Lambda function - notificationFunction.addToRolePolicy( - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: ['appsync:GraphQL'], - resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`], - }) - ); + const eventApi = new appsync.GraphqlApi(this, + `${id}-EventApi`, { + name: `${id}-EventApi`, + definition: appsync.Definition.fromFile("./graphql/schema.graphql"), + authorizationConfig: { + defaultAuthorization: { + authorizationType: appsync.AuthorizationType.API_KEY, + }, + }, + xrayEnabled: true, + }); + const notificationFunction = new lambda.Function(this, `${id}-NotificationFunction`, { + runtime: lambda.Runtime.PYTHON_3_9, + code: lambda.Code.fromAsset("lambda/eventNotification"), + handler: "eventNotification.lambda_handler", + environment: { + APPSYNC_API_URL: eventApi.graphqlUrl, + APPSYNC_API_ID: eventApi.apiId, + APPSYNC_API_KEY: eventApi.apiKey!, + REGION: this.region, + }, + functionName: `${id}-NotificationFunction`, + timeout: cdk.Duration.seconds(300), + memorySize: 128, + vpc: vpcStack.vpc, + role: lambdaRole, + }); + notificationFunction.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['appsync:GraphQL'], + resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`], + }) + ); + notificationFunction.addPermission("AppSyncInvokePermission", { + principal: new iam.ServicePrincipal("appsync.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`, + }); + const notificationLambdaDataSource = eventApi.addLambdaDataSource( + "NotificationLambdaDataSource", + notificationFunction + ); + notificationLambdaDataSource.createResolver("ResolverEventApi", { + typeName: "Mutation", + fieldName: "sendNotification", + requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), + responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), + }); + // Override the Logical ID of the Lambda Function to get ARN in OpenAPI + const cfnNotificationFunction = notificationFunction + .node.defaultChild as lambda.CfnFunction; + cfnNotificationFunction.overrideLogicalId( + "NotificationFunction" + ); - // Allow AppSync to invoke Lambda - notificationFunction.addPermission('AppSyncInvokePermission', { - principal: new iam.ServicePrincipal('appsync.amazonaws.com'), - action: 'lambda:InvokeFunction', - sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`, - }); - - // Override the Logical ID of the Lambda Function to get ARN in OpenAPI - const cfneventNotificationLambdaDockerFunction = notificationFunction - .node.defaultChild as lambda.CfnFunction; - cfneventNotificationLambdaDockerFunction.overrideLogicalId( - "NotificationFunction" - ); } } From fd5ff22cc6d72001cda9b5b2d8eb4b08d99283b7 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 11 Dec 2024 17:00:20 -0800 Subject: [PATCH 006/111] fix: fixed secret path and updated deployment guide. --- cdk/lib/api-gateway-stack.ts | 2 +- docs/deploymentGuide.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 4c3d039..e95c2b7 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -687,7 +687,7 @@ export class ApiGatewayStack extends cdk.Stack { "secretsmanager:PutSecretValue", ], resources: [ - `arn:aws:secretsmanager:${this.region}:${this.account}:secret:AILA/*`, + `arn:aws:secretsmanager:${this.region}:${this.account}:secret:*`, ], }) ); diff --git a/docs/deploymentGuide.md b/docs/deploymentGuide.md index 0362fb1..40c5f0d 100644 --- a/docs/deploymentGuide.md +++ b/docs/deploymentGuide.md @@ -180,14 +180,14 @@ cdk bootstrap aws:/// --profile -Amplify:githubRepoName=Digital-Strategy-Assistant \ + --parameters -AmplifyStack:githubRepoName=AI-Learning-Assistant \ --context StackPrefix= \ --profile ``` For example: ``` -cdk deploy --all --parameters AILA-Amplify:githubRepoName=Digital-Strategy-Assistant --context StackPrefix=AILA --profile +cdk deploy --all --parameters AILA-AmplifyStack:githubRepoName=AI-Learning-Assistant --context StackPrefix=AILA --profile ``` If you have trouble running the commands, try removing all the \ and run it in one line. From 9a476668cccac89af623ec1d199b6c2ed4f18746 Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 13 Dec 2024 12:19:49 -0800 Subject: [PATCH 007/111] fix: Python Lambda functions establish global RDS connection outside of handler, secrets and parameters are cached. --- cdk/data_ingestion/src/main.py | 109 +++++----- cdk/lambda/deleteFile/deleteFile.py | 62 +++--- .../deleteLastMessage/deleteLastMessage.py | 108 +++++----- .../getFilesFunction/getFilesFunction.py | 79 +++++--- cdk/text_generation/src/main.py | 191 +++++++++--------- 5 files changed, 294 insertions(+), 255 deletions(-) diff --git a/cdk/data_ingestion/src/main.py b/cdk/data_ingestion/src/main.py index 39c6e6b..8ebb68f 100644 --- a/cdk/data_ingestion/src/main.py +++ b/cdk/data_ingestion/src/main.py @@ -12,54 +12,71 @@ logging.basicConfig(level=logging.INFO) logger = logging.getLogger() +# Environment variables DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] REGION = os.environ["REGION"] AILA_DATA_INGESTION_BUCKET = os.environ["BUCKET"] EMBEDDING_BUCKET_NAME = os.environ["EMBEDDING_BUCKET_NAME"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] +EMBEDDING_MODEL_PARAM = os.environ["EMBEDDING_MODEL_PARAM"] + +# AWS Clients +secrets_manager_client = boto3.client("secretsmanager") +ssm_client = boto3.client("ssm") +bedrock_runtime = boto3.client("bedrock-runtime", region_name=REGION) + +# Cached resources +connection = None +db_secret = None +EMBEDDING_MODEL_ID = None def get_secret(): - # secretsmanager client to get db credentials - sm_client = boto3.client("secretsmanager") - response = sm_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] - secret = json.loads(response) - return secret + global db_secret + if db_secret is None: + try: + response = secrets_manager_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] + db_secret = json.loads(response) + except Exception as e: + logger.error(f"Error fetching secret {DB_SECRET_NAME}: {e}") + raise + return db_secret -def get_parameter(param_name): +def get_parameter(): """ Fetch a parameter value from Systems Manager Parameter Store. """ - try: - ssm_client = boto3.client("ssm") - response = ssm_client.get_parameter(Name=param_name, WithDecryption=True) - return response["Parameter"]["Value"] - except Exception as e: - logger.error(f"Error fetching parameter {param_name}: {e}") - raise - -## GET PARAMETER VALUES FOR CONSTANTS -EMBEDDING_MODEL_ID = get_parameter(os.environ["EMBEDDING_MODEL_PARAM"]) + global EMBEDDING_MODEL_ID + if EMBEDDING_MODEL_ID is None: + try: + response = ssm_client.get_parameter(Name=EMBEDDING_MODEL_PARAM, WithDecryption=True) + EMBEDDING_MODEL_ID = response["Parameter"]["Value"] + except Exception as e: + logger.error(f"Error fetching parameter {EMBEDDING_MODEL_PARAM}: {e}") + raise + return EMBEDDING_MODEL_ID def connect_to_db(): - try: - db_secret = get_secret() - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] - } - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - connection = psycopg2.connect(connection_string) - logger.info("Connected to the database!") - return connection - except Exception as e: - logger.error(f"Failed to connect to database: {e}") - if connection: - connection.rollback() - connection.close() - return None + global connection + if connection is None or connection.closed: + try: + secret = get_secret() + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection def parse_s3_file_path(file_key): # Assuming the file path is of the format: {course_id}/{module_id}/{documents}/{file_name}.{file_type} @@ -140,38 +157,30 @@ def insert_file_into_db(module_id, file_name, file_type, file_path, bucket_name) connection.commit() cur.close() - connection.close() except Exception as e: if cur: cur.close() - if connection: - connection.rollback() - connection.close() + connection.rollback() logger.error(f"Error inserting file {file_name}.{file_type} into database: {e}") raise def update_vectorstore_from_s3(bucket, course_id): - - bedrock_runtime = boto3.client( - service_name="bedrock-runtime", - region_name=REGION - ) embeddings = BedrockEmbeddings( - model_id=EMBEDDING_MODEL_ID, + model_id=get_parameter(), client=bedrock_runtime, region_name=REGION ) - db_secret = get_secret() + secret = get_secret() vectorstore_config_dict = { 'collection_name': f'{course_id}', - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] + 'port': secret["port"] } try: diff --git a/cdk/lambda/deleteFile/deleteFile.py b/cdk/lambda/deleteFile/deleteFile.py index 2fd9f6d..153fe3a 100644 --- a/cdk/lambda/deleteFile/deleteFile.py +++ b/cdk/lambda/deleteFile/deleteFile.py @@ -11,33 +11,42 @@ DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] +# AWS Clients +secrets_manager_client = boto3.client('secretsmanager') + +# Global variables for caching +connection = None +db_secret = None + def get_secret(): - # secretsmanager client to get db credentials - sm_client = boto3.client("secretsmanager") - response = sm_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] - secret = json.loads(response) - return secret + global db_secret + if not db_secret: + response = secrets_manager_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] + db_secret = json.loads(response) + return db_secret def connect_to_db(): - try: - db_secret = get_secret() - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] - } - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - connection = psycopg2.connect(connection_string) - logger.info("Connected to the database!") - return connection - except Exception as e: - logger.error(f"Failed to connect to database: {e}") - if connection: - connection.rollback() - connection.close() - return None + global connection + if connection is None or connection.closed: + try: + secret = get_secret() + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection def delete_file_from_db(module_id, file_name, file_type): connection = connect_to_db() @@ -61,13 +70,10 @@ def delete_file_from_db(module_id, file_name, file_type): logger.info(f"Successfully deleted file {file_name}.{file_type} for module {module_id}.") cur.close() - connection.close() except Exception as e: if cur: cur.close() - if connection: - connection.rollback() - connection.close() + connection.rollback() logger.error(f"Error deleting file {file_name}.{file_type} from database: {e}") raise diff --git a/cdk/lambda/deleteLastMessage/deleteLastMessage.py b/cdk/lambda/deleteLastMessage/deleteLastMessage.py index f7746e3..cd58a49 100644 --- a/cdk/lambda/deleteLastMessage/deleteLastMessage.py +++ b/cdk/lambda/deleteLastMessage/deleteLastMessage.py @@ -7,65 +7,69 @@ logger = logging.getLogger() logger.setLevel(logging.INFO) +# AWS Clients dynamodb_client = boto3.client('dynamodb') +secrets_manager_client = boto3.client('secretsmanager') +ssm_client = boto3.client("ssm") + +# Global variables for caching +connection = None +db_secret = None +TABLE_NAME = None DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] def get_secret(secret_name, expect_json=True): - try: - # secretsmanager client to get db credentials - sm_client = boto3.client("secretsmanager") - response = sm_client.get_secret_value(SecretId=secret_name)["SecretString"] - - if expect_json: - return json.loads(response) - else: - print(response) - return response - - except json.JSONDecodeError as e: - logger.error(f"Failed to decode JSON for secret {secret_name}: {e}") - raise ValueError(f"Secret {secret_name} is not properly formatted as JSON.") - except Exception as e: - logger.error(f"Error fetching secret {secret_name}: {e}") - raise + global db_secret + if db_secret is None: + try: + response = secrets_manager_client.get_secret_value(SecretId=secret_name)["SecretString"] + db_secret = json.loads(response) if expect_json else response + except json.JSONDecodeError as e: + logger.error(f"Failed to decode JSON for secret {secret_name}: {e}") + raise ValueError(f"Secret {secret_name} is not properly formatted as JSON.") + except Exception as e: + logger.error(f"Error fetching secret {secret_name}: {e}") + raise + return db_secret def get_parameter(param_name): """ Fetch a parameter value from Systems Manager Parameter Store. """ - try: - ssm_client = boto3.client("ssm") - response = ssm_client.get_parameter(Name=param_name, WithDecryption=True) - return response["Parameter"]["Value"] - except Exception as e: - logger.error(f"Error fetching parameter {param_name}: {e}") - raise - -## GET PARAMETER VALUES FOR CONSTANTS -TABLE_NAME = get_parameter(os.environ["TABLE_NAME_PARAM"]) + global TABLE_NAME + if TABLE_NAME is None: + try: + response = ssm_client.get_parameter(Name=param_name, WithDecryption=True) + TABLE_NAME = response["Parameter"]["Value"] + except Exception as e: + logger.error(f"Error fetching parameter {param_name}: {e}") + raise + return TABLE_NAME def connect_to_db(): - try: - db_secret = get_secret(DB_SECRET_NAME) - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] - } - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - connection = psycopg2.connect(connection_string) - logger.info("Connected to the database!") - return connection - except Exception as e: - logger.error(f"Failed to connect to database: {e}") - if connection: - connection.rollback() - connection.close() - return None + global connection + if connection is None or connection.closed: + try: + secret = get_secret(DB_SECRET_NAME) + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection def delete_last_two_db_messages(session_id): connection = connect_to_db() @@ -87,6 +91,7 @@ def delete_last_two_db_messages(session_id): if len(messages) < 2: logger.info(f"Not enough messages to delete for session_id: {session_id}") + cur.close() return False message_ids = tuple([msg[0] for msg in messages]) @@ -98,7 +103,6 @@ def delete_last_two_db_messages(session_id): connection.commit() cur.close() - connection.close() logger.info(f"Successfully deleted the last two messages for session_id: {session_id}") return True @@ -106,14 +110,11 @@ def delete_last_two_db_messages(session_id): logger.error(f"Error deleting messages from database: {e}") if cur: cur.close() - if connection: - connection.rollback() - connection.close() + connection.rollback() return False def lambda_handler(event, context): query_params = event.get("queryStringParameters", {}) - session_id = query_params.get("session_id", "") if not session_id: @@ -131,8 +132,9 @@ def lambda_handler(event, context): try: # Fetch the conversation history from DynamoDB + table_name = get_parameter(os.environ["TABLE_NAME_PARAM"]) response = dynamodb_client.get_item( - TableName=TABLE_NAME, + TableName=table_name, Key={ 'SessionId': { 'S': session_id @@ -175,7 +177,7 @@ def lambda_handler(event, context): # Update the conversation history in DynamoDB dynamodb_client.update_item( - TableName=TABLE_NAME, + TableName=table_name, Key={ 'SessionId': { 'S': session_id diff --git a/cdk/lambda/getFilesFunction/getFilesFunction.py b/cdk/lambda/getFilesFunction/getFilesFunction.py index f139ed6..bc808c3 100644 --- a/cdk/lambda/getFilesFunction/getFilesFunction.py +++ b/cdk/lambda/getFilesFunction/getFilesFunction.py @@ -7,7 +7,15 @@ logger = Logger() +# Environment variables REGION = os.environ["REGION"] +BUCKET = os.environ["BUCKET"] +DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] +RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] + +# AWS Clients +secrets_manager_client = boto3.client('secretsmanager') + s3 = boto3.client( "s3", endpoint_url=f"https://s3.{REGION}.amazonaws.com", @@ -15,37 +23,47 @@ s3={"addressing_style": "virtual"}, region_name=REGION, signature_version="s3v4" ), ) -BUCKET = os.environ["BUCKET"] -DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] -RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] -def get_secret(): - # secretsmanager client to get db credentials - sm_client = boto3.client("secretsmanager") - response = sm_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] - secret = json.loads(response) - return secret +# Global variables for caching +connection = None +db_secret = None + +def get_secret(secret_name): + global db_secret + if db_secret is None: + try: + response = secrets_manager_client.get_secret_value(SecretId=secret_name)["SecretString"] + db_secret = json.loads(response) + except json.JSONDecodeError as e: + logger.error(f"Failed to decode JSON for secret {secret_name}: {e}") + raise ValueError(f"Secret {secret_name} is not properly formatted as JSON.") + except Exception as e: + logger.error(f"Error fetching secret {secret_name}: {e}") + raise + return db_secret def connect_to_db(): - try: - db_secret = get_secret() - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] - } - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - connection = psycopg2.connect(connection_string) - logger.info("Connected to the database!") - return connection - except Exception as e: - logger.error(f"Failed to connect to database: {e}") - if connection: - connection.rollback() - connection.close() - return None + global connection + if connection is None or connection.closed: + try: + secret = get_secret(DB_SECRET_NAME) + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection def list_files_in_s3_prefix(bucket, prefix): files = [] @@ -103,7 +121,6 @@ def get_file_metadata_from_db(module_id, file_name, file_type): cur.execute(query, (module_id, file_name, file_type)) result = cur.fetchone() cur.close() - connection.close() if result: return result[0] @@ -115,9 +132,7 @@ def get_file_metadata_from_db(module_id, file_name, file_type): logger.error(f"Error retrieving metadata for {file_name}.{file_type}: {e}") if cur: cur.close() - if connection: - connection.rollback() - connection.close() + connection.rollback() return None @logger.inject_lambda_context diff --git a/cdk/text_generation/src/main.py b/cdk/text_generation/src/main.py index 97a9cae..e858dd3 100644 --- a/cdk/text_generation/src/main.py +++ b/cdk/text_generation/src/main.py @@ -13,81 +13,105 @@ logging.basicConfig(level=logging.INFO) logger = logging.getLogger() - +# Environment variables DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] REGION = os.environ["REGION"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] +BEDROCK_LLM_PARAM = os.environ["BEDROCK_LLM_PARAM"] +EMBEDDING_MODEL_PARAM = os.environ["EMBEDDING_MODEL_PARAM"] +TABLE_NAME_PARAM = os.environ["TABLE_NAME_PARAM"] -def get_secret(secret_name, expect_json=True): - try: - # secretsmanager client to get db credentials - sm_client = boto3.client("secretsmanager") - response = sm_client.get_secret_value(SecretId=secret_name)["SecretString"] - - if expect_json: - return json.loads(response) - else: - print(response) - return response +# AWS Clients +secrets_manager_client = boto3.client("secretsmanager") +ssm_client = boto3.client("ssm", region_name=REGION) +bedrock_runtime = boto3.client("bedrock-runtime", region_name=REGION) - except json.JSONDecodeError as e: - logger.error(f"Failed to decode JSON for secret {secret_name}: {e}") - raise ValueError(f"Secret {secret_name} is not properly formatted as JSON.") - except Exception as e: - logger.error(f"Error fetching secret {secret_name}: {e}") - raise +# Cached resources +connection = None +db_secret = None +BEDROCK_LLM_ID = None +EMBEDDING_MODEL_ID = None +TABLE_NAME = None -def get_parameter(param_name): +# Cached embeddings instance +embeddings = None + +def get_secret(secret_name, expect_json=True): + global db_secret + if db_secret is None: + try: + response = secrets_manager_client.get_secret_value(SecretId=secret_name)["SecretString"] + db_secret = json.loads(response) if expect_json else response + except json.JSONDecodeError as e: + logger.error(f"Failed to decode JSON for secret {secret_name}: {e}") + raise ValueError(f"Secret {secret_name} is not properly formatted as JSON.") + except Exception as e: + logger.error(f"Error fetching secret {secret_name}: {e}") + raise + return db_secret + +def get_parameter(param_name, cached_var): """ Fetch a parameter value from Systems Manager Parameter Store. """ - try: - ssm_client = boto3.client("ssm", region_name=REGION) - response = ssm_client.get_parameter(Name=param_name, WithDecryption=True) - return response["Parameter"]["Value"] - except Exception as e: - logger.error(f"Error fetching parameter {param_name}: {e}") - raise - -## GET PARAMETER VALUES FOR CONSTANTS -BEDROCK_LLM_ID = get_parameter(os.environ["BEDROCK_LLM_PARAM"]) -EMBEDDING_MODEL_ID = get_parameter(os.environ["EMBEDDING_MODEL_PARAM"]) -TABLE_NAME = get_parameter(os.environ["TABLE_NAME_PARAM"]) - -## GETTING AMAZON TITAN EMBEDDINGS MODEL -bedrock_runtime = boto3.client( - service_name="bedrock-runtime", - region_name=REGION, - ) - -embeddings = BedrockEmbeddings( - model_id=EMBEDDING_MODEL_ID, - client=bedrock_runtime, - region_name=REGION -) - -create_dynamodb_history_table(TABLE_NAME) + if cached_var is None: + try: + response = ssm_client.get_parameter(Name=param_name, WithDecryption=True) + cached_var = response["Parameter"]["Value"] + except Exception as e: + logger.error(f"Error fetching parameter {param_name}: {e}") + raise + return cached_var + +def initialize_constants(): + global BEDROCK_LLM_ID, EMBEDDING_MODEL_ID, TABLE_NAME, embeddings + BEDROCK_LLM_ID = get_parameter(BEDROCK_LLM_PARAM, BEDROCK_LLM_ID) + EMBEDDING_MODEL_ID = get_parameter(EMBEDDING_MODEL_PARAM, EMBEDDING_MODEL_ID) + TABLE_NAME = get_parameter(TABLE_NAME_PARAM, TABLE_NAME) + + if embeddings is None: + embeddings = BedrockEmbeddings( + model_id=EMBEDDING_MODEL_ID, + client=bedrock_runtime, + region_name=REGION, + ) + + create_dynamodb_history_table(TABLE_NAME) + +def connect_to_db(): + global connection + if connection is None or connection.closed: + try: + secret = get_secret(DB_SECRET_NAME) + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection def get_module_name(module_id): - connection = None - cur = None - try: - logger.info(f"Fetching module name for module_id: {module_id}") - db_secret = get_secret(DB_SECRET_NAME) - - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] + connection = connect_to_db() + if connection is None: + logger.error("No database connection available.") + return { + "statusCode": 500, + "body": json.dumps("Database connection failed.") } - - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - - connection = psycopg2.connect(connection_string) + + try: cur = connection.cursor() - logger.info("Connected to RDS instance!") cur.execute(""" SELECT module_name @@ -111,34 +135,21 @@ def get_module_name(module_id): except Exception as e: logger.error(f"Error fetching module name: {e}") - if connection: - connection.rollback() - return None - finally: if cur: cur.close() - if connection: - connection.close() - logger.info("Connection closed.") + connection.rollback() + return None def get_system_prompt(course_id): - connection = None - cur = None - try: - logger.info(f"Fetching system prompt for course_id: {course_id}") - db_secret = get_secret(DB_SECRET_NAME) - - connection_params = { - 'dbname': db_secret["dbname"], - 'user': db_secret["username"], - 'password': db_secret["password"], - 'host': RDS_PROXY_ENDPOINT, - 'port': db_secret["port"] + connection = connect_to_db() + if connection is None: + logger.error("No database connection available.") + return { + "statusCode": 500, + "body": json.dumps("Database connection failed.") } - - connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) - - connection = psycopg2.connect(connection_string) + + try: cur = connection.cursor() logger.info("Connected to RDS instance!") @@ -164,18 +175,14 @@ def get_system_prompt(course_id): except Exception as e: logger.error(f"Error fetching system prompt: {e}") - if connection: - connection.rollback() - return None - finally: if cur: cur.close() - if connection: - connection.close() - logger.info("Connection closed.") + connection.rollback() + return None def handler(event, context): logger.info("Text Generation Lambda function is called!") + initialize_constants() query_params = event.get("queryStringParameters", {}) From c2c38c36b1330ae6fbb4a802429d80db826b6494 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Thu, 12 Dec 2024 12:47:03 -0800 Subject: [PATCH 008/111] login password fix --- frontend/src/pages/Login.jsx | 114 +++++++++++++++-------------------- 1 file changed, 47 insertions(+), 67 deletions(-) diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index a2245e4..d10d5cb 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -129,87 +129,68 @@ export const Login = () => { // user signs up const handleSignUp = async (event) => { event.preventDefault(); - if ( - username == "" || - password == "" || - confirmPassword == "" || - firstName == "" || - lastName == "" - ) { - toast.error("All fields are required", { - position: "top-center", - autoClose: 3000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "colored", - }); + + // Check for empty fields + if (!username || !password || !confirmPassword || !firstName || !lastName) { + toast.error("All fields are required", { theme: "colored" }); return; } - // password specifications + + // Check for password match if (password !== confirmPassword) { - setPasswordError("Passwords do not match"); - toast.error("Passwords do not match", { - position: "top-center", - autoClose: 3000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "colored", - }); + toast.error("Passwords do not match", { theme: "colored" }); return; - } else if (password.length < 8) { - setPasswordError("Password must be at least 8 characters long"); - toast.error("Password must be at least 8 characters long", { - position: "top-center", - autoClose: 3000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "colored", - }); + } + + // Enhanced password validation + const passwordError = validatePassword(password); + if (passwordError) { + toast.error(passwordError, { theme: "colored" }); return; } + + // Reset error setPasswordError(""); + try { setLoading(true); - const { isSignUpComplete, userId, nextStep } = await signUp({ - username: username, - password: password, - attributes: { - email: username, - }, + const { isSignUpComplete, nextStep } = await signUp({ + username, + password, + attributes: { email: username }, }); - setNewSignUp(false); - if (!isSignUpComplete) { - if (nextStep.signUpStep === "CONFIRM_SIGN_UP") { - setSignUpConfirmation(true); - setLoading(false); - } + + if (!isSignUpComplete && nextStep.signUpStep === "CONFIRM_SIGN_UP") { + setSignUpConfirmation(true); + } else { + setNewSignUp(false); + window.location.reload(); } } catch (error) { - toast.error(`Error signing up: ${error}`, { - position: "top-center", - autoClose: 3000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "colored", - }); - console.log("Error signing up:", error); + toast.error(`Error signing up: ${error.message}`, { theme: "colored" }); setLoading(false); - setError(error.message); } }; + + const validatePassword = (pwd) => { + if (pwd.length < 8) { + return "Password must be at least 8 characters long"; + } + if (!/[a-z]/.test(pwd)) { + return "Password must contain at least one lowercase letter"; + } + if (!/[A-Z]/.test(pwd)) { + return "Password must contain at least one uppercase letter"; + } + if (!/[0-9]/.test(pwd)) { + return "Password must contain at least one number"; + } + return null; // Valid password + }; + + + // user gets new password const handleNewUserPassword = async (event) => { event.preventDefault(); @@ -281,8 +262,7 @@ export const Login = () => { const token = session.tokens.idToken const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }student/create_user?user_email=${encodeURIComponent( username )}&username=${encodeURIComponent( From 297486324d36734ef6be005281543175f24d2e9d Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Thu, 12 Dec 2024 13:26:24 -0800 Subject: [PATCH 009/111] front end fixes to login page --- frontend/src/pages/Login.jsx | 203 +++++++++++++++++++++-------------- 1 file changed, 120 insertions(+), 83 deletions(-) diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index d10d5cb..cc19637 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -515,7 +515,7 @@ export const Login = () => { )} {newSignUp && ( - + { display: "flex", flexDirection: "column", alignItems: "center", + margin: "0 auto", // Center the content horizontally + justifyContent: "center", // Center the content vertically + }} > @@ -744,123 +747,157 @@ export const Login = () => { )} {/* forgot password? */} {!loading && forgotPassword && ( - + - + {/* Title */} + Reset Password + + {/* Request Reset */} {step === "requestReset" && ( <> - - setUsername(e.target.value)} - fullWidth - margin="normal" - inputProps={{ maxLength: 40 }} - /> - + setUsername(e.target.value)} + fullWidth + margin="normal" + inputProps={{ maxLength: 40 }} + sx={{ + fontSize: "1rem", // Ensure input matches font size + }} + /> )} + + {/* Confirm Reset */} {step === "confirmReset" && ( - - + setConfirmationCode(e.target.value)} + fullWidth + margin="normal" + inputProps={{ maxLength: 15 }} + sx={{ fontSize: "1rem" }} + /> + setNewPassword(e.target.value)} + fullWidth + margin="normal" + inputProps={{ maxLength: 50 }} + sx={{ fontSize: "1rem" }} + /> + - - + Reset Password + + )} + + {/* Success Message */} {step === "done" && ( - + Password has been successfully reset. )} + + {/* Error Message */} {error && ( - + {error} )} - - - setForgotPassword(false)} - > - Remember your Password? {"Sign in"} - - - + + {/* Remember Password Link */} + setForgotPassword(false)} + sx={{ + mt: 3, + textAlign: "center", + display: "block", + fontSize: "1rem", + fontWeight: "bold", + color: "primary.main", // Match link color + }} + > + Remember your Password? Sign in + )} + + Date: Mon, 16 Dec 2024 11:25:12 -0800 Subject: [PATCH 010/111] fix: removed instances where connection is closed after query execution. --- cdk/text_generation/src/main.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cdk/text_generation/src/main.py b/cdk/text_generation/src/main.py index e858dd3..5887a55 100644 --- a/cdk/text_generation/src/main.py +++ b/cdk/text_generation/src/main.py @@ -124,7 +124,6 @@ def get_module_name(module_id): module_name = result[0] if result else None cur.close() - connection.close() if module_name: logger.info(f"Module name for module_id {module_id} found: {module_name}") @@ -164,7 +163,6 @@ def get_system_prompt(course_id): system_prompt = result[0] if result else None cur.close() - connection.close() if system_prompt: logger.info(f"System prompt for course_id {course_id} found: {system_prompt}") From 2487ac49ffc3a37f65256f5fb202452397d32ff4 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Fri, 13 Dec 2024 15:52:54 -0800 Subject: [PATCH 011/111] sign up bug fixed --- frontend/src/pages/Login.jsx | 93 ++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 36 deletions(-) diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index cc19637..6e76328 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -126,71 +126,92 @@ export const Login = () => { } }; - // user signs up const handleSignUp = async (event) => { event.preventDefault(); // Check for empty fields if (!username || !password || !confirmPassword || !firstName || !lastName) { - toast.error("All fields are required", { theme: "colored" }); + toast.error("All fields are required", { + position: "top-center", + autoClose: 3000, + theme: "colored", + }); return; } - // Check for password match + // Password validation: match, length, uppercase, lowercase, and number if (password !== confirmPassword) { + setPasswordError("Passwords do not match"); toast.error("Passwords do not match", { theme: "colored" }); return; } - // Enhanced password validation - const passwordError = validatePassword(password); - if (passwordError) { - toast.error(passwordError, { theme: "colored" }); + if (password.length < 8) { + setPasswordError("Password must be at least 8 characters long"); + toast.error("Password must be at least 8 characters long", { theme: "colored" }); return; } - // Reset error - setPasswordError(""); + if (!/[a-z]/.test(password)) { + setPasswordError("Password must contain at least one lowercase letter"); + toast.error("Password must contain at least one lowercase letter", { theme: "colored" }); + return; + } + + if (!/[A-Z]/.test(password)) { + setPasswordError("Password must contain at least one uppercase letter"); + toast.error("Password must contain at least one uppercase letter", { theme: "colored" }); + return; + } + + if (!/[0-9]/.test(password)) { + setPasswordError("Password must contain at least one number"); + toast.error("Password must contain at least one number", { theme: "colored" }); + return; + } + + setPasswordError(""); // Clear any previous errors try { setLoading(true); + console.log("signing up"); + const { isSignUpComplete, nextStep } = await signUp({ - username, - password, - attributes: { email: username }, + username: username, + password: password, + attributes: { + email: username, + }, }); - if (!isSignUpComplete && nextStep.signUpStep === "CONFIRM_SIGN_UP") { - setSignUpConfirmation(true); - } else { - setNewSignUp(false); - window.location.reload(); + console.log("signed up successfully:", isSignUpComplete, nextStep); + + setNewSignUp(false); + if (!isSignUpComplete && nextStep?.signUpStep === "CONFIRM_SIGN_UP") { + setSignUpConfirmation(true); // Transition to confirmation UI + toast.success("Account created. Check your email for the confirmation code.", { + theme: "colored", + }); } } catch (error) { - toast.error(`Error signing up: ${error.message}`, { theme: "colored" }); + const errorMessage = + error.message.includes("PreSignUp failed with error") + ? "Your email domain is not allowed. Please use a valid email address." + : `Error signing up: ${error.message}`; + toast.error(errorMessage, { + position: "top-center", + autoClose: 3000, + theme: "colored", + }); + console.log("Error signing up:", error); + setLoading(false); + setError(error.message); + } finally { setLoading(false); } }; - const validatePassword = (pwd) => { - if (pwd.length < 8) { - return "Password must be at least 8 characters long"; - } - if (!/[a-z]/.test(pwd)) { - return "Password must contain at least one lowercase letter"; - } - if (!/[A-Z]/.test(pwd)) { - return "Password must contain at least one uppercase letter"; - } - if (!/[0-9]/.test(pwd)) { - return "Password must contain at least one number"; - } - return null; // Valid password - }; - - - // user gets new password const handleNewUserPassword = async (event) => { event.preventDefault(); From 38b3ce3418f5f88bb2cae42a462554710a480d5d Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Mon, 16 Dec 2024 11:24:33 -0800 Subject: [PATCH 012/111] File required to create module --- .../pages/instructor/InstructorEditCourse.jsx | 38 +++++++++++-------- .../pages/instructor/InstructorNewModule.jsx | 26 +++++++++---- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/frontend/src/pages/instructor/InstructorEditCourse.jsx b/frontend/src/pages/instructor/InstructorEditCourse.jsx index 79634c0..6747ed4 100644 --- a/frontend/src/pages/instructor/InstructorEditCourse.jsx +++ b/frontend/src/pages/instructor/InstructorEditCourse.jsx @@ -98,8 +98,7 @@ const InstructorEditCourse = () => { try { const { token, email } = await getAuthSessionAndEmail(); const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/get_all_files?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -129,8 +128,7 @@ const InstructorEditCourse = () => { try { const { token, email } = await getAuthSessionAndEmail(); const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/view_concepts?course_id=${encodeURIComponent(course_id)}`, { method: "GET", @@ -170,8 +168,7 @@ const InstructorEditCourse = () => { const session = await fetchAuthSession(); const token = session.tokens.idToken const s3Response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/delete_module_s3?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -190,8 +187,7 @@ const InstructorEditCourse = () => { throw new Error("Failed to delete module from S3"); } const moduleResponse = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/delete_module?module_id=${encodeURIComponent( module.module_id )}`, @@ -260,8 +256,7 @@ const InstructorEditCourse = () => { const { token, email } = await getAuthSessionAndEmail(); const editModuleResponse = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/edit_module?module_id=${encodeURIComponent( module.module_id )}&instructor_email=${encodeURIComponent( @@ -291,8 +286,7 @@ const InstructorEditCourse = () => { const fileType = getFileType(file_name); const fileName = cleanFileName(removeFileExtension(file_name)); return fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/delete_file?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -325,8 +319,7 @@ const InstructorEditCourse = () => { try { const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/generate_presigned_url?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -380,6 +373,18 @@ const InstructorEditCourse = () => { if (isSaving) return; setIsSaving(true); + + const totalFiles = files.length + newFiles.length; + if (totalFiles === 0) { + toast.error("At least one file is required to save the module.", { + position: "top-center", + autoClose: 2000, + theme: "colored", + }); + setIsSaving(false); + return; + } + if (!moduleName || !concept) { toast.error("Module Name and Concept are required.", { position: "top-center", @@ -393,6 +398,8 @@ const InstructorEditCourse = () => { }); return; } + + try { await updateModule(); const { token } = await getAuthSessionAndEmail(); @@ -445,8 +452,7 @@ const InstructorEditCourse = () => { ); const fileType = getFileType(fileNameWithExtension); return fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/update_metadata?module_id=${encodeURIComponent( module.module_id )}&filename=${encodeURIComponent( diff --git a/frontend/src/pages/instructor/InstructorNewModule.jsx b/frontend/src/pages/instructor/InstructorNewModule.jsx index ae23748..323e210 100644 --- a/frontend/src/pages/instructor/InstructorNewModule.jsx +++ b/frontend/src/pages/instructor/InstructorNewModule.jsx @@ -24,7 +24,7 @@ function titleCase(str) { if (typeof str !== 'string') { return str; } - return str.toLowerCase().split(' ').map(function(word) { + return str.toLowerCase().split(' ').map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); }).join(' '); } @@ -72,8 +72,7 @@ export const InstructorNewModule = ({ courseId }) => { const session = await fetchAuthSession(); var token = session.tokens.idToken const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/view_concepts?course_id=${encodeURIComponent(course_id)}`, { method: "GET", @@ -108,8 +107,7 @@ export const InstructorNewModule = ({ courseId }) => { const fileType = getFileType(file.name); const fileName = cleanFileName(removeFileExtension(file.name)); return fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/generate_presigned_url?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -160,6 +158,21 @@ export const InstructorNewModule = ({ courseId }) => { return; } + // Check if at least one file is uploaded + if (newFiles.length === 0) { + toast.error("At least one file must be uploaded.", { + position: "top-center", + autoClose: 2000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + theme: "colored", + }); + return; + } + + setIsSaving(true); const selectedConcept = allConcepts.find((c) => c.concept_name === concept); @@ -168,8 +181,7 @@ export const InstructorNewModule = ({ courseId }) => { const token = session.tokens.idToken const { email } = await fetchUserAttributes(); const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/create_module?course_id=${encodeURIComponent( course_id )}&concept_id=${encodeURIComponent( From 313a981b36473631ce1b6d57984ec9e6efa4e593 Mon Sep 17 00:00:00 2001 From: Sinclair Date: Wed, 18 Dec 2024 11:23:08 -0800 Subject: [PATCH 013/111] eventNotification working --- .../eventNotification/eventNotification.py | 75 +-- cdk/lambda/sqsTrigger/sqsTrigger.js | 74 ++- cdk/package-lock.json | 484 +++++++++++++++++- cdk/package.json | 1 + 4 files changed, 551 insertions(+), 83 deletions(-) diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index 8539e09..c067511 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -1,71 +1,26 @@ import json import os +import urllib.request -def lambda_handler(event, context): - # try: - # session_id = event['sessionId'] - # message = event.get('message', "Embeddings created successfully") - - # url = f"https://{os.environ['APPSYNC_API_ID']}.appsync-api.{os.environ['REGION']}.amazonaws.com/graphql" - # headers = { - # "Content-Type": "application/json", - # "x-api-key": os.environ["APPSYNC_API_KEY"], - # } - # payload = { - # "query": """ - # mutation sendNotification($message: String!, $sessionId: String!) { - # sendNotification(message: $message, sessionId: $sessionId) { - # message - # sessionId - # } - # } - # """, - # "variables": { - # "message": message, - # "sessionId": session_id, - # }, - # } - - # response = requests.post(url, headers=headers, json=payload) - # response_json = response.json() - - # if response.status_code != 200 or "errors" in response_json: - # return { - # 'statusCode': response.status_code, - # 'body': json.dumps({"error": response_json.get("errors", "Unknown error")}) - # } - - # return { - # 'statusCode': 200, - # 'body': json.dumps({ - # "message": "Notification sent successfully", - # "response": response_json - # }) - # } - # except Exception as e: - # return { - # 'statusCode': 500, - # 'body': json.dumps({"error": str(e)}) - # } +APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] +def lambda_handler(event, context): print(f"Event Received: {json.dumps(event)}") try: - # Process the event to extract the sessionId and message - session_id = event.get("sessionId", "DefaultSessionId") - message = event.get("message", "Default message") - # Return the processed data + # Extract arguments from the AppSync payload + arguments = event.get("arguments", {}) + session_id = arguments.get("sessionId", "DefaultSessionId") + message = arguments.get("message", "Default message") + # Log the extracted values for debugging + print(f"Extracted sessionId: {session_id}, message: {message}") + # Return the values back to AppSync return { - "message": message, - "sessionId": session_id - } + "sessionId": session_id, + "message": message + } except Exception as e: + print(f"Error: {str(e)}") return { - 'error': str(e) + "error": str(e) } - - - - - - diff --git a/cdk/lambda/sqsTrigger/sqsTrigger.js b/cdk/lambda/sqsTrigger/sqsTrigger.js index a21c5eb..41077a2 100644 --- a/cdk/lambda/sqsTrigger/sqsTrigger.js +++ b/cdk/lambda/sqsTrigger/sqsTrigger.js @@ -1,38 +1,65 @@ -const AWS = require("aws-sdk"); +const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3"); const { parse } = require("json2csv"); const { v4: uuidv4 } = require("uuid"); -const fetch = require("node-fetch"); -const S3 = new AWS.S3(); const BUCKET_NAME = process.env.BUCKET_NAME; const APPSYNC_API_URL = process.env.APPSYNC_API_URL; +// Initialize S3 Client +const s3Client = new S3Client({ region: process.env.AWS_REGION }); + exports.handler = async (event) => { + console.log("Event Received:", JSON.stringify(event)); + for (const record of event.Records) { try { + // Parse SQS message body const { instructor_email, course_id } = JSON.parse(record.body); + console.log("Parsed SQS Message:", { instructor_email, course_id }); + + // Fetch chat logs const chatLogs = await fetchChatLogs(course_id); const csv = parse(chatLogs); + console.log("Generated CSV Data:", csv); // Upload CSV to S3 const fileKey = `chatlogs/${course_id}/${uuidv4()}.csv`; - await S3.putObject({ - Bucket: BUCKET_NAME, - Key: fileKey, - Body: csv, - ContentType: "text/csv", - }).promise(); + await uploadToS3(BUCKET_NAME, fileKey, csv); // Notify AppSync await notifyAppSync(course_id, fileKey); + + console.log("Successfully processed SQS record:", { course_id, fileKey }); } catch (error) { - console.error("Error:", error); + console.error("Error processing SQS record:", error); } } }; async function fetchChatLogs(course_id) { - return [{ user: "Student1", message: "Hello", timestamp: "2024-06-10T10:00:00Z" }]; + console.log(`Fetching chat logs for course: ${course_id}`); + // Replace this with actual logic to fetch chat logs + return [ + { user: "Student1", message: "Hello", timestamp: "2024-06-10T10:00:00Z" }, + { user: "Student2", message: "Hi!", timestamp: "2024-06-10T10:01:00Z" } + ]; +} + +async function uploadToS3(bucket, key, data) { + try { + console.log(`Uploading file to S3: ${key}`); + const command = new PutObjectCommand({ + Bucket: bucket, + Key: key, + Body: data, + ContentType: "text/csv", + }); + await s3Client.send(command); + console.log(`File uploaded successfully to S3: ${key}`); + } catch (error) { + console.error("Error uploading file to S3:", error); + throw error; + } } async function notifyAppSync(course_id, fileKey) { @@ -42,12 +69,21 @@ async function notifyAppSync(course_id, fileKey) { } `; - await fetch(APPSYNC_API_URL, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: mutation, - variables: { course_id, fileKey }, - }), - }); + try { + console.log("Sending notification to AppSync..."); + const response = await fetch(APPSYNC_API_URL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + query: mutation, + variables: { course_id, fileKey }, + }), + }); + const responseData = await response.json(); + console.log("AppSync Response:", responseData); + } catch (error) { + console.error("Error notifying AppSync:", error); + throw error; + } } + diff --git a/cdk/package-lock.json b/cdk/package-lock.json index 80e91d5..2e35b0f 100644 --- a/cdk/package-lock.json +++ b/cdk/package-lock.json @@ -12,6 +12,7 @@ "@aws-cdk/aws-appsync-alpha": "^2.59.0-alpha.0", "@aws-cdk/custom-resources": "^1.204.0", "aws-cdk-lib": "^2.146.0", + "aws-sdk": "^2.1692.0", "constructs": "^10.0.0", "source-map-support": "^0.5.21", "yaml": "^2.4.5" @@ -2261,6 +2262,21 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-cdk": { "version": "2.141.0", "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.141.0.tgz", @@ -2618,6 +2634,28 @@ "node": ">= 6" } }, + "node_modules/aws-sdk": { + "version": "2.1692.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1692.0.tgz", + "integrity": "sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -2731,6 +2769,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2806,11 +2864,69 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3044,6 +3160,23 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -3071,6 +3204,20 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.806", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.806.tgz", @@ -3104,6 +3251,36 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -3135,6 +3312,15 @@ "node": ">=4" } }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -3223,6 +3409,15 @@ "node": ">=8" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3247,7 +3442,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3270,6 +3464,30 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -3321,6 +3539,18 @@ "node": ">=4" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3336,11 +3566,49 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -3363,6 +3631,12 @@ "node": ">=10.17.0" } }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "license": "BSD-3-Clause" + }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -3405,8 +3679,23 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -3414,6 +3703,18 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -3444,6 +3745,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3465,6 +3781,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4126,6 +4463,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4268,6 +4614,15 @@ "tmpl": "1.0.5" } }, + "node_modules/math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4518,6 +4873,15 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -4557,6 +4921,12 @@ "node": ">= 6" } }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "license": "MIT" + }, "node_modules/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -4573,6 +4943,15 @@ } ] }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -4635,6 +5014,12 @@ "node": ">=10" } }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -4644,6 +5029,23 @@ "semver": "bin/semver.js" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5027,6 +5429,38 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -5071,6 +5505,26 @@ "node": ">= 8" } }, + "node_modules/which-typed-array": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5107,6 +5561,28 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/cdk/package.json b/cdk/package.json index 83afb1f..55711de 100644 --- a/cdk/package.json +++ b/cdk/package.json @@ -24,6 +24,7 @@ "@aws-cdk/aws-appsync-alpha": "^2.59.0-alpha.0", "@aws-cdk/custom-resources": "^1.204.0", "aws-cdk-lib": "^2.146.0", + "aws-sdk": "^2.1692.0", "constructs": "^10.0.0", "source-map-support": "^0.5.21", "yaml": "^2.4.5" From ce63569ba96f087c5c3ab8c85681adafe85d9c3d Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 18 Dec 2024 15:06:30 -0800 Subject: [PATCH 014/111] fix: created S3 Bucket for chatlogs, converted sqsTrigger to Docker Lambda function, updated eventNotification.py. --- .../eventNotification/eventNotification.py | 10 +- cdk/lambda/sqsTrigger/sqsTrigger.js | 89 -------- cdk/lib/amplify-stack.ts | 2 + cdk/lib/api-gateway-stack.ts | 199 +++++++++++++----- cdk/sqsTrigger/Dockerfile | 16 ++ cdk/sqsTrigger/requirements.txt | 8 + cdk/sqsTrigger/src/main.py | 36 ++++ 7 files changed, 216 insertions(+), 144 deletions(-) delete mode 100644 cdk/lambda/sqsTrigger/sqsTrigger.js create mode 100644 cdk/sqsTrigger/Dockerfile create mode 100644 cdk/sqsTrigger/requirements.txt create mode 100644 cdk/sqsTrigger/src/main.py diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index c067511..c38b11b 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -1,9 +1,10 @@ import json import os -import urllib.request +import boto3 APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] - +APPSYNC_API_KEY = os.environ["APPSYNC_API_KEY"] +APPSYNC_API_ID = os.environ["APPSYNC_API_ID"] def lambda_handler(event, context): print(f"Event Received: {json.dumps(event)}") @@ -12,15 +13,18 @@ def lambda_handler(event, context): arguments = event.get("arguments", {}) session_id = arguments.get("sessionId", "DefaultSessionId") message = arguments.get("message", "Default message") + # Log the extracted values for debugging print(f"Extracted sessionId: {session_id}, message: {message}") + # Return the values back to AppSync return { "sessionId": session_id, "message": message } + except Exception as e: print(f"Error: {str(e)}") return { "error": str(e) - } + } \ No newline at end of file diff --git a/cdk/lambda/sqsTrigger/sqsTrigger.js b/cdk/lambda/sqsTrigger/sqsTrigger.js deleted file mode 100644 index 41077a2..0000000 --- a/cdk/lambda/sqsTrigger/sqsTrigger.js +++ /dev/null @@ -1,89 +0,0 @@ -const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3"); -const { parse } = require("json2csv"); -const { v4: uuidv4 } = require("uuid"); - -const BUCKET_NAME = process.env.BUCKET_NAME; -const APPSYNC_API_URL = process.env.APPSYNC_API_URL; - -// Initialize S3 Client -const s3Client = new S3Client({ region: process.env.AWS_REGION }); - -exports.handler = async (event) => { - console.log("Event Received:", JSON.stringify(event)); - - for (const record of event.Records) { - try { - // Parse SQS message body - const { instructor_email, course_id } = JSON.parse(record.body); - console.log("Parsed SQS Message:", { instructor_email, course_id }); - - // Fetch chat logs - const chatLogs = await fetchChatLogs(course_id); - const csv = parse(chatLogs); - console.log("Generated CSV Data:", csv); - - // Upload CSV to S3 - const fileKey = `chatlogs/${course_id}/${uuidv4()}.csv`; - await uploadToS3(BUCKET_NAME, fileKey, csv); - - // Notify AppSync - await notifyAppSync(course_id, fileKey); - - console.log("Successfully processed SQS record:", { course_id, fileKey }); - } catch (error) { - console.error("Error processing SQS record:", error); - } - } -}; - -async function fetchChatLogs(course_id) { - console.log(`Fetching chat logs for course: ${course_id}`); - // Replace this with actual logic to fetch chat logs - return [ - { user: "Student1", message: "Hello", timestamp: "2024-06-10T10:00:00Z" }, - { user: "Student2", message: "Hi!", timestamp: "2024-06-10T10:01:00Z" } - ]; -} - -async function uploadToS3(bucket, key, data) { - try { - console.log(`Uploading file to S3: ${key}`); - const command = new PutObjectCommand({ - Bucket: bucket, - Key: key, - Body: data, - ContentType: "text/csv", - }); - await s3Client.send(command); - console.log(`File uploaded successfully to S3: ${key}`); - } catch (error) { - console.error("Error uploading file to S3:", error); - throw error; - } -} - -async function notifyAppSync(course_id, fileKey) { - const mutation = ` - mutation NotifyCSVGenerated($course_id: String!, $fileKey: String!) { - notifyCSVGenerated(course_id: $course_id, fileKey: $fileKey) - } - `; - - try { - console.log("Sending notification to AppSync..."); - const response = await fetch(APPSYNC_API_URL, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - query: mutation, - variables: { course_id, fileKey }, - }), - }); - const responseData = await response.json(); - console.log("AppSync Response:", responseData); - } catch (error) { - console.error("Error notifying AppSync:", error); - throw error; - } -} - diff --git a/cdk/lib/amplify-stack.ts b/cdk/lib/amplify-stack.ts index 431ad0b..d6250b7 100644 --- a/cdk/lib/amplify-stack.ts +++ b/cdk/lib/amplify-stack.ts @@ -73,6 +73,8 @@ export class AmplifyStack extends cdk.Stack { VITE_COGNITO_USER_POOL_CLIENT_ID: apiStack.getUserPoolClientId(), VITE_API_ENDPOINT: apiStack.getEndpointUrl(), VITE_IDENTITY_POOL_ID: apiStack.getIdentityPoolId(), + VITE_GRAPHQL_WS_URL: apiStack.getEventApiUrl(), + VITE_GRAPHQL_API_KEY: apiStack.getEventApiKey(), }, buildSpec: BuildSpec.fromObjectToYaml(amplifyYaml), }); diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index e95c2b7..f348da8 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -34,6 +34,7 @@ export class ApiGatewayStack extends cdk.Stack { public readonly userPool: cognito.UserPool; public readonly identityPool: cognito.CfnIdentityPool; private readonly layerList: { [key: string]: LayerVersion }; + private eventApi: appsync.GraphqlApi; public readonly stageARN_APIGW: string; public readonly apiGW_basedURL: string; public readonly secret: secretsmanager.ISecret; @@ -41,6 +42,8 @@ export class ApiGatewayStack extends cdk.Stack { public getUserPoolId = () => this.userPool.userPoolId; public getUserPoolClientId = () => this.appClient.userPoolClientId; public getIdentityPoolId = () => this.identityPool.ref; + public getEventApiUrl = () => this.eventApi.graphqlUrl; + public getEventApiKey = () => this.eventApi.apiKey!; public addLayer = (name: string, layer: LayerVersion) => (this.layerList[name] = layer); public getLayers = () => this.layerList; @@ -1402,20 +1405,46 @@ export class ApiGatewayStack extends cdk.Stack { sourceArn: `arn:aws:execute-api:${this.region}:${this.account}:${this.api.restApiId}/*/*/instructor*`, }); + const chatlogsBucket = new s3.Bucket( + this, + `${id}-chatlogsBucket`, + { + blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, + cors: [ + { + allowedHeaders: ["*"], + allowedMethods: [ + s3.HttpMethods.GET, + s3.HttpMethods.PUT, + s3.HttpMethods.HEAD, + s3.HttpMethods.POST, + s3.HttpMethods.DELETE, + ], + allowedOrigins: ["*"], + }, + ], + // When deleting the stack, need to empty the Bucket and delete it manually + removalPolicy: cdk.RemovalPolicy.RETAIN, + enforceSSL: true, + } + ); + /** * * Create a Lambda function that gets triggered when SQS has new parameters */ - const sqsTrigger = new lambda.Function(this, `${id}-SQSTrigger`, { - runtime: lambda.Runtime.NODEJS_20_X, - code: lambda.Code.fromAsset("lambda/sqsTrigger"), - handler: "sqsTrigger.handler", - timeout: Duration.seconds(300), + const sqsTrigger = new lambda.DockerImageFunction(this, `${id}-SQSTrigger`, { + code: lambda.DockerImageCode.fromImageAsset("./sqsTrigger"), + memorySize: 512, + timeout: cdk.Duration.seconds(600), + vpc: vpcStack.vpc, // Pass the VPC + functionName: `${id}-SQSTrigger`, environment: { - BUCKET: dataIngestionBucket.bucketName, + SM_DB_CREDENTIALS: db.secretPathUser.secretName, + RDS_PROXY_ENDPOINT: db.rdsProxyEndpoint, + CHATLOGS_BUCKET: chatlogsBucket.bucketName, + REGION: this.region, }, - functionName: `${id}-SQSTrigger`, - memorySize: 128, }); sqsTrigger.addEventSource( @@ -1424,11 +1453,69 @@ export class ApiGatewayStack extends cdk.Stack { }) ); + // Override the Logical ID of the Lambda Function to get ARN in OpenAPI + const cfnSqsTrigger = sqsTrigger.node + .defaultChild as lambda.CfnFunction; + cfnSqsTrigger.overrideLogicalId( + "SQSTrigger" + ); + + chatlogsBucket.grantRead(sqsTrigger); + + // Add ListBucket permission explicitly + sqsTrigger.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ["s3:ListBucket"], + resources: [chatlogsBucket.bucketArn], // Access to the specific bucket + }) + ); + + sqsTrigger.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:HeadObject", + ], + resources: [ + `arn:aws:s3:::${chatlogsBucket.bucketName}/*`, // Grant access to all objects within this bucket + ], + }) + ); + + // Add the S3 event source trigger to the Lambda function + sqsTrigger.addEventSource( + new lambdaEventSources.S3EventSource(chatlogsBucket, { + events: [ + s3.EventType.OBJECT_CREATED, + s3.EventType.OBJECT_REMOVED, + s3.EventType.OBJECT_RESTORE_COMPLETED, + ], + }) + ); + + // Grant access to Secret Manager + sqsTrigger.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: [ + //Secrets Manager + "secretsmanager:GetSecretValue", + ], + resources: [ + `arn:aws:secretsmanager:${this.region}:${this.account}:secret:*`, + ], + }) + ); + ////////////////////////////// ////////////////////////////// // Create AppSync API - const eventApi = new appsync.GraphqlApi(this, + this.eventApi = new appsync.GraphqlApi(this, `${id}-EventApi`, { name: `${id}-EventApi`, definition: appsync.Definition.fromFile("./graphql/schema.graphql"), @@ -1439,51 +1526,59 @@ export class ApiGatewayStack extends cdk.Stack { }, xrayEnabled: true, }); + const notificationFunction = new lambda.Function(this, `${id}-NotificationFunction`, { - runtime: lambda.Runtime.PYTHON_3_9, - code: lambda.Code.fromAsset("lambda/eventNotification"), - handler: "eventNotification.lambda_handler", - environment: { - APPSYNC_API_URL: eventApi.graphqlUrl, - APPSYNC_API_ID: eventApi.apiId, - APPSYNC_API_KEY: eventApi.apiKey!, - REGION: this.region, - }, - functionName: `${id}-NotificationFunction`, - timeout: cdk.Duration.seconds(300), - memorySize: 128, - vpc: vpcStack.vpc, - role: lambdaRole, - }); - notificationFunction.addToRolePolicy( - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: ['appsync:GraphQL'], - resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`], - }) - ); - notificationFunction.addPermission("AppSyncInvokePermission", { - principal: new iam.ServicePrincipal("appsync.amazonaws.com"), - action: "lambda:InvokeFunction", - sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${eventApi.apiId}/*`, - }); - const notificationLambdaDataSource = eventApi.addLambdaDataSource( - "NotificationLambdaDataSource", - notificationFunction - ); - notificationLambdaDataSource.createResolver("ResolverEventApi", { - typeName: "Mutation", - fieldName: "sendNotification", - requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), - responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), - }); - // Override the Logical ID of the Lambda Function to get ARN in OpenAPI - const cfnNotificationFunction = notificationFunction - .node.defaultChild as lambda.CfnFunction; - cfnNotificationFunction.overrideLogicalId( - "NotificationFunction" - ); + runtime: lambda.Runtime.PYTHON_3_9, + code: lambda.Code.fromAsset("lambda/eventNotification"), + handler: "eventNotification.lambda_handler", + environment: { + APPSYNC_API_URL: this.eventApi.graphqlUrl, + APPSYNC_API_ID: this.eventApi.apiId, + APPSYNC_API_KEY: this.eventApi.apiKey!, + REGION: this.region, + }, + functionName: `${id}-NotificationFunction`, + timeout: cdk.Duration.seconds(300), + memorySize: 128, + vpc: vpcStack.vpc, + role: lambdaRole, + }); + + notificationFunction.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['appsync:GraphQL'], + resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`], + }) + ); + notificationFunction.addPermission("AppSyncInvokePermission", { + principal: new iam.ServicePrincipal("appsync.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`, + }); + + const notificationLambdaDataSource = this.eventApi.addLambdaDataSource( + "NotificationLambdaDataSource", + notificationFunction + ); + + notificationLambdaDataSource.createResolver("ResolverEventApi", { + typeName: "Mutation", + fieldName: "sendNotification", + requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), + responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), + }); + + // Add permission to allow main.py Lambda to invoke eventNotification Lambda + notificationFunction.grantInvoke(new iam.ServicePrincipal("lambda.amazonaws.com")); + + // Override the Logical ID of the Lambdas Function to get ARN in OpenAPI + const cfnNotificationFunction = notificationFunction + .node.defaultChild as lambda.CfnFunction; + cfnNotificationFunction.overrideLogicalId( + "NotificationFunction" + ); } } diff --git a/cdk/sqsTrigger/Dockerfile b/cdk/sqsTrigger/Dockerfile new file mode 100644 index 0000000..145c18c --- /dev/null +++ b/cdk/sqsTrigger/Dockerfile @@ -0,0 +1,16 @@ +FROM public.ecr.aws/lambda/python:3.11 + +# Install system dependencies +RUN yum -y install postgresql-devel gcc libpq + +# Copy requirements.txt +COPY requirements.txt ${LAMBDA_TASK_ROOT} + +# Install Python packages +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the source code +COPY src/ ${LAMBDA_TASK_ROOT} + +# Set the CMD to your handler +CMD [ "main.handler" ] \ No newline at end of file diff --git a/cdk/sqsTrigger/requirements.txt b/cdk/sqsTrigger/requirements.txt new file mode 100644 index 0000000..0c5f0d7 --- /dev/null +++ b/cdk/sqsTrigger/requirements.txt @@ -0,0 +1,8 @@ +boto3 +botocore +sqlalchemy +Pillow +pymupdf +psycopg[binary,pool] +psycopg2-binary +httpx \ No newline at end of file diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py new file mode 100644 index 0000000..a86d79c --- /dev/null +++ b/cdk/sqsTrigger/src/main.py @@ -0,0 +1,36 @@ +import json + +def lambda_handler(event, context): + """ + Lambda function to process messages from SQS. + Prints the received parameters for testing purposes. + + Args: + event (dict): The event object containing SQS messages. + context (LambdaContext): The runtime information provided by AWS Lambda. + + Returns: + dict: A success message. + """ + try: + # Loop through the records in the event + for record in event.get("Records", []): + # Extract the body of the SQS message + message_body = record.get("body") + if message_body: + # Parse the message body as JSON + parameters = json.loads(message_body) + print(f"Received parameters from SQS: {parameters}") + else: + print("Message body is empty or not provided in the SQS record") + + return { + "statusCode": 200, + "body": json.dumps({"message": "Messages processed successfully"}) + } + except Exception as e: + print(f"Error processing SQS message: {str(e)}") + return { + "statusCode": 500, + "body": json.dumps({"error": "Internal Server Error"}) + } \ No newline at end of file From 6c9ec1302016989366ab5c37526e65577cb5ecff Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 14:11:35 -0800 Subject: [PATCH 015/111] fix: updated Dockerfile to point to handler. --- cdk/sqsTrigger/src/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index a86d79c..80d8d5e 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -1,6 +1,6 @@ import json -def lambda_handler(event, context): +def handler(event, context): """ Lambda function to process messages from SQS. Prints the received parameters for testing purposes. From 7203a7b1a095634b1d0757c3cefc5f4c01a0bfa7 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 14:54:04 -0800 Subject: [PATCH 016/111] feat: sqsTrigger gets chatlogs for course, converts data to CSV, and uploads them to S3 Bucket. --- cdk/sqsTrigger/src/main.py | 193 +++++++++++++++++++++++++++++++++---- 1 file changed, 174 insertions(+), 19 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 80d8d5e..8321df9 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -1,35 +1,190 @@ +import os import json +import logging +import boto3 +import psycopg2 +import csv +from datetime import datetime +from botocore.exceptions import ClientError -def handler(event, context): +# Set up basic logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger() + +# Environment variables +DB_SECRET_NAME = os.environ["SM_DB_CREDENTIALS"] +REGION = os.environ["REGION"] +CHATLOGS_BUCKET = os.environ["CHATLOGS_BUCKET"] +RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] + +# AWS Clients +secrets_manager_client = boto3.client("secretsmanager") +s3_client = boto3.client("s3") + +# Cached resources +connection = None +db_secret = None + +def get_secret(): + global db_secret + if db_secret is None: + try: + response = secrets_manager_client.get_secret_value(SecretId=DB_SECRET_NAME)["SecretString"] + db_secret = json.loads(response) + except Exception as e: + logger.error(f"Error fetching secret {DB_SECRET_NAME}: {e}") + raise + return db_secret + +def connect_to_db(): + global connection + if connection is None or connection.closed: + try: + secret = get_secret() + connection_params = { + 'dbname': secret["dbname"], + 'user': secret["username"], + 'password': secret["password"], + 'host': RDS_PROXY_ENDPOINT, + 'port': secret["port"] + } + connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) + connection = psycopg2.connect(connection_string) + logger.info("Connected to the database!") + except Exception as e: + logger.error(f"Failed to connect to database: {e}") + if connection: + connection.rollback() + connection.close() + raise + return connection + +def query_chat_logs(course_id): + """ + Queries the database to fetch chat logs for a given course_id. + """ + connection = connect_to_db() + if connection is None: + logger.error("No database connection available.") + return { + "statusCode": 500, + "body": json.dumps("Database connection failed.") + } + + try: + cur = connection.cursor() + + query = """ + SELECT + u.user_id, + cm.module_name, + cc.concept_name, + s.session_id, + m.message_content AS message, + m.student_sent AS sent_by_student, + CASE + WHEN sm.module_score = 100 THEN 'complete' + ELSE 'incomplete' + END AS competency_status, + m.time_sent AS timestamp + FROM + "Messages" m + JOIN + "Sessions" s ON m.session_id = s.session_id + JOIN + "Student_Modules" sm ON s.student_module_id = sm.student_module_id + JOIN + "Course_Modules" cm ON sm.course_module_id = cm.module_id + JOIN + "Course_Concepts" cc ON cm.concept_id = cc.concept_id + JOIN + "Enrolments" e ON sm.enrolment_id = e.enrolment_id + JOIN + "Users" u ON e.user_id = u.user_id + WHERE + cc.course_id = %s + ORDER BY + u.user_id, cm.module_name, s.session_id, m.time_sent; + """ + cur.execute(query, (course_id,)) + results = cur.fetchall() + logger.info(f"Fetched {len(results)} records for course_id: {course_id}") + cur.close() + return results + except Exception as e: + if cur: + cur.close() + connection.rollback() + logger.error(f"Error querying chat logs: {e}") + return none + +def write_to_csv(data, course_id, instructor_email): + """ + Writes the queried data to a CSV file. """ - Lambda function to process messages from SQS. - Prints the received parameters for testing purposes. + timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + file_name = f"{course_id}-{instructor_email}-{timestamp}.csv" + try: + with open(f"/tmp/{file_name}", mode="w", newline="") as file: + writer = csv.writer(file) + # Write header + writer.writerow([ + "user_id", "module_name", "concept_name", "session_id", + "message", "sent_by_student", "competency_status", "timestamp" + ]) + # Write rows + writer.writerows(data) + logger.info(f"Data written to CSV file: {file_name}") + return f"/{course_id}/{file_name}", file_name + except Exception as e: + logger.error(f"Error writing to CSV: {e}") + raise - Args: - event (dict): The event object containing SQS messages. - context (LambdaContext): The runtime information provided by AWS Lambda. - Returns: - dict: A success message. +def upload_to_s3(file_path, file_name): + """ + Uploads the file to the specified S3 bucket. """ try: - # Loop through the records in the event + s3_client.upload_file(file_path, CHATLOGS_BUCKET, file_name) + logger.info(f"File uploaded to S3: s3://{CHATLOGS_BUCKET}/{file_name}") + return f"s3://{CHATLOGS_BUCKET}/{file_name}" + except Exception as e: + logger.error(f"Error uploading file to S3: {e}") + raise + + +def handler(event, context): + """ + Lambda entry point. + """ + try: + # Parse SQS event for record in event.get("Records", []): - # Extract the body of the SQS message - message_body = record.get("body") - if message_body: - # Parse the message body as JSON - parameters = json.loads(message_body) - print(f"Received parameters from SQS: {parameters}") - else: - print("Message body is empty or not provided in the SQS record") + message_body = json.loads(record["body"]) + course_id = message_body.get("course_id") + instructor_email = message_body.get("instructor_email") + if not course_id: + logger.error("course_id is required in the message body") + continue + + # Query chat logs + chat_logs = query_chat_logs(course_id) + + # Write to CSV + csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) + + # Upload to S3 + s3_uri = upload_to_s3(csv_path, csv_name) + logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + return { "statusCode": 200, - "body": json.dumps({"message": "Messages processed successfully"}) + "body": json.dumps({"message": "Chat logs processed successfully"}) } except Exception as e: - print(f"Error processing SQS message: {str(e)}") + logger.error(f"Error in lambda_handler: {e}") return { "statusCode": 500, "body": json.dumps({"error": "Internal Server Error"}) From 991d18278af9318d4ee71cd9591d195ed2a34253 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 15:19:00 -0800 Subject: [PATCH 017/111] feat: added method to send notification to AppSync in sqsTrigger. --- cdk/graphql/schema.graphql | 4 ++-- cdk/sqsTrigger/src/main.py | 46 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql index 6065a2e..f087732 100644 --- a/cdk/graphql/schema.graphql +++ b/cdk/graphql/schema.graphql @@ -4,10 +4,10 @@ type Subscription { } type Notification { message: String - sessionId: String + course_id: String } type Mutation { - sendNotification(message: String!, sessionId: String!): Notification + sendNotification(message: String!, course_id: String!): Notification } type Query { getNotifications: [Notification] diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 8321df9..31983ca 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -16,6 +16,8 @@ REGION = os.environ["REGION"] CHATLOGS_BUCKET = os.environ["CHATLOGS_BUCKET"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] +APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] +APPSYNC_API_KEY = os.environ["APPSYNC_API_KEY"] # AWS Clients secrets_manager_client = boto3.client("secretsmanager") @@ -153,6 +155,47 @@ def upload_to_s3(file_path, file_name): logger.error(f"Error uploading file to S3: {e}") raise +def invoke_event_notification(course_id, message="Chat logs successfully uploaded"): + """ + Publish a notification event to AppSync via HTTPX (directly to the AppSync API). + """ + try: + query = """ + mutation sendNotification($message: String!, $course_id: String!) { + sendNotification(message: $message, course_id: $course_id) { + message + course_id + } + } + """ + headers = { + "Content-Type": "application/json", + "Authorization": "API_KEY" + } + + payload = { + "query": query, + "variables": { + "message": message, + "course_id": course_id + } + } + + # Send the request to AppSync + with httpx.Client() as client: + response = client.post(APPSYNC_API_URL, headers=headers, json=payload) + response_data = response.json() + + logging.info(f"AppSync Response: {json.dumps(response_data, indent=2)}") + if response.status_code != 200 or "errors" in response_data: + raise Exception(f"Failed to send notification: {response_data}") + + print(f"Notification sent successfully: {response_data}") + return response_data["data"]["sendNotification"] + + except Exception as e: + logging.error(f"Error publishing event to AppSync: {str(e)}") + raise def handler(event, context): """ @@ -178,6 +221,9 @@ def handler(event, context): s3_uri = upload_to_s3(csv_path, csv_name) logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + + # Send notification to AppSync + invoke_event_notification(course_id, message=f"Chat logs uploaded to {s3_uri}") return { "statusCode": 200, From 066d732c7a66018caae0aa6ea7d6553c4a68855c Mon Sep 17 00:00:00 2001 From: Sinclair Date: Thu, 19 Dec 2024 16:10:25 -0800 Subject: [PATCH 018/111] sqs Trigger timeout and dockerfunc name --- cdk/lib/api-gateway-stack.ts | 8 ++++---- cdk/sqsTrigger/Dockerfile | 2 +- cdk/sqsTrigger/src/main.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index f348da8..babaae8 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1433,12 +1433,12 @@ export class ApiGatewayStack extends cdk.Stack { * * Create a Lambda function that gets triggered when SQS has new parameters */ - const sqsTrigger = new lambda.DockerImageFunction(this, `${id}-SQSTrigger`, { + const sqsTrigger = new lambda.DockerImageFunction(this, `${id}-SQSTriggerDockerFunc`, { code: lambda.DockerImageCode.fromImageAsset("./sqsTrigger"), memorySize: 512, - timeout: cdk.Duration.seconds(600), + timeout: cdk.Duration.seconds(300), vpc: vpcStack.vpc, // Pass the VPC - functionName: `${id}-SQSTrigger`, + functionName: `${id}-SQSTriggerDockerFunc`, environment: { SM_DB_CREDENTIALS: db.secretPathUser.secretName, RDS_PROXY_ENDPOINT: db.rdsProxyEndpoint, @@ -1457,7 +1457,7 @@ export class ApiGatewayStack extends cdk.Stack { const cfnSqsTrigger = sqsTrigger.node .defaultChild as lambda.CfnFunction; cfnSqsTrigger.overrideLogicalId( - "SQSTrigger" + "SQSTriggerDockerFunc" ); chatlogsBucket.grantRead(sqsTrigger); diff --git a/cdk/sqsTrigger/Dockerfile b/cdk/sqsTrigger/Dockerfile index 145c18c..681a4bd 100644 --- a/cdk/sqsTrigger/Dockerfile +++ b/cdk/sqsTrigger/Dockerfile @@ -13,4 +13,4 @@ RUN pip install --no-cache-dir -r requirements.txt COPY src/ ${LAMBDA_TASK_ROOT} # Set the CMD to your handler -CMD [ "main.handler" ] \ No newline at end of file +CMD [ "main.handler" ] diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index a86d79c..ab0acda 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -1,6 +1,6 @@ import json -def lambda_handler(event, context): +def handler(event, context): """ Lambda function to process messages from SQS. Prints the received parameters for testing purposes. @@ -10,7 +10,7 @@ def lambda_handler(event, context): context (LambdaContext): The runtime information provided by AWS Lambda. Returns: - dict: A success message. + dict: A success message.. """ try: # Loop through the records in the event From 89548373d5bab66097c27d2c4b039764a0d69d95 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 16:17:21 -0800 Subject: [PATCH 019/111] fix: updated Graph QL Schema. --- cdk/graphql/schema.graphql | 3 ++- cdk/sqsTrigger/src/main.py | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql index f087732..9d562b2 100644 --- a/cdk/graphql/schema.graphql +++ b/cdk/graphql/schema.graphql @@ -5,9 +5,10 @@ type Subscription { type Notification { message: String course_id: String + instructor_email: String } type Mutation { - sendNotification(message: String!, course_id: String!): Notification + sendNotification(message: String!, course_id: String!, instructor_email: String!): Notification } type Query { getNotifications: [Notification] diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 31983ca..711c222 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -155,16 +155,17 @@ def upload_to_s3(file_path, file_name): logger.error(f"Error uploading file to S3: {e}") raise -def invoke_event_notification(course_id, message="Chat logs successfully uploaded"): +def invoke_event_notification(course_id, instructor_email, message="Chat logs successfully uploaded"): """ Publish a notification event to AppSync via HTTPX (directly to the AppSync API). """ try: query = """ - mutation sendNotification($message: String!, $course_id: String!) { - sendNotification(message: $message, course_id: $course_id) { + mutation sendNotification($message: String!, $course_id: String!, $instructor_email: String!) { + sendNotification(message: $message, course_id: $course_id, instructor_email: $instructor_email) { message course_id + instructor_email } } """ @@ -177,7 +178,8 @@ def invoke_event_notification(course_id, message="Chat logs successfully uploade "query": query, "variables": { "message": message, - "course_id": course_id + "course_id": course_id, + "instructor_email": instructor_email } } @@ -223,7 +225,7 @@ def handler(event, context): logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") # Send notification to AppSync - invoke_event_notification(course_id, message=f"Chat logs uploaded to {s3_uri}") + invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") return { "statusCode": 200, From b365633e8f4be3c39f2bd19ac7e2dfdbdd582a54 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 16:34:32 -0800 Subject: [PATCH 020/111] feat: added Authorization Handler for AppSync API to avoid expired API keys. --- .../eventNotification/eventNotification.py | 1 - cdk/lambda/lib/appsync.js | 5 ++ cdk/lib/amplify-stack.ts | 1 - cdk/lib/api-gateway-stack.ts | 88 +++++++++++-------- cdk/sqsTrigger/src/main.py | 1 - 5 files changed, 54 insertions(+), 42 deletions(-) create mode 100644 cdk/lambda/lib/appsync.js diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index c38b11b..48cb730 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -3,7 +3,6 @@ import boto3 APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] -APPSYNC_API_KEY = os.environ["APPSYNC_API_KEY"] APPSYNC_API_ID = os.environ["APPSYNC_API_ID"] def lambda_handler(event, context): diff --git a/cdk/lambda/lib/appsync.js b/cdk/lambda/lib/appsync.js new file mode 100644 index 0000000..2bafd60 --- /dev/null +++ b/cdk/lambda/lib/appsync.js @@ -0,0 +1,5 @@ +exports.handler = async (event) => { + return { + isAuthorized: true, + }; + }; \ No newline at end of file diff --git a/cdk/lib/amplify-stack.ts b/cdk/lib/amplify-stack.ts index d6250b7..d2ef9a5 100644 --- a/cdk/lib/amplify-stack.ts +++ b/cdk/lib/amplify-stack.ts @@ -74,7 +74,6 @@ export class AmplifyStack extends cdk.Stack { VITE_API_ENDPOINT: apiStack.getEndpointUrl(), VITE_IDENTITY_POOL_ID: apiStack.getIdentityPoolId(), VITE_GRAPHQL_WS_URL: apiStack.getEventApiUrl(), - VITE_GRAPHQL_API_KEY: apiStack.getEventApiKey(), }, buildSpec: BuildSpec.fromObjectToYaml(amplifyYaml), }); diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index babaae8..e1cb290 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -43,7 +43,6 @@ export class ApiGatewayStack extends cdk.Stack { public getUserPoolClientId = () => this.appClient.userPoolClientId; public getIdentityPoolId = () => this.identityPool.ref; public getEventApiUrl = () => this.eventApi.graphqlUrl; - public getEventApiKey = () => this.eventApi.apiKey!; public addLayer = (name: string, layer: LayerVersion) => (this.layerList[name] = layer); public getLayers = () => this.layerList; @@ -1443,6 +1442,7 @@ export class ApiGatewayStack extends cdk.Stack { SM_DB_CREDENTIALS: db.secretPathUser.secretName, RDS_PROXY_ENDPOINT: db.rdsProxyEndpoint, CHATLOGS_BUCKET: chatlogsBucket.bucketName, + APPSYNC_API_URL: this.eventApi.graphqlUrl, REGION: this.region, }, }); @@ -1514,6 +1514,13 @@ export class ApiGatewayStack extends cdk.Stack { ////////////////////////////// ////////////////////////////// + const authHandler = new lambda.Function(this, `${id}-AuthHandler`, { + runtime: lambda.Runtime.NODEJS_20_X, + code: lambda.Code.fromAsset("lambda/lib"), + handler: "appsync.handler", + functionName: `${id}-AuthHandler`, + }); + // Create AppSync API this.eventApi = new appsync.GraphqlApi(this, `${id}-EventApi`, { @@ -1521,20 +1528,25 @@ export class ApiGatewayStack extends cdk.Stack { definition: appsync.Definition.fromFile("./graphql/schema.graphql"), authorizationConfig: { defaultAuthorization: { - authorizationType: appsync.AuthorizationType.API_KEY, + authorizationType: appsync.AuthorizationType.LAMBDA, + lambdaAuthorizerConfig: { + handler: authHandler, + }, }, }, xrayEnabled: true, }); - const notificationFunction = new lambda.Function(this, `${id}-NotificationFunction`, { + const notificationFunction = new lambda.Function( + this, + `${id}-NotificationFunction`, + { runtime: lambda.Runtime.PYTHON_3_9, code: lambda.Code.fromAsset("lambda/eventNotification"), handler: "eventNotification.lambda_handler", environment: { APPSYNC_API_URL: this.eventApi.graphqlUrl, APPSYNC_API_ID: this.eventApi.apiId, - APPSYNC_API_KEY: this.eventApi.apiKey!, REGION: this.region, }, functionName: `${id}-NotificationFunction`, @@ -1543,42 +1555,40 @@ export class ApiGatewayStack extends cdk.Stack { vpc: vpcStack.vpc, role: lambdaRole, }); - - notificationFunction.addToRolePolicy( - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: ['appsync:GraphQL'], - resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`], - }) - ); - notificationFunction.addPermission("AppSyncInvokePermission", { - principal: new iam.ServicePrincipal("appsync.amazonaws.com"), - action: "lambda:InvokeFunction", - sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`, - }); - - const notificationLambdaDataSource = this.eventApi.addLambdaDataSource( - "NotificationLambdaDataSource", - notificationFunction - ); - - notificationLambdaDataSource.createResolver("ResolverEventApi", { - typeName: "Mutation", - fieldName: "sendNotification", - requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), - responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), - }); - - // Add permission to allow main.py Lambda to invoke eventNotification Lambda - notificationFunction.grantInvoke(new iam.ServicePrincipal("lambda.amazonaws.com")); - - // Override the Logical ID of the Lambdas Function to get ARN in OpenAPI - const cfnNotificationFunction = notificationFunction - .node.defaultChild as lambda.CfnFunction; - cfnNotificationFunction.overrideLogicalId( - "NotificationFunction" - ); + notificationFunction.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['appsync:GraphQL'], + resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`], + }) + ); + + notificationFunction.addPermission("AppSyncInvokePermission", { + principal: new iam.ServicePrincipal("appsync.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`, + }); + + const notificationLambdaDataSource = this.eventApi.addLambdaDataSource( + "NotificationLambdaDataSource", + notificationFunction + ); + + notificationLambdaDataSource.createResolver("ResolverEventApi", { + typeName: "Mutation", + fieldName: "sendNotification", + requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), + responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), + }); + + // Add permission to allow main.py Lambda to invoke eventNotification Lambda + notificationFunction.grantInvoke(new iam.ServicePrincipal("lambda.amazonaws.com")); + + // Override the Logical ID of the Lambdas Function to get ARN in OpenAPI + const cfnNotificationFunction = notificationFunction.node + .defaultChild as lambda.CfnFunction; + cfnNotificationFunction.overrideLogicalId("NotificationFunction"); } } diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 711c222..8ef0f2d 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -17,7 +17,6 @@ CHATLOGS_BUCKET = os.environ["CHATLOGS_BUCKET"] RDS_PROXY_ENDPOINT = os.environ["RDS_PROXY_ENDPOINT"] APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] -APPSYNC_API_KEY = os.environ["APPSYNC_API_KEY"] # AWS Clients secrets_manager_client = boto3.client("secretsmanager") From 205fb1aa04df643f3ed851fa09df75d43630abc5 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 16:45:03 -0800 Subject: [PATCH 021/111] fix: reordered CDK code in stack. --- cdk/lib/api-gateway-stack.ts | 158 +++++++++++++++++------------------ 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index e1cb290..688ebf9 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1366,6 +1366,85 @@ export class ApiGatewayStack extends cdk.Stack { }) ); + ////////////////////////////// + ////////////////////////////// + + const authHandler = new lambda.Function(this, `${id}-AuthHandler`, { + runtime: lambda.Runtime.NODEJS_20_X, + code: lambda.Code.fromAsset("lambda/lib"), + handler: "appsync.handler", + functionName: `${id}-AuthHandler`, + }); + + // Create AppSync API + this.eventApi = new appsync.GraphqlApi(this, + `${id}-EventApi`, { + name: `${id}-EventApi`, + definition: appsync.Definition.fromFile("./graphql/schema.graphql"), + authorizationConfig: { + defaultAuthorization: { + authorizationType: appsync.AuthorizationType.LAMBDA, + lambdaAuthorizerConfig: { + handler: authHandler, + }, + }, + }, + xrayEnabled: true, + }); + + const notificationFunction = new lambda.Function( + this, + `${id}-NotificationFunction`, + { + runtime: lambda.Runtime.PYTHON_3_9, + code: lambda.Code.fromAsset("lambda/eventNotification"), + handler: "eventNotification.lambda_handler", + environment: { + APPSYNC_API_URL: this.eventApi.graphqlUrl, + APPSYNC_API_ID: this.eventApi.apiId, + REGION: this.region, + }, + functionName: `${id}-NotificationFunction`, + timeout: cdk.Duration.seconds(300), + memorySize: 128, + vpc: vpcStack.vpc, + role: lambdaRole, + }); + + notificationFunction.addToRolePolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['appsync:GraphQL'], + resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`], + }) + ); + + notificationFunction.addPermission("AppSyncInvokePermission", { + principal: new iam.ServicePrincipal("appsync.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`, + }); + + const notificationLambdaDataSource = this.eventApi.addLambdaDataSource( + "NotificationLambdaDataSource", + notificationFunction + ); + + notificationLambdaDataSource.createResolver("ResolverEventApi", { + typeName: "Mutation", + fieldName: "sendNotification", + requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), + responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), + }); + + // Add permission to allow main.py Lambda to invoke eventNotification Lambda + notificationFunction.grantInvoke(new iam.ServicePrincipal("lambda.amazonaws.com")); + + // Override the Logical ID of the Lambdas Function to get ARN in OpenAPI + const cfnNotificationFunction = notificationFunction.node + .defaultChild as lambda.CfnFunction; + cfnNotificationFunction.overrideLogicalId("NotificationFunction"); + /** * * Create a Lambda function that populates SQS with parameters to start new job @@ -1510,85 +1589,6 @@ export class ApiGatewayStack extends cdk.Stack { ], }) ); - - ////////////////////////////// - ////////////////////////////// - - const authHandler = new lambda.Function(this, `${id}-AuthHandler`, { - runtime: lambda.Runtime.NODEJS_20_X, - code: lambda.Code.fromAsset("lambda/lib"), - handler: "appsync.handler", - functionName: `${id}-AuthHandler`, - }); - - // Create AppSync API - this.eventApi = new appsync.GraphqlApi(this, - `${id}-EventApi`, { - name: `${id}-EventApi`, - definition: appsync.Definition.fromFile("./graphql/schema.graphql"), - authorizationConfig: { - defaultAuthorization: { - authorizationType: appsync.AuthorizationType.LAMBDA, - lambdaAuthorizerConfig: { - handler: authHandler, - }, - }, - }, - xrayEnabled: true, - }); - - const notificationFunction = new lambda.Function( - this, - `${id}-NotificationFunction`, - { - runtime: lambda.Runtime.PYTHON_3_9, - code: lambda.Code.fromAsset("lambda/eventNotification"), - handler: "eventNotification.lambda_handler", - environment: { - APPSYNC_API_URL: this.eventApi.graphqlUrl, - APPSYNC_API_ID: this.eventApi.apiId, - REGION: this.region, - }, - functionName: `${id}-NotificationFunction`, - timeout: cdk.Duration.seconds(300), - memorySize: 128, - vpc: vpcStack.vpc, - role: lambdaRole, - }); - - notificationFunction.addToRolePolicy( - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: ['appsync:GraphQL'], - resources: [`arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`], - }) - ); - - notificationFunction.addPermission("AppSyncInvokePermission", { - principal: new iam.ServicePrincipal("appsync.amazonaws.com"), - action: "lambda:InvokeFunction", - sourceArn: `arn:aws:appsync:${this.region}:${this.account}:apis/${this.eventApi.apiId}/*`, - }); - - const notificationLambdaDataSource = this.eventApi.addLambdaDataSource( - "NotificationLambdaDataSource", - notificationFunction - ); - - notificationLambdaDataSource.createResolver("ResolverEventApi", { - typeName: "Mutation", - fieldName: "sendNotification", - requestMappingTemplate: appsync.MappingTemplate.lambdaRequest(), - responseMappingTemplate: appsync.MappingTemplate.lambdaResult(), - }); - - // Add permission to allow main.py Lambda to invoke eventNotification Lambda - notificationFunction.grantInvoke(new iam.ServicePrincipal("lambda.amazonaws.com")); - - // Override the Logical ID of the Lambdas Function to get ARN in OpenAPI - const cfnNotificationFunction = notificationFunction.node - .defaultChild as lambda.CfnFunction; - cfnNotificationFunction.overrideLogicalId("NotificationFunction"); } } From 8660ea49da9c3a96cd19db4a9f541f25c3f9b2e8 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 17:24:18 -0800 Subject: [PATCH 022/111] fix: updated Graph QL Schema with proper parameters. --- cdk/graphql/schema.graphql | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql index 9d562b2..f5ac9c7 100644 --- a/cdk/graphql/schema.graphql +++ b/cdk/graphql/schema.graphql @@ -1,20 +1,24 @@ type Subscription { - onNotify: Notification + onNotify(course_id: String!, instructor_email: String!): Notification @aws_subscribe(mutations: ["sendNotification"]) } + type Notification { message: String course_id: String instructor_email: String } + type Mutation { sendNotification(message: String!, course_id: String!, instructor_email: String!): Notification } + type Query { getNotifications: [Notification] } + schema { query: Query mutation: Mutation subscription: Subscription -} +} \ No newline at end of file From bbad1af3a23246d6d84d338916b0a58e4c0f3142 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 17:38:10 -0800 Subject: [PATCH 023/111] fix: updated file path for uploaded CSV to S3 Bucket. --- cdk/sqsTrigger/src/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 8ef0f2d..5b3f3d3 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -125,8 +125,9 @@ def write_to_csv(data, course_id, instructor_email): """ timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") file_name = f"{course_id}-{instructor_email}-{timestamp}.csv" + file_path = f"/tmp/{file_name}" try: - with open(f"/tmp/{file_name}", mode="w", newline="") as file: + with open(file_path, mode="w", newline="") as file: writer = csv.writer(file) # Write header writer.writerow([ @@ -136,7 +137,7 @@ def write_to_csv(data, course_id, instructor_email): # Write rows writer.writerows(data) logger.info(f"Data written to CSV file: {file_name}") - return f"/{course_id}/{file_name}", file_name + return file_path, file_name except Exception as e: logger.error(f"Error writing to CSV: {e}") raise From 11058ddd4f610e433fa37d99b0e301366c1e2aad Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 17:43:26 -0800 Subject: [PATCH 024/111] fix: imported httpx in sqsTrigger. --- cdk/sqsTrigger/src/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 5b3f3d3..104338f 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -4,6 +4,7 @@ import boto3 import psycopg2 import csv +import httpx from datetime import datetime from botocore.exceptions import ClientError From c651fb2b859f109ff0f2624139cdf83394da3edc Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 18:06:31 -0800 Subject: [PATCH 025/111] fix: updated handler in sqsTrigger to ensure event has body field. --- cdk/sqsTrigger/src/main.py | 48 ++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 104338f..96883ad 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -206,34 +206,48 @@ def handler(event, context): """ try: # Parse SQS event + if "Records" not in event: + logger.error("Event does not contain 'Records'.") + raise ValueError("Event does not contain 'Records'.") + for record in event.get("Records", []): - message_body = json.loads(record["body"]) - course_id = message_body.get("course_id") - instructor_email = message_body.get("instructor_email") - if not course_id: - logger.error("course_id is required in the message body") - continue + if "body" not in record: + logger.error("Record does not contain 'body'.") + continue # Skip this record - # Query chat logs - chat_logs = query_chat_logs(course_id) + try: + message_body = json.loads(record["body"]) + course_id = message_body.get("course_id") + instructor_email = message_body.get("instructor_email") - # Write to CSV - csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) + if not course_id or not instructor_email: + logger.error("course_id and instructor_email are required in the message body") + continue - # Upload to S3 - s3_uri = upload_to_s3(csv_path, csv_name) + # Query chat logs + chat_logs = query_chat_logs(course_id) - logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + # Write to CSV + csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) + + # Upload to S3 + s3_uri = upload_to_s3(csv_path, csv_name) + + logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + + # Send notification to AppSync + invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") + + except json.JSONDecodeError as e: + logger.error(f"Error decoding message body: {e}") + continue - # Send notification to AppSync - invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") - return { "statusCode": 200, "body": json.dumps({"message": "Chat logs processed successfully"}) } except Exception as e: - logger.error(f"Error in lambda_handler: {e}") + logger.error(f"Error in handler of sqsTrigger: {e}") return { "statusCode": 500, "body": json.dumps({"error": "Internal Server Error"}) From 1750e14f3969bc38ed57c7223f00c6cb669ebee9 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 18:20:09 -0800 Subject: [PATCH 026/111] fix: added logs to handler. --- cdk/sqsTrigger/src/main.py | 77 +++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 96883ad..f8789e8 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -141,7 +141,7 @@ def write_to_csv(data, course_id, instructor_email): return file_path, file_name except Exception as e: logger.error(f"Error writing to CSV: {e}") - raise + return None None def upload_to_s3(file_path, file_name): @@ -154,7 +154,7 @@ def upload_to_s3(file_path, file_name): return f"s3://{CHATLOGS_BUCKET}/{file_name}" except Exception as e: logger.error(f"Error uploading file to S3: {e}") - raise + return None def invoke_event_notification(course_id, instructor_email, message="Chat logs successfully uploaded"): """ @@ -198,7 +198,7 @@ def invoke_event_notification(course_id, instructor_email, message="Chat logs su except Exception as e: logging.error(f"Error publishing event to AppSync: {str(e)}") - raise + return None def handler(event, context): """ @@ -206,42 +206,51 @@ def handler(event, context): """ try: # Parse SQS event - if "Records" not in event: - logger.error("Event does not contain 'Records'.") - raise ValueError("Event does not contain 'Records'.") - for record in event.get("Records", []): - if "body" not in record: - logger.error("Record does not contain 'body'.") - continue # Skip this record - - try: - message_body = json.loads(record["body"]) - course_id = message_body.get("course_id") - instructor_email = message_body.get("instructor_email") - - if not course_id or not instructor_email: - logger.error("course_id and instructor_email are required in the message body") - continue - - # Query chat logs - chat_logs = query_chat_logs(course_id) - - # Write to CSV - csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) - - # Upload to S3 - s3_uri = upload_to_s3(csv_path, csv_name) + message_body = json.loads(record["body"]) + course_id = message_body.get("course_id") + instructor_email = message_body.get("instructor_email") + if not course_id or not instructor_email: + logger.error("course_id and instructor_email is required in the message body") + continue - logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + # Query chat logs + chat_logs = query_chat_logs(course_id) + if chat_logs is None: + logger.error("Failed to fetch chat logs") + return { + "statusCode": 500, + "body": json.dumps({"error": "Failed to fetch chat logs"}) + } - # Send notification to AppSync - invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") + # Write to CSV + csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) + if csv_path is None or csv_name is None: + logger.error("Failed to write to CSV") + return { + "statusCode": 500, + "body": json.dumps({"error": "Failed to write to CSV"}) + } - except json.JSONDecodeError as e: - logger.error(f"Error decoding message body: {e}") - continue + # Upload to S3 + s3_uri = upload_to_s3(csv_path, csv_name) + if s3_uri is None: + logger.error("Failed to upload to S3") + return { + "statusCode": 500, + "body": json.dumps({"error": "Failed to upload to S3"}) + } + logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") + # Send notification to AppSync + response = invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") + if response is None: + logger.error("Failed to send notification to AppSync") + return { + "statusCode": 500, + "body": json.dumps({"error": "Failed to send notification to AppSync"}) + } + return { "statusCode": 200, "body": json.dumps({"message": "Chat logs processed successfully"}) From a492a561e187685bf25ca89d5531b2e071b7dc3f Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 19 Dec 2024 18:26:55 -0800 Subject: [PATCH 027/111] fix: syntax issue. --- cdk/sqsTrigger/src/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index f8789e8..c901654 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -141,7 +141,7 @@ def write_to_csv(data, course_id, instructor_email): return file_path, file_name except Exception as e: logger.error(f"Error writing to CSV: {e}") - return None None + return None, None def upload_to_s3(file_path, file_name): From b6d5ae56ffde0f69fbf7844ff7ba531e2504c5c7 Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 20 Dec 2024 13:47:34 -0800 Subject: [PATCH 028/111] fix: removed redundant trigger from S3 Bucket on sqsTrigger. --- cdk/lib/api-gateway-stack.ts | 11 --- cdk/sqsTrigger/src/main.py | 147 +++++++++++++---------------------- 2 files changed, 54 insertions(+), 104 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 688ebf9..c8e97ea 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1565,17 +1565,6 @@ export class ApiGatewayStack extends cdk.Stack { }) ); - // Add the S3 event source trigger to the Lambda function - sqsTrigger.addEventSource( - new lambdaEventSources.S3EventSource(chatlogsBucket, { - events: [ - s3.EventType.OBJECT_CREATED, - s3.EventType.OBJECT_REMOVED, - s3.EventType.OBJECT_RESTORE_COMPLETED, - ], - }) - ); - // Grant access to Secret Manager sqsTrigger.addToRolePolicy( new iam.PolicyStatement({ diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index c901654..ba1c8b1 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -53,6 +53,7 @@ def connect_to_db(): connection_string = " ".join([f"{key}={value}" for key, value in connection_params.items()]) connection = psycopg2.connect(connection_string) logger.info("Connected to the database!") + print("Connected to the database!") except Exception as e: logger.error(f"Failed to connect to database: {e}") if connection: @@ -61,21 +62,19 @@ def connect_to_db(): raise return connection + def query_chat_logs(course_id): """ Queries the database to fetch chat logs for a given course_id. """ connection = connect_to_db() if connection is None: - logger.error("No database connection available.") - return { - "statusCode": 500, - "body": json.dumps("Database connection failed.") - } - + error_message = "Database connection is unavailable." + logger.error(error_message) + raise Exception(error_message) + try: cur = connection.cursor() - query = """ SELECT u.user_id, @@ -110,15 +109,17 @@ def query_chat_logs(course_id): """ cur.execute(query, (course_id,)) results = cur.fetchall() - logger.info(f"Fetched {len(results)} records for course_id: {course_id}") + logger.info(f"Fetched {len(results)} chat log records for course_id: {course_id}.") + print(f"Fetched {len(results)} chat log records for course_id: {course_id}.") cur.close() return results except Exception as e: if cur: cur.close() connection.rollback() - logger.error(f"Error querying chat logs: {e}") - return none + logger.error(f"Error querying chat logs for course_id {course_id}: {e}") + raise + def write_to_csv(data, course_id, instructor_email): """ @@ -130,36 +131,31 @@ def write_to_csv(data, course_id, instructor_email): try: with open(file_path, mode="w", newline="") as file: writer = csv.writer(file) - # Write header writer.writerow([ "user_id", "module_name", "concept_name", "session_id", "message", "sent_by_student", "competency_status", "timestamp" ]) - # Write rows writer.writerows(data) - logger.info(f"Data written to CSV file: {file_name}") + logger.info(f"CSV file created successfully: {file_path}") + print(f"CSV file created successfully: {file_path}") return file_path, file_name except Exception as e: - logger.error(f"Error writing to CSV: {e}") - return None, None + logger.error(f"Error writing to CSV file {file_name}: {e}") + raise def upload_to_s3(file_path, file_name): - """ - Uploads the file to the specified S3 bucket. - """ try: s3_client.upload_file(file_path, CHATLOGS_BUCKET, file_name) - logger.info(f"File uploaded to S3: s3://{CHATLOGS_BUCKET}/{file_name}") + logger.info(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{file_name}") + print(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{file_name}") return f"s3://{CHATLOGS_BUCKET}/{file_name}" except Exception as e: logger.error(f"Error uploading file to S3: {e}") - return None + raise + def invoke_event_notification(course_id, instructor_email, message="Chat logs successfully uploaded"): - """ - Publish a notification event to AppSync via HTTPX (directly to the AppSync API). - """ try: query = """ mutation sendNotification($message: String!, $course_id: String!, $instructor_email: String!) { @@ -170,18 +166,10 @@ def invoke_event_notification(course_id, instructor_email, message="Chat logs su } } """ - headers = { - "Content-Type": "application/json", - "Authorization": "API_KEY" - } - + headers = {"Content-Type": "application/json", "Authorization": "API_KEY"} payload = { "query": query, - "variables": { - "message": message, - "course_id": course_id, - "instructor_email": instructor_email - } + "variables": {"message": message, "course_id": course_id, "instructor_email": instructor_email} } # Send the request to AppSync @@ -189,75 +177,48 @@ def invoke_event_notification(course_id, instructor_email, message="Chat logs su response = client.post(APPSYNC_API_URL, headers=headers, json=payload) response_data = response.json() - logging.info(f"AppSync Response: {json.dumps(response_data, indent=2)}") if response.status_code != 200 or "errors" in response_data: + logger.error(f"Failed to send notification to AppSync: {response_data}") raise Exception(f"Failed to send notification: {response_data}") + logger.info(f"Notification sent successfully: {response_data}") print(f"Notification sent successfully: {response_data}") - return response_data["data"]["sendNotification"] - except Exception as e: - logging.error(f"Error publishing event to AppSync: {str(e)}") - return None + logger.error(f"Error invoking AppSync notification: {e}") + raise + def handler(event, context): - """ - Lambda entry point. - """ try: - # Parse SQS event - for record in event.get("Records", []): - message_body = json.loads(record["body"]) - course_id = message_body.get("course_id") - instructor_email = message_body.get("instructor_email") - if not course_id or not instructor_email: - logger.error("course_id and instructor_email is required in the message body") + if "Records" not in event: + logger.error("Invalid event format: missing 'Records'.") + raise ValueError("Event does not contain 'Records'.") + + for record in event["Records"]: + try: + message_body = json.loads(record["body"]) + course_id = message_body.get("course_id") + instructor_email = message_body.get("instructor_email") + + if not course_id or not instructor_email: + logger.error("Missing required parameters: course_id or instructor_email.") + continue + + chat_logs = query_chat_logs(course_id) + print("GOT chat_logs") + csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) + print("GOT got csv_path and csv_name") + s3_uri = upload_to_s3(csv_path, csv_name) + print("GOT s3_uri") + invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") + print("FINALLY SENT NOTIFICATION") + + except Exception as e: + logger.error(f"Error processing SQS message: {e}") continue - # Query chat logs - chat_logs = query_chat_logs(course_id) - if chat_logs is None: - logger.error("Failed to fetch chat logs") - return { - "statusCode": 500, - "body": json.dumps({"error": "Failed to fetch chat logs"}) - } - - # Write to CSV - csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) - if csv_path is None or csv_name is None: - logger.error("Failed to write to CSV") - return { - "statusCode": 500, - "body": json.dumps({"error": "Failed to write to CSV"}) - } + return {"statusCode": 200, "body": json.dumps({"message": "Processing completed successfully."})} - # Upload to S3 - s3_uri = upload_to_s3(csv_path, csv_name) - if s3_uri is None: - logger.error("Failed to upload to S3") - return { - "statusCode": 500, - "body": json.dumps({"error": "Failed to upload to S3"}) - } - logger.info(f"Chat logs successfully processed and uploaded to {s3_uri}") - - # Send notification to AppSync - response = invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") - if response is None: - logger.error("Failed to send notification to AppSync") - return { - "statusCode": 500, - "body": json.dumps({"error": "Failed to send notification to AppSync"}) - } - - return { - "statusCode": 200, - "body": json.dumps({"message": "Chat logs processed successfully"}) - } except Exception as e: - logger.error(f"Error in handler of sqsTrigger: {e}") - return { - "statusCode": 500, - "body": json.dumps({"error": "Internal Server Error"}) - } \ No newline at end of file + logger.error(f"Unhandled error in sqsTrigger handler: {e}") + return {"statusCode": 500, "body": json.dumps({"error": str(e)})} \ No newline at end of file From 3167a6f5100c0c517e2150bf0ebe6c825ea2b329 Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 20 Dec 2024 14:45:00 -0800 Subject: [PATCH 029/111] fix: updated eventNotification.py to match GraphQL Schema. --- cdk/lambda/eventNotification/eventNotification.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index 48cb730..d164210 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -2,23 +2,22 @@ import os import boto3 -APPSYNC_API_URL = os.environ["APPSYNC_API_URL"] -APPSYNC_API_ID = os.environ["APPSYNC_API_ID"] - def lambda_handler(event, context): print(f"Event Received: {json.dumps(event)}") try: # Extract arguments from the AppSync payload arguments = event.get("arguments", {}) - session_id = arguments.get("sessionId", "DefaultSessionId") + course_id = arguments.get("course_id", "DefaultCourseId") + instructor_email = arguments.get("instructor_email", "DefaultInstructorEmail") message = arguments.get("message", "Default message") # Log the extracted values for debugging - print(f"Extracted sessionId: {session_id}, message: {message}") + print(f"Extracted course_id: {course_id}, instructor_email: {instructor_email}, message: {message}") # Return the values back to AppSync return { - "sessionId": session_id, + "course_id": course_id, + "instructor_email": instructor_email, "message": message } From 3536925677c9140df8a3b60ba6143c2013be6707 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 2 Jan 2025 12:31:54 -0800 Subject: [PATCH 030/111] fix: updated path of file uploaded to S3 Bucket in Chat Logs Bucket. --- cdk/sqsTrigger/src/main.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index ba1c8b1..ec91bb6 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -126,9 +126,15 @@ def write_to_csv(data, course_id, instructor_email): Writes the queried data to a CSV file. """ timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") - file_name = f"{course_id}-{instructor_email}-{timestamp}.csv" - file_path = f"/tmp/{file_name}" + file_name = f"{timestamp}.csv" + file_dir = f"/tmp/{course_id}/{instructor_email}" + file_path = f"{file_dir}/{file_name}" + try: + # Ensure the directory exists (including nested directories) + os.makedirs(file_dir, exist_ok=True) + + # Write the data to the CSV file with open(file_path, mode="w", newline="") as file: writer = csv.writer(file) writer.writerow([ @@ -136,6 +142,7 @@ def write_to_csv(data, course_id, instructor_email): "message", "sent_by_student", "competency_status", "timestamp" ]) writer.writerows(data) + logger.info(f"CSV file created successfully: {file_path}") print(f"CSV file created successfully: {file_path}") return file_path, file_name @@ -144,12 +151,18 @@ def write_to_csv(data, course_id, instructor_email): raise -def upload_to_s3(file_path, file_name): +def upload_to_s3(file_path, course_id, instructor_email, file_name): + """ + Uploads the file to S3 with the specified path. + """ + # Construct the S3 key (path in the bucket) + s3_key = f"{course_id}/{instructor_email}/{file_name}" + try: - s3_client.upload_file(file_path, CHATLOGS_BUCKET, file_name) - logger.info(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{file_name}") - print(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{file_name}") - return f"s3://{CHATLOGS_BUCKET}/{file_name}" + s3_client.upload_file(file_path, CHATLOGS_BUCKET, s3_key) + logger.info(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{s3_key}") + print(f"File uploaded successfully to S3: s3://{CHATLOGS_BUCKET}/{s3_key}") + return f"s3://{CHATLOGS_BUCKET}/{s3_key}" except Exception as e: logger.error(f"Error uploading file to S3: {e}") raise @@ -208,7 +221,7 @@ def handler(event, context): print("GOT chat_logs") csv_path, csv_name = write_to_csv(chat_logs, course_id, instructor_email) print("GOT got csv_path and csv_name") - s3_uri = upload_to_s3(csv_path, csv_name) + s3_uri = upload_to_s3(csv_path, course_id, instructor_email, csv_name) print("GOT s3_uri") invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") print("FINALLY SENT NOTIFICATION") From 4d1f7874b7754fa300699ef8a4a64ba242f2d92c Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Thu, 2 Jan 2025 15:37:42 -0700 Subject: [PATCH 031/111] chat history page created with hash map structure --- frontend/package-lock.json | 11 +- frontend/package.json | 3 +- frontend/src/pages/instructor/ChatLogs.jsx | 235 ++++++++++++++++++ .../pages/instructor/InstructorHomepage.jsx | 24 +- .../pages/instructor/InstructorNewModule.jsx | 11 +- .../pages/instructor/InstructorSidebar.jsx | 14 +- 6 files changed, 281 insertions(+), 17 deletions(-) create mode 100644 frontend/src/pages/instructor/ChatLogs.jsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 96536f3..a9aeebb 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -40,7 +40,8 @@ "react-router-dom": "^6.24.1", "react-syntax-highlighter": "^15.5.0", "react-toastify": "^10.0.5", - "recharts": "^2.12.7" + "recharts": "^2.12.7", + "u": "^0.1.0" }, "devDependencies": { "@types/node": "^22.0.2", @@ -11114,6 +11115,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/u": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/u/-/u-0.1.0.tgz", + "integrity": "sha512-johjpjhqy9UE97vjDFq8kW6F1777vIz0i+AZXzisbW6yn6Aa8iX3V7bW4W6GzI7sbw3HjYuvN2yMx2k6QwX5ng==", + "engines": { + "node": "*" + } + }, "node_modules/ua-parser-js": { "version": "0.7.38", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", diff --git a/frontend/package.json b/frontend/package.json index 499ae1c..e899ef1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,7 +42,8 @@ "react-router-dom": "^6.24.1", "react-syntax-highlighter": "^15.5.0", "react-toastify": "^10.0.5", - "recharts": "^2.12.7" + "recharts": "^2.12.7", + "u": "^0.1.0" }, "devDependencies": { "@types/node": "^22.0.2", diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx new file mode 100644 index 0000000..7c12183 --- /dev/null +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -0,0 +1,235 @@ +import { + Typography, + Box, + Toolbar, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Paper, + Button, + TableFooter, + TablePagination, +} from "@mui/material"; +import { useState, useEffect } from "react"; +import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; + +function courseTitleCase(str) { + if (typeof str !== "string") { + return str; + } + const words = str.split(" "); + return words + .map((word, index) => { + if (index === 0) { + return word.toUpperCase(); + } else { + return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); + } + }) + .join(" "); +} + +const ChatLogs = ({ courseName }) => { + const [logs, setLogs] = useState([]); + const [page, setPage] = useState(0); + const [rowsPerPage, setRowsPerPage] = useState(5); + const [loading, setLoading] = useState(false); + + const fetchChatLogs = async () => { + try { + setLoading(true); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chat_logs`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + instructor_email: email, + }), + } + ); + + if (response.ok) { + const data = await response.json(); + setLogs(Object.entries(data.logs || {})); // Convert hashmap to array for rendering + } else { + console.error("Failed to fetch chat logs:", response.statusText); + } + } catch (error) { + console.error("Error fetching chat logs:", error); + } finally { + setLoading(false); + } + }; + + const generateChatLogs = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/generate_chat_logs`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + instructor_email: email, + }), + } + ); + + if (response.ok) { + alert("Chat logs generation started!"); + fetchChatLogs(); // Refresh the logs after generating + } else { + console.error("Failed to generate chat logs:", response.statusText); + } + } catch (error) { + console.error("Error generating chat logs:", error); + } + }; + + const handleDownload = async (url) => { + try { + const response = await fetch(url); + if (response.ok) { + const blob = await response.blob(); + const downloadUrl = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = downloadUrl; + a.download = "chat_logs.csv"; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + } else { + console.error("Failed to download file:", response.statusText); + } + } catch (error) { + console.error("Error downloading file:", error); + } + }; + + useEffect(() => { + fetchChatLogs(); + }, []); + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + return ( + + + + + {courseTitleCase(courseName)} Chat History + + + + + + + {!loading ? ( + <> + + + Generated Time + Action + + + + {logs.length > 0 ? ( + logs + .slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + .map(([time, url], index) => ( + + {time} + + + + + )) + ) : ( + + + No chat logs available + + + )} + + + ) : ( + + + Loading... + + + )} + + + + + +
+
+
+
+ ); +}; + +export default ChatLogs; diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index 8f89926..537a84e 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -37,7 +37,9 @@ import StudentDetails from "./StudentDetails"; import InstructorNewConcept from "./InstructorNewConcept"; import InstructorConcepts from "./InstructorConcepts"; import InstructorEditConcept from "./InstructorEditConcept"; +import ChatLogs from "./ChatLogs"; // Import ChatLogs import { UserContext } from "../../App"; + function titleCase(str) { if (typeof str !== "string") { return str; @@ -72,12 +74,18 @@ const CourseDetails = () => { ); case "InstructorEditConcepts": return ( - + ); case "PromptSettings": return ; case "ViewStudents": return ; + case "ChatLogs": // Add ChatLogs case + return ; default: return ( @@ -126,11 +134,10 @@ const InstructorHomepage = () => { const fetchCourses = async () => { try { const session = await fetchAuthSession(); - var token = session.tokens.idToken + var token = session.tokens.idToken; const { email } = await fetchUserAttributes(); const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT + `${import.meta.env.VITE_API_ENDPOINT }instructor/courses?email=${encodeURIComponent(email)}`, { method: "GET", @@ -230,8 +237,13 @@ const InstructorHomepage = () => { onChange={handleSearchChange} sx={{ width: "100%", marginBottom: 2 }} /> - + diff --git a/frontend/src/pages/instructor/InstructorNewModule.jsx b/frontend/src/pages/instructor/InstructorNewModule.jsx index 323e210..2e73a8a 100644 --- a/frontend/src/pages/instructor/InstructorNewModule.jsx +++ b/frontend/src/pages/instructor/InstructorNewModule.jsx @@ -24,7 +24,7 @@ function titleCase(str) { if (typeof str !== 'string') { return str; } - return str.toLowerCase().split(' ').map(function (word) { + return str.toLowerCase().split(' ').map(function(word) { return word.charAt(0).toUpperCase() + word.slice(1); }).join(' '); } @@ -72,7 +72,8 @@ export const InstructorNewModule = ({ courseId }) => { const session = await fetchAuthSession(); var token = session.tokens.idToken const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT + `${ + import.meta.env.VITE_API_ENDPOINT }instructor/view_concepts?course_id=${encodeURIComponent(course_id)}`, { method: "GET", @@ -107,7 +108,8 @@ export const InstructorNewModule = ({ courseId }) => { const fileType = getFileType(file.name); const fileName = cleanFileName(removeFileExtension(file.name)); return fetch( - `${import.meta.env.VITE_API_ENDPOINT + `${ + import.meta.env.VITE_API_ENDPOINT }instructor/generate_presigned_url?course_id=${encodeURIComponent( course_id )}&module_id=${encodeURIComponent( @@ -181,7 +183,8 @@ export const InstructorNewModule = ({ courseId }) => { const token = session.tokens.idToken const { email } = await fetchUserAttributes(); const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT + `${ + import.meta.env.VITE_API_ENDPOINT }instructor/create_module?course_id=${encodeURIComponent( course_id )}&concept_id=${encodeURIComponent( diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index bd8a485..b4ef6f4 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -15,16 +15,13 @@ import ViewTimelineIcon from "@mui/icons-material/ViewTimeline"; import EditIcon from "@mui/icons-material/Edit"; import PsychologyIcon from "@mui/icons-material/Psychology"; import GroupIcon from "@mui/icons-material/Group"; +import DescriptionIcon from "@mui/icons-material/Description"; const InstructorSidebar = ({ setSelectedComponent }) => { const navigate = useNavigate(); const handleNavigation = (component) => { - if (component === "InstructorAllCourses") { - navigate("/home"); - } else { - setSelectedComponent(component); - } + setSelectedComponent(component); }; return ( @@ -92,6 +89,13 @@ const InstructorSidebar = ({ setSelectedComponent }) => { + + handleNavigation("ChatLogs")}> + + + + + From c8d818c699513d894681af2d2f139c8372cbcf49 Mon Sep 17 00:00:00 2001 From: Aman Date: Mon, 6 Jan 2025 10:45:15 -0800 Subject: [PATCH 032/111] feat: added table in database to keep track of notifications for chatlog CSVs. --- cdk/lambda/initializer/initializer.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cdk/lambda/initializer/initializer.py b/cdk/lambda/initializer/initializer.py index 574d774..04a950e 100644 --- a/cdk/lambda/initializer/initializer.py +++ b/cdk/lambda/initializer/initializer.py @@ -143,6 +143,13 @@ def handler(event, context): "engagement_details" text ); + CREATE TABLE IF NOT EXISTS "chatlogs_notifications" ( + "id" uuid PRIMARY KEY DEFAULT (uuid_generate_v4()), + "course_id" uuid NOT NULL, + "instructor_email" varchar NOT NULL, + "completion" boolean DEFAULT FALSE + ); + ALTER TABLE "User_Engagement_Log" ADD FOREIGN KEY ("enrolment_id") REFERENCES "Enrolments" ("enrolment_id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "User_Engagement_Log" ADD FOREIGN KEY ("user_id") REFERENCES "Users" ("user_id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "User_Engagement_Log" ADD FOREIGN KEY ("course_id") REFERENCES "Courses" ("course_id") ON DELETE CASCADE ON UPDATE CASCADE; @@ -164,6 +171,9 @@ def handler(event, context): ALTER TABLE "Messages" ADD FOREIGN KEY ("session_id") REFERENCES "Sessions" ("session_id") ON DELETE CASCADE ON UPDATE CASCADE; + ALTER TABLE "chatlogs_notifications" ADD FOREIGN KEY ("course_id") REFERENCES "Courses" ("course_id") ON DELETE CASCADE ON UPDATE CASCADE; + ALTER TABLE "chatlogs_notifications" ADD FOREIGN KEY ("instructor_email") REFERENCES "Users" ("user_email") ON DELETE CASCADE ON UPDATE CASCADE; + DO $$ BEGIN IF NOT EXISTS ( From 1b779db44bd3406ef5d0e7afda4cfe810aafa819 Mon Sep 17 00:00:00 2001 From: Aman Date: Mon, 6 Jan 2025 11:10:52 -0800 Subject: [PATCH 033/111] fix: moved sqsFunction to use lib.js to conect to the database. --- cdk/lambda/{sqsFunction => lib}/sqsFunction.js | 0 cdk/lib/api-gateway-stack.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename cdk/lambda/{sqsFunction => lib}/sqsFunction.js (100%) diff --git a/cdk/lambda/sqsFunction/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js similarity index 100% rename from cdk/lambda/sqsFunction/sqsFunction.js rename to cdk/lambda/lib/sqsFunction.js diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index c8e97ea..c040c1d 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1451,7 +1451,7 @@ export class ApiGatewayStack extends cdk.Stack { */ const sqsFunction = new lambda.Function(this, `${id}-sqsFunction`, { runtime: lambda.Runtime.NODEJS_20_X, - code: lambda.Code.fromAsset("lambda/sqsFunction"), + code: lambda.Code.fromAsset("lambda/lib"), handler: "sqsFunction.handler", timeout: Duration.seconds(300), environment: { From a3d27b880caf2c46332ee97b967510b4173a94f2 Mon Sep 17 00:00:00 2001 From: Aman Date: Mon, 6 Jan 2025 11:15:50 -0800 Subject: [PATCH 034/111] feat: sqsFunction populates chatlog_notifications table with completion set to false. --- cdk/lambda/lib/sqsFunction.js | 25 +++++++++++++++++++++++-- cdk/lib/api-gateway-stack.ts | 2 ++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/cdk/lambda/lib/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js index a950cc2..e16bd4f 100644 --- a/cdk/lambda/lib/sqsFunction.js +++ b/cdk/lambda/lib/sqsFunction.js @@ -1,11 +1,16 @@ const { SQSClient, SendMessageCommand } = require("@aws-sdk/client-sqs"); +const { initializeConnection } = require("./lib.js"); const sqsClient = new SQSClient({ region: process.env.AWS_REGION }); +const { SM_DB_CREDENTIALS, RDS_PROXY_ENDPOINT } = process.env; +let sqlConnection = global.sqlConnection; exports.handler = async (event) => { try { + // Parse the incoming event const { instructor_email, course_id } = JSON.parse(event.body); + // Validate input if (!instructor_email || !course_id) { return { statusCode: 400, @@ -13,6 +18,20 @@ exports.handler = async (event) => { }; } + // Initialize database connection if not already established + if (!sqlConnection) { + await initializeConnection(SM_DB_CREDENTIALS, RDS_PROXY_ENDPOINT); + sqlConnection = global.sqlConnection; + } + + // Insert the record into the chatlogs_notifications table + await sqlConnection` + INSERT INTO "chatlogs_notifications" ("course_id", "instructor_email", "completion") + VALUES (${course_id}, ${instructor_email}, false) + ON CONFLICT DO NOTHING; + `; + + // Prepare the SQS message const params = { QueueUrl: process.env.SQS_QUEUE_URL, MessageBody: JSON.stringify({ instructor_email, course_id }), @@ -20,15 +39,17 @@ exports.handler = async (event) => { MessageDeduplicationId: `${instructor_email}-${course_id}`, // Deduplication ID }; + // Send the message to SQS const command = new SendMessageCommand(params); await sqsClient.send(command); + // Return success response return { statusCode: 200, - body: JSON.stringify({ message: "Job submitted successfully" }), + body: JSON.stringify({ message: "Job submitted and notification logged successfully" }), }; } catch (error) { - console.error("Error submitting job to SQS:", error); + console.error("Error processing SQS function:", error); return { statusCode: 500, body: JSON.stringify({ error: "Internal Server Error" }), diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index c040c1d..a3868db 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1456,6 +1456,8 @@ export class ApiGatewayStack extends cdk.Stack { timeout: Duration.seconds(300), environment: { SQS_QUEUE_URL: messagesQueue.queueUrl, + SM_DB_CREDENTIALS: db.secretPathTableCreator.secretName, + RDS_PROXY_ENDPOINT: db.rdsProxyEndpointTableCreator, }, functionName: `${id}-sqsFunction`, memorySize: 128, From 0c7ee7dca34af55b0f0b513db5a0e0c483b0560f Mon Sep 17 00:00:00 2001 From: Sinclair Date: Mon, 6 Jan 2025 14:34:25 -0800 Subject: [PATCH 035/111] appsync subscription on frontend for chatlog page --- frontend/package-lock.json | 22 ++--- frontend/package.json | 4 +- frontend/src/pages/instructor/ChatLogs.jsx | 95 ++++++++++++++++++++-- 3 files changed, 103 insertions(+), 18 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a9aeebb..8a12e59 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,7 +17,7 @@ "@aws-sdk/types": "^3.609.0", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", - "@mui/icons-material": "^5.16.0", + "@mui/icons-material": "^5.16.13", "@mui/material": "^5.15.21", "@smithy/eventstream-codec": "^3.1.2", "@smithy/protocol-http": "^4.1.0", @@ -36,7 +36,7 @@ "react": "^18.3.1", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.3.1", - "react-icons": "^5.2.1", + "react-icons": "^4.9.0", "react-router-dom": "^6.24.1", "react-syntax-highlighter": "^15.5.0", "react-toastify": "^10.0.5", @@ -3982,9 +3982,10 @@ } }, "node_modules/@mui/icons-material": { - "version": "5.16.7", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.7.tgz", - "integrity": "sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==", + "version": "5.16.13", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.13.tgz", + "integrity": "sha512-aWyOgGDEqj37m3K4F6qUfn7JrEccwiDynJtGQMFbxp94EqyGwO13TKcZ4O8aHdwW3tG63hpbION8KyUoBWI4JQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9" }, @@ -3997,8 +3998,8 @@ }, "peerDependencies": { "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -10005,9 +10006,10 @@ } }, "node_modules/react-icons": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", - "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.9.0.tgz", + "integrity": "sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==", + "license": "MIT", "peerDependencies": { "react": "*" } diff --git a/frontend/package.json b/frontend/package.json index e899ef1..436a29c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,7 +19,7 @@ "@aws-sdk/types": "^3.609.0", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", - "@mui/icons-material": "^5.16.0", + "@mui/icons-material": "^5.16.13", "@mui/material": "^5.15.21", "@smithy/eventstream-codec": "^3.1.2", "@smithy/protocol-http": "^4.1.0", @@ -38,7 +38,7 @@ "react": "^18.3.1", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18.3.1", - "react-icons": "^5.2.1", + "react-icons": "^4.9.0", "react-router-dom": "^6.24.1", "react-syntax-highlighter": "^15.5.0", "react-toastify": "^10.0.5", diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 7c12183..7a7f234 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -13,9 +13,10 @@ import { TableFooter, TablePagination, } from "@mui/material"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; +// Function to capitalize course title case function courseTitleCase(str) { if (typeof str !== "string") { return str; @@ -32,11 +33,40 @@ function courseTitleCase(str) { .join(" "); } +// Function to dynamically construct WebSocket URL +const constructWebSocketUrl = () => { + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; +}; + const ChatLogs = ({ courseName }) => { const [logs, setLogs] = useState([]); const [page, setPage] = useState(0); const [rowsPerPage, setRowsPerPage] = useState(5); const [loading, setLoading] = useState(false); + const [webSocket, setWebSocket] = useState(null); + + const messagesEndRef = useRef(null); const fetchChatLogs = async () => { try { @@ -79,7 +109,7 @@ const ChatLogs = ({ courseName }) => { const { email } = await fetchUserAttributes(); const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/generate_chat_logs`, + `${import.meta.env.VITE_API_ENDPOINT}generate-chat-logs`, { method: "POST", headers: { @@ -88,18 +118,18 @@ const ChatLogs = ({ courseName }) => { }, body: JSON.stringify({ instructor_email: email, + course_id, }), } ); if (response.ok) { - alert("Chat logs generation started!"); - fetchChatLogs(); // Refresh the logs after generating + alert("CSV generation initiated. You'll be notified once it's ready."); } else { - console.error("Failed to generate chat logs:", response.statusText); + console.error("Failed to initiate CSV generation:", response.statusText); } } catch (error) { - console.error("Error generating chat logs:", error); + console.error("Error initiating CSV generation:", error); } }; @@ -123,8 +153,61 @@ const ChatLogs = ({ courseName }) => { } }; + const openWebSocket = () => { + const wsUrl = constructWebSocketUrl(); + const ws = new WebSocket(wsUrl, "graphql-ws"); + + ws.onopen = () => { + console.log("WebSocket connection established"); + + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + const subscriptionMessage = { + id: "1", // Unique ID for the subscription + type: "start", + payload: { + data: `{"query":"subscription OnNotify { onNotify { message } }"}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + }, + }, + }, + }; + ws.send(JSON.stringify(subscriptionMessage)); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("Received:", message); + + if (message.type === "data" && message.payload?.data?.onNotify) { + alert(`Notification: ${message.payload.data.onNotify.message}`); + fetchChatLogs(); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + + setWebSocket(ws); + }; + useEffect(() => { fetchChatLogs(); + openWebSocket(); + + return () => { + if (webSocket) { + webSocket.close(); + } + }; }, []); const handleChangePage = (event, newPage) => { From 7c40416257eada13f0c27168b3e8d7a974b678ab Mon Sep 17 00:00:00 2001 From: Sinclair Date: Mon, 6 Jan 2025 14:40:39 -0800 Subject: [PATCH 036/111] added toast for notfications for generated logs --- frontend/src/pages/instructor/ChatLogs.jsx | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 7a7f234..cddd1b9 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -15,6 +15,8 @@ import { } from "@mui/material"; import { useState, useEffect, useRef } from "react"; import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; +import { toast, ToastContainer } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; // Function to capitalize course title case function courseTitleCase(str) { @@ -124,12 +126,28 @@ const ChatLogs = ({ courseName }) => { ); if (response.ok) { - alert("CSV generation initiated. You'll be notified once it's ready."); + toast.success("Generating Chat Logs...", { + position: "top-center", + autoClose: 1000, + hideProgressBar: true, + theme: "colored", + }); } else { - console.error("Failed to initiate CSV generation:", response.statusText); + toast.error("Failed to generate chat logs", { + position: "top-center", + autoClose: 1000, + hideProgressBar: true, + theme: "colored", + }); } } catch (error) { console.error("Error initiating CSV generation:", error); + toast.error("Failed to generate chat logs", { + position: "top-center", + autoClose: 1000, + hideProgressBar: true, + theme: "colored", + }); } }; @@ -183,7 +201,12 @@ const ChatLogs = ({ courseName }) => { console.log("Received:", message); if (message.type === "data" && message.payload?.data?.onNotify) { - alert(`Notification: ${message.payload.data.onNotify.message}`); + toast.success("Ready to download requested logs", { + position: "top-center", + autoClose: 1000, + hideProgressBar: true, + theme: "colored", + }); fetchChatLogs(); } }; @@ -222,6 +245,7 @@ const ChatLogs = ({ courseName }) => { return ( + Date: Wed, 8 Jan 2025 13:46:25 -0800 Subject: [PATCH 037/111] page nav fix for Chatlogs --- frontend/src/pages/instructor/InstructorSidebar.jsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index b4ef6f4..ebba29f 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -9,6 +9,7 @@ import { ListItemText, Divider, Box, + Badge, } from "@mui/material"; import HomeIcon from "@mui/icons-material/Home"; import ViewTimelineIcon from "@mui/icons-material/ViewTimeline"; @@ -17,7 +18,7 @@ import PsychologyIcon from "@mui/icons-material/Psychology"; import GroupIcon from "@mui/icons-material/Group"; import DescriptionIcon from "@mui/icons-material/Description"; -const InstructorSidebar = ({ setSelectedComponent }) => { +const InstructorSidebar = ({ setSelectedComponent, hasChatLogNotification }) => { const navigate = useNavigate(); const handleNavigation = (component) => { @@ -92,7 +93,14 @@ const InstructorSidebar = ({ setSelectedComponent }) => { handleNavigation("ChatLogs")}> - + + + From 4e73123e26d63e70dda107c4d286a4073cb24974 Mon Sep 17 00:00:00 2001 From: Sinclair Date: Mon, 13 Jan 2025 13:58:16 -0800 Subject: [PATCH 038/111] notification icon on front end --- cdk/package-lock.json | 14 +++++++++ cdk/package.json | 1 + frontend/src/pages/instructor/ChatLogs.jsx | 2 +- .../pages/instructor/InstructorSidebar.jsx | 30 +++++++++++++++---- package-lock.json | 25 ++++++++++++++++ package.json | 5 ++++ 6 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/cdk/package-lock.json b/cdk/package-lock.json index 2e35b0f..692797c 100644 --- a/cdk/package-lock.json +++ b/cdk/package-lock.json @@ -14,6 +14,7 @@ "aws-cdk-lib": "^2.146.0", "aws-sdk": "^2.1692.0", "constructs": "^10.0.0", + "postgres": "^3.4.5", "source-map-support": "^0.5.21", "yaml": "^2.4.5" }, @@ -4882,6 +4883,19 @@ "node": ">= 0.4" } }, + "node_modules/postgres": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.5.tgz", + "integrity": "sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==", + "license": "Unlicense", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", diff --git a/cdk/package.json b/cdk/package.json index 55711de..7d8cb80 100644 --- a/cdk/package.json +++ b/cdk/package.json @@ -26,6 +26,7 @@ "aws-cdk-lib": "^2.146.0", "aws-sdk": "^2.1692.0", "constructs": "^10.0.0", + "postgres": "^3.4.5", "source-map-support": "^0.5.21", "yaml": "^2.4.5" } diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index cddd1b9..27306d7 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -78,7 +78,7 @@ const ChatLogs = ({ courseName }) => { const { email } = await fetchUserAttributes(); const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chat_logs`, + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, { method: "POST", headers: { diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index ebba29f..856292c 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; // MUI import { @@ -18,13 +18,34 @@ import PsychologyIcon from "@mui/icons-material/Psychology"; import GroupIcon from "@mui/icons-material/Group"; import DescriptionIcon from "@mui/icons-material/Description"; -const InstructorSidebar = ({ setSelectedComponent, hasChatLogNotification }) => { +const InstructorSidebar = ({ setSelectedComponent, onClearChatLogNotification }) => { const navigate = useNavigate(); + const [hasNewNotification, setHasNewNotification] = useState(false); const handleNavigation = (component) => { - setSelectedComponent(component); + if (component === "InstructorAllCourses") { + navigate("/home"); + } else { + setSelectedComponent(component); + if (component === "ChatLogs") { + onClearChatLogNotification?.(); + setHasNewNotification(false); // Clear notification on visit + + // Add logic here for setting the notification checked boolean to true + + } + } }; + useEffect(() => { + // Simulate receiving a notification + const timer = setTimeout(() => { + setHasNewNotification(true); + }, 1000); // Notification appears after 1 second + + return () => clearTimeout(timer); + }, []); + return ( diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..022e0b4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25 @@ +{ + "name": "AI-Learning-Assistant", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "postgres": "^3.4.5" + } + }, + "node_modules/postgres": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.5.tgz", + "integrity": "sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==", + "license": "Unlicense", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..33b6f8c --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "postgres": "^3.4.5" + } +} From aba5a0939f80014461b027db418e698615243479 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Mon, 13 Jan 2025 14:03:49 -0800 Subject: [PATCH 039/111] fixed layers for sqsFunction --- cdk/lib/api-gateway-stack.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index a3868db..30bb88c 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1461,6 +1461,7 @@ export class ApiGatewayStack extends cdk.Stack { }, functionName: `${id}-sqsFunction`, memorySize: 128, + layers: [postgres] }); messagesQueue.grantSendMessages(sqsFunction); From 15c1602fed4e37df8cf927f9cbd1ffacb51fb7c0 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Thu, 16 Jan 2025 15:39:28 -0800 Subject: [PATCH 040/111] VPC stack adds IGW route to public subnet, Database stack updates RDS inbound rules with private subnet CIDRs, updated DynamoDB actions in Text Generation Lambda --- cdk/lib/api-gateway-stack.ts | 1 + cdk/lib/database-stack.ts | 19 +++++++++++++++---- cdk/lib/vpc-stack.ts | 31 ++++++++++++++++--------------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 30bb88c..d7d0521 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -983,6 +983,7 @@ export class ApiGatewayStack extends cdk.Stack { "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", + "dynamodb:UpdateItem", ], resources: [`arn:aws:dynamodb:${this.region}:${this.account}:table/*`], }) diff --git a/cdk/lib/database-stack.ts b/cdk/lib/database-stack.ts index e6ed952..3e67914 100644 --- a/cdk/lib/database-stack.ts +++ b/cdk/lib/database-stack.ts @@ -100,12 +100,23 @@ export class DatabaseStack extends Stack { parameterGroup: parameterGroup }); + // Add CIDR ranges of private subnets to inbound rules of RDS + const dbSecurityGroup = this.dbInstance.connections.securityGroups[0]; + vpcStack.privateSubnetsCidrStrings.forEach((cidr) => { + dbSecurityGroup.addIngressRule( + ec2.Peer.ipv4(cidr), + ec2.Port.tcp(5432), + `Allow PostgreSQL traffic from private subnet CIDR range ${cidr}` + ); + }); + + // Add CIDR ranges of public subnets to inbound rules of RDS this.dbInstance.connections.securityGroups.forEach(function (securityGroup) { - // 10.0.0.0/16 match the cidr range in vpc stack + // Allow Postgres access in VPC securityGroup.addIngressRule( - ec2.Peer.ipv4(vpcStack.vpcCidrString), - ec2.Port.tcp(5432), - "Postgres Ingress" + ec2.Peer.ipv4(vpcStack.vpcCidrString), + ec2.Port.tcp(5432), + "Allow PostgreSQL traffic from public subnets" ); }); diff --git a/cdk/lib/vpc-stack.ts b/cdk/lib/vpc-stack.ts index 87cb754..71b1ffb 100644 --- a/cdk/lib/vpc-stack.ts +++ b/cdk/lib/vpc-stack.ts @@ -7,6 +7,8 @@ import { Fn } from 'aws-cdk-lib'; export class VpcStack extends Stack { public readonly vpc: ec2.Vpc; public readonly vpcCidrString: string; + public readonly privateSubnetsCidrStrings: string[]; + constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); @@ -51,6 +53,13 @@ export class VpcStack extends Stack { vpcCidrBlock: Fn.importValue(`${AWSControlTowerStackSet}-VPCCIDR`), }) as ec2.Vpc; + // Extract CIDR ranges from the private subnets + this.privateSubnetsCidrStrings = [ + Fn.importValue(`${AWSControlTowerStackSet}-PrivateSubnet1ACIDR`), + Fn.importValue(`${AWSControlTowerStackSet}-PrivateSubnet2ACIDR`), + Fn.importValue(`${AWSControlTowerStackSet}-PrivateSubnet3ACIDR`), + ]; + // Create a public subnet const publicSubnet = new ec2.Subnet(this, `PublicSubnet`, { vpcId: this.vpc.vpcId, @@ -66,28 +75,20 @@ export class VpcStack extends Stack { internetGatewayId: internetGateway.ref, }); - // Create a route table for the public subnet - const publicRouteTable = new ec2.CfnRouteTable(this, `PublicRouteTable`, { - vpcId: this.vpc.vpcId, - }); - - // Associate the public subnet with the new route table - new ec2.CfnSubnetRouteTableAssociation(this, `PublicSubnetAssociation`, { - subnetId: publicSubnet.subnetId, - routeTableId: publicRouteTable.ref, - }); - // Add a NAT Gateway in the public subnet const natGateway = new ec2.CfnNatGateway(this, `NatGateway`, { subnetId: publicSubnet.subnetId, allocationId: new ec2.CfnEIP(this, 'EIP', {}).attrAllocationId, }); - // Create a route to the Internet Gateway + // Use the route table associated with the public subnet + const publicRouteTableId = publicSubnet.routeTable.routeTableId; + + // Add a route to the Internet Gateway in the existing public route table new ec2.CfnRoute(this, `PublicRoute`, { - routeTableId: publicRouteTable.ref, - destinationCidrBlock: '0.0.0.0/0', - gatewayId: internetGateway.ref, + routeTableId: publicRouteTableId, + destinationCidrBlock: '0.0.0.0/0', + gatewayId: internetGateway.ref, }); // Update route table for private subnets From cb9128c677f0f3dab5751a86e7771f6074342522 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 01:15:49 -0800 Subject: [PATCH 041/111] fix: Added check to see if privateSubnetsCidrStrings is empty in Database stacks. --- cdk/lib/database-stack.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cdk/lib/database-stack.ts b/cdk/lib/database-stack.ts index 3e67914..d7789bf 100644 --- a/cdk/lib/database-stack.ts +++ b/cdk/lib/database-stack.ts @@ -102,13 +102,17 @@ export class DatabaseStack extends Stack { // Add CIDR ranges of private subnets to inbound rules of RDS const dbSecurityGroup = this.dbInstance.connections.securityGroups[0]; - vpcStack.privateSubnetsCidrStrings.forEach((cidr) => { - dbSecurityGroup.addIngressRule( - ec2.Peer.ipv4(cidr), - ec2.Port.tcp(5432), - `Allow PostgreSQL traffic from private subnet CIDR range ${cidr}` - ); - }); + if (vpcStack.privateSubnetsCidrStrings && vpcStack.privateSubnetsCidrStrings.length > 0) { + vpcStack.privateSubnetsCidrStrings.forEach((cidr) => { + dbSecurityGroup.addIngressRule( + ec2.Peer.ipv4(cidr), + ec2.Port.tcp(5432), + `Allow PostgreSQL traffic from private subnet CIDR range ${cidr}` + ); + }); + } else { + console.log("Deploying with new VPC. No need to add private subnet CIDR ranges to inbound rules of RDS."); + } // Add CIDR ranges of public subnets to inbound rules of RDS this.dbInstance.connections.securityGroups.forEach(function (securityGroup) { From 8021f237ea09ca94c7ae77000e563f043c00ff15 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 01:35:11 -0800 Subject: [PATCH 042/111] fix: sqsFunction has proper permissions. --- cdk/lib/api-gateway-stack.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index d7d0521..ceb28c2 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1457,12 +1457,14 @@ export class ApiGatewayStack extends cdk.Stack { timeout: Duration.seconds(300), environment: { SQS_QUEUE_URL: messagesQueue.queueUrl, - SM_DB_CREDENTIALS: db.secretPathTableCreator.secretName, - RDS_PROXY_ENDPOINT: db.rdsProxyEndpointTableCreator, + SM_DB_CREDENTIALS: db.secretPathUser.secretName, + RDS_PROXY_ENDPOINT: db.rdsProxyEndpoint, }, + vpc: db.dbInstance.vpc, functionName: `${id}-sqsFunction`, memorySize: 128, - layers: [postgres] + layers: [postgres], + role: coglambdaRole, }); messagesQueue.grantSendMessages(sqsFunction); From 7b03454576f768accda6cf8696336532599de6ae Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 02:05:21 -0800 Subject: [PATCH 043/111] feaet: sqsTrigger updates completion status in database after chatlogs CSV is uploaded to S3 Bucket. --- cdk/sqsTrigger/src/main.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index ec91bb6..70cbe4e 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -167,6 +167,35 @@ def upload_to_s3(file_path, course_id, instructor_email, file_name): logger.error(f"Error uploading file to S3: {e}") raise +def update_completion_status(course_id, instructor_email): + """ + Updates the completion status to True in the chatlogs_notifications table. + """ + connection = connect_to_db() + if connection is None: + error_message = "Database connection is unavailable." + logger.error(error_message) + raise Exception(error_message) + + try: + cur = connection.cursor() + update_query = """ + UPDATE chatlogs_notifications + SET completion = TRUE + WHERE course_id = %s AND instructor_email = %s; + """ + cur.execute(update_query, (course_id, instructor_email)) + connection.commit() + cur.close() + logger.info(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}.") + print(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}.") + except Exception as e: + if cur: + cur.close() + connection.rollback() + logger.error(f"Error updating completion status for course_id {course_id}, instructor_email {instructor_email}: {e}") + raise + def invoke_event_notification(course_id, instructor_email, message="Chat logs successfully uploaded"): try: @@ -223,6 +252,8 @@ def handler(event, context): print("GOT got csv_path and csv_name") s3_uri = upload_to_s3(csv_path, course_id, instructor_email, csv_name) print("GOT s3_uri") + update_completion_status(course_id, instructor_email) + print("Updating completion status") invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") print("FINALLY SENT NOTIFICATION") From bb2e30bdf5ca6aacb4da4d251b8b1ea5991d4551 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 15:23:03 -0800 Subject: [PATCH 044/111] feat: front-end opens websocket with AppSync. --- .../src/pages/instructor/ViewStudents.jsx | 98 +++++++++++++++---- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index 7f5931c..cd05884 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -65,6 +65,29 @@ export const ViewStudents = ({ courseName, course_id }) => { const navigate = useNavigate(); const [allMessageData, setAllMessageData] = useState([]); + const constructWebSocketUrl = () => { + const tempUrl = process.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + }; + useEffect(() => { const fetchCode = async () => { try { @@ -159,8 +182,62 @@ export const ViewStudents = ({ courseName, course_id }) => { ); if (response.ok) { + console.log(response) const data = await response.json(); console.log("Job submitted successfully:", data); + + // Open WebSocket connection + const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL + const ws = new WebSocket(wsUrl, "graphql-ws"); + + // Handle WebSocket connection + ws.onopen = () => { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionMessage = { + id: "1", + type: "start", + payload: { + data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email) { message course_id instructor_email } }","variables":{"course_id":"${course_id}", "instructor_email":"${instructor_email}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(process.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + + // TODO: Update UI with the notification (e.g., toast notification, state update) + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + } else { console.error("Failed to submit job:", response.statusText); } @@ -169,27 +246,6 @@ export const ViewStudents = ({ courseName, course_id }) => { } }; - function downloadCSV(data) { - const headers = Object.keys(data[0]); - const csvRows = data.map((obj) => - headers - .map((header) => { - const value = obj[header]; - // Enclose the value in quotes and escape inner quotes - return `"${String(value).replace(/"/g, '""')}"`; - }) - .join(",") - ); - const csvContent = [headers.join(","), ...csvRows].join("\n"); - const blob = new Blob([csvContent], { type: "text/csv" }); - const link = document.createElement("a"); - link.href = URL.createObjectURL(blob); - link.download = "data.csv"; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - } - const handleGenerateAccessCode = async () => { try { const session = await fetchAuthSession(); From 1352d99555a07aa136515e2402f2dc1569d40ca3 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 16:28:07 -0800 Subject: [PATCH 045/111] fix: updated subscription to AppSync, sqsFunction sends headers in responses due to POST request. --- cdk/lambda/lib/sqsFunction.js | 15 +++++++++++++++ frontend/src/pages/instructor/ViewStudents.jsx | 6 +++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/cdk/lambda/lib/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js index e16bd4f..ed108d6 100644 --- a/cdk/lambda/lib/sqsFunction.js +++ b/cdk/lambda/lib/sqsFunction.js @@ -14,6 +14,11 @@ exports.handler = async (event) => { if (!instructor_email || !course_id) { return { statusCode: 400, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key", + "Access-Control-Allow-Methods": "OPTIONS,POST", + }, body: JSON.stringify({ error: "Missing instructor_email or course_id" }), }; } @@ -46,12 +51,22 @@ exports.handler = async (event) => { // Return success response return { statusCode: 200, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key", + "Access-Control-Allow-Methods": "OPTIONS,POST", + }, body: JSON.stringify({ message: "Job submitted and notification logged successfully" }), }; } catch (error) { console.error("Error processing SQS function:", error); return { statusCode: 500, + headers: { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key", + "Access-Control-Allow-Methods": "OPTIONS,POST", + }, body: JSON.stringify({ error: "Internal Server Error" }), }; } diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index cd05884..f0cf384 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -66,7 +66,7 @@ export const ViewStudents = ({ courseName, course_id }) => { const [allMessageData, setAllMessageData] = useState([]); const constructWebSocketUrl = () => { - const tempUrl = process.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL const apiUrl = tempUrl.replace("https://", "wss://"); const urlObj = new URL(apiUrl); const tmpObj = new URL(tempUrl); @@ -203,11 +203,11 @@ export const ViewStudents = ({ courseName, course_id }) => { id: "1", type: "start", payload: { - data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email) { message course_id instructor_email } }","variables":{"course_id":"${course_id}", "instructor_email":"${instructor_email}"}}`, + data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email) { message course_id instructor_email } }","variables":{"course_id":"${course_id}", "instructor_email":"${email}"}}`, extensions: { authorization: { Authorization: "API_KEY=", - host: new URL(process.env.VITE_GRAPHQL_WS_URL).hostname, + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, }, }, }, From ad92286c1014fa1984857859c1071888cd578d7b Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 18:43:25 -0800 Subject: [PATCH 046/111] feat: added state for button that downloads chatlogs, added endpoints to delete and check status of chatlogs being collected. SQS job gets triggered from front-end and notification is succesfully received. --- cdk/OpenAPI_Swagger_Definition.yaml | 134 +++++++++++++++++ cdk/lambda/lib/instructorFunction.js | 137 +++++++++--------- .../src/pages/instructor/ViewStudents.jsx | 89 +++++++++++- 3 files changed, 289 insertions(+), 71 deletions(-) diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 55465e5..9245bec 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -1679,6 +1679,68 @@ paths: passthroughBehavior: "when_no_match" httpMethod: "POST" type: "aws_proxy" + /instructor/remove_completed_notification: + options: + summary: CORS support + description: | + Enable CORS by returning correct headers + responses: + 200: + $ref: "#/components/responses/Success" + x-amazon-apigateway-integration: + type: mock + requestTemplates: + application/json: | + { + "statusCode" : 200 + } + responses: + default: + statusCode: "200" + responseParameters: + method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'" + method.response.header.Access-Control-Allow-Methods: "'*'" + method.response.header.Access-Control-Allow-Origin: "'*'" + responseTemplates: + application/json: | + {} + delete: + tags: + - Instructor + summary: Delete row from database since CSV file full of chatlogs has been completed and notification has been sent to front-end + operationId: instructor_delete_file_DELETE + parameters: + - in: query + name: course_id + required: true + description: ID of the course + schema: + type: string + - in: query + name: instructor_email + required: true + description: Email of the instructor + schema: + type: string + responses: + "200": + description: Notification deleted successfully + "400": + description: Bad Request + "401": + description: Unauthorized + "429": + description: Too Many Requests + "500": + description: Internal Server Error + security: + - instructorAuthorizer: [] + x-amazon-apigateway-integration: + uri: + Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${instructorFunction.Arn}/invocations" + passthroughBehavior: "when_no_match" + httpMethod: "POST" + type: "aws_proxy" /instructor/delete_file: options: summary: CORS support @@ -2968,6 +3030,78 @@ paths: passthroughBehavior: "when_no_match" httpMethod: "POST" type: "aws_proxy" + /instructor/check_notifications_status: + options: + summary: CORS support + description: | + Enable CORS by returning correct headers + responses: + 200: + $ref: "#/components/responses/Success" + x-amazon-apigateway-integration: + type: mock + requestTemplates: + application/json: | + { + "statusCode" : 200 + } + responses: + default: + statusCode: "200" + responseParameters: + method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'" + method.response.header.Access-Control-Allow-Methods: "'*'" + method.response.header.Access-Control-Allow-Origin: "'*'" + responseTemplates: + application/json: | + {} + get: + tags: + - Instructor + summary: Check the completion status for getting the chatlogs for a course requested by an instructor + operationId: instructor_check_notifications_status_GET + parameters: + - in: query + name: course_id + required: true + description: The ID of the course + schema: + type: string + - in: query + name: instructor_email + required: true + description: The email of the instructor + schema: + type: string + responses: + "200": + description: Prompt retrieved successfully + content: + application/json: + schema: + type: object + properties: + isEnabled: + type: Boolean + description: The status for getting the chatlogs for a course requested by an instructor + "400": + description: Bad Request + "404": + description: Course not found + "401": + description: Unauthorized + "429": + description: Too Many Requests + "500": + description: Internal Server Error + security: + - instructorAuthorizer: [] + x-amazon-apigateway-integration: + uri: + Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${instructorFunction.Arn}/invocations" + passthroughBehavior: "when_no_match" + httpMethod: "POST" + type: "aws_proxy" /instructor/get_prompt: options: summary: CORS support diff --git a/cdk/lambda/lib/instructorFunction.js b/cdk/lambda/lib/instructorFunction.js index 39264d5..8fcc76d 100644 --- a/cdk/lambda/lib/instructorFunction.js +++ b/cdk/lambda/lib/instructorFunction.js @@ -1183,75 +1183,74 @@ exports.handler = async (event) => { }); } break; - // case "GET /instructor/course_messages": - // if ( - // event.queryStringParameters != null && - // event.queryStringParameters.instructor_email && - // event.queryStringParameters.course_id - // ) { - // const { instructor_email, course_id } = event.queryStringParameters; - - // try { - // // Get the instructor user_id - // const instructorResult = await sqlConnection` - // SELECT user_id FROM "Users" WHERE user_email = ${instructor_email} LIMIT 1; - // `; - // const instructorId = instructorResult[0]?.user_id; - // if (!instructorId) { - // response.statusCode = 404; - // response.body = JSON.stringify({ error: "Instructor not found" }); - // break; - // } - // // Query to fetch messages, session, and other related data - // const data = await sqlConnection` - // SELECT - // u.user_id, - // cm.module_name, - // cc.concept_name, -- Added concept name - // s.session_id, - // m.message_content AS message, - // m.student_sent AS "sent by student", -- Renamed to "sent by student" - // CASE - // WHEN sm.module_score = 100 THEN 'complete' - // ELSE 'incomplete' - // END AS competency_status, - // m.time_sent AS timestamp - // FROM - // "Messages" m - // JOIN - // "Sessions" s ON m.session_id = s.session_id - // JOIN - // "Student_Modules" sm ON s.student_module_id = sm.student_module_id - // JOIN - // "Course_Modules" cm ON sm.course_module_id = cm.module_id - // JOIN - // "Course_Concepts" cc ON cm.concept_id = cc.concept_id - // JOIN - // "Enrolments" e ON sm.enrolment_id = e.enrolment_id - // JOIN - // "Users" u ON e.user_id = u.user_id - // WHERE - // cc.course_id = ${course_id} - // ORDER BY - // u.user_id, cm.module_name, s.session_id, m.time_sent; - - // `; - - // response.statusCode = 200; - // response.body = JSON.stringify(data); - // } catch (err) { - // response.statusCode = 500; - // console.error(err); - // response.body = JSON.stringify({ error: "Internal server error" }); - // } - // } else { - // response.statusCode = 400; - // response.body = JSON.stringify({ - // error: - // "instructor_email, student_email, and course_id are required", - // }); - // } - // break; + case "GET /instructor/check_notifications_status": + if ( + event.queryStringParameters != null && + event.queryStringParameters.instructor_email && + event.queryStringParameters.course_id + ) { + const { instructor_email, course_id } = event.queryStringParameters; + + try { + // Query to check the completion status in the chatlogs_notifications table + const notificationStatus = await sqlConnection` + SELECT completion + FROM "chatlogs_notifications" + WHERE instructor_email = ${instructor_email} AND course_id = ${course_id} + LIMIT 1; + `; + + // if exists, true or false, button should not be enabled + if (notificationStatus.length > 0) { + response.statusCode = 200; + response.body = JSON.stringify({ isEnabled: false }); + } else { + response.statusCode = 200; + response.body = JSON.stringify({ isEnabled: true }); + } + } catch (err) { + response.statusCode = 500; + console.error(err); + response.body = JSON.stringify({ error: "Internal server error" }); + } + } else { + response.statusCode = 400; + response.body = JSON.stringify({ error: "instructor_email and course_id are required." }); + } + break; + case "DELETE /instructor/remove_completed_notification": + if ( + event.queryStringParameters != null && + event.queryStringParameters.instructor_email && + event.queryStringParameters.course_id + ) { + const { instructor_email, course_id } = event.queryStringParameters; + + try { + // Delete the row from the chatlogs_notifications table + const deleteResult = await sqlConnection` + DELETE FROM "chatlogs_notifications" + WHERE instructor_email = ${instructor_email} AND course_id = ${course_id} + RETURNING *; + `; + + if (deleteResult.length > 0) { + response.statusCode = 200; + response.body = JSON.stringify({ message: "Notification removed successfully." }); + } else { + response.statusCode = 404; + response.body = JSON.stringify({ error: "No notification found for the given instructor and course." }); + } + } catch (err) { + response.statusCode = 500; + console.error(err); + response.body = JSON.stringify({ error: "Internal server error" }); + } + } else { + response.statusCode = 400; + response.body = JSON.stringify({ error: "instructor_email and course_id are required." }); + } + break; default: throw new Error(`Unsupported route: "${pathData}"`); } diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index f0cf384..fef456d 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -17,6 +17,7 @@ import { import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; +import { v4 as uuidv4 } from 'uuid'; // populate with dummy data const createData = (name, email) => { @@ -61,9 +62,9 @@ export const ViewStudents = ({ courseName, course_id }) => { const [rowsPerPage, setRowsPerPage] = useState(5); const [loading, setLoading] = useState(false); const [accessCode, setAccessCode] = useState("loading..."); + const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); const navigate = useNavigate(); - const [allMessageData, setAllMessageData] = useState([]); const constructWebSocketUrl = () => { const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL @@ -88,6 +89,73 @@ export const ViewStudents = ({ courseName, course_id }) => { return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; }; + const checkNotificationStatus = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${ + import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + if (response.ok) { + const data = await response.json(); + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); + } else { + console.error("Failed to fetch notification status:", response.statusText); + } + } catch (error) { + console.error("Error checking notification status:", error); + } + }; + + useEffect(() => { + checkNotificationStatus(); + }, [course_id]); + + const removeCompletedNotification = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${ + import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + console.log("Notification removed successfully."); + await checkNotificationStatus(); // Refresh button state + } else { + console.error("Failed to remove notification:", response.statusText); + } + } catch (error) { + console.error("Error removing completed notification:", error); + } + }; + useEffect(() => { const fetchCode = async () => { try { @@ -120,6 +188,7 @@ export const ViewStudents = ({ courseName, course_id }) => { fetchCode(); }, [course_id]); + // retrieve analytics data useEffect(() => { const fetchStudents = async () => { @@ -199,8 +268,9 @@ export const ViewStudents = ({ courseName, course_id }) => { ws.send(JSON.stringify(initMessage)); // Subscribe to notifications + const subscriptionId = uuidv4(); const subscriptionMessage = { - id: "1", + id: subscriptionId, type: "start", payload: { data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email) { message course_id instructor_email } }","variables":{"course_id":"${course_id}", "instructor_email":"${email}"}}`, @@ -227,17 +297,31 @@ export const ViewStudents = ({ courseName, course_id }) => { console.log("Notification received:", receivedMessage); // TODO: Update UI with the notification (e.g., toast notification, state update) + removeCompletedNotification(); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); } }; ws.onerror = (error) => { console.error("WebSocket error:", error); + ws.close(); }; ws.onclose = () => { console.log("WebSocket connection closed"); }; + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 180000); + } else { console.error("Failed to submit job:", response.statusText); } @@ -323,6 +407,7 @@ export const ViewStudents = ({ courseName, course_id }) => { onClick={() => { fetchCourseMessages(); }} + disabled={!isDownloadButtonEnabled} > Download Classroom Chatlog From ab625bd6851029b5734d3b2abf16231d8fc9a6e8 Mon Sep 17 00:00:00 2001 From: Aman Date: Thu, 23 Jan 2025 18:50:05 -0800 Subject: [PATCH 047/111] fix: Download Classroom Chatlog button's state is updated as soon as it is clicked. --- frontend/src/pages/instructor/ViewStudents.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index fef456d..b5b32ad 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -231,6 +231,7 @@ export const ViewStudents = ({ courseName, course_id }) => { const fetchCourseMessages = async () => { try { + setIsDownloadButtonEnabled(false); const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); From b365748b8ea4e16ea02f170b89de72885c6ec610 Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 24 Jan 2025 16:09:08 -0800 Subject: [PATCH 048/111] fix: modified duplication ID of parameters sent to SQS to allow multiple messages from same course and instructor. --- cdk/lambda/lib/sqsFunction.js | 9 ++++++++- cdk/sqsTrigger/src/main.py | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cdk/lambda/lib/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js index ed108d6..a6546b5 100644 --- a/cdk/lambda/lib/sqsFunction.js +++ b/cdk/lambda/lib/sqsFunction.js @@ -8,6 +8,7 @@ let sqlConnection = global.sqlConnection; exports.handler = async (event) => { try { // Parse the incoming event + console.log("Parsing instructor_email and course_id"); const { instructor_email, course_id } = JSON.parse(event.body); // Validate input @@ -30,23 +31,29 @@ exports.handler = async (event) => { } // Insert the record into the chatlogs_notifications table + console.log("Inserting record into the chatlogs_notifications table with completion status FALSE"); await sqlConnection` INSERT INTO "chatlogs_notifications" ("course_id", "instructor_email", "completion") VALUES (${course_id}, ${instructor_email}, false) ON CONFLICT DO NOTHING; `; + const date = new Date(); + const formattedDate = date.toISOString().replace("T", "-").split(".")[0].replace(/:/g, "-"); + // Prepare the SQS message const params = { QueueUrl: process.env.SQS_QUEUE_URL, MessageBody: JSON.stringify({ instructor_email, course_id }), MessageGroupId: course_id, // FIFO requires group ID - MessageDeduplicationId: `${instructor_email}-${course_id}`, // Deduplication ID + MessageDeduplicationId: `${instructor_email}-${course_id}-${formattedDate}`, // Deduplication ID }; // Send the message to SQS + console.log("Sending message to SQS"); const command = new SendMessageCommand(params); await sqsClient.send(command); + console.log("Message sent to SQS"); // Return success response return { diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 70cbe4e..2afe71c 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -211,7 +211,11 @@ def invoke_event_notification(course_id, instructor_email, message="Chat logs su headers = {"Content-Type": "application/json", "Authorization": "API_KEY"} payload = { "query": query, - "variables": {"message": message, "course_id": course_id, "instructor_email": instructor_email} + "variables": { + "message": message, + "course_id": course_id, + "instructor_email": instructor_email, + } } # Send the request to AppSync From 30b3490845badb132549083d80d9604427c24e04 Mon Sep 17 00:00:00 2001 From: Aman Date: Sun, 26 Jan 2025 20:27:25 -0800 Subject: [PATCH 049/111] fix: included request_id as a unique identfier for messages sent to AppSync. Issue where if second request is made within 5 minutes of the first request still exists. --- cdk/graphql/schema.graphql | 5 +++-- cdk/lambda/eventNotification/eventNotification.py | 4 +++- cdk/lambda/lib/sqsFunction.js | 15 ++++++--------- cdk/sqsTrigger/src/main.py | 15 +++++++++------ frontend/src/pages/instructor/ViewStudents.jsx | 10 ++++++---- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql index f5ac9c7..0f2ee92 100644 --- a/cdk/graphql/schema.graphql +++ b/cdk/graphql/schema.graphql @@ -1,5 +1,5 @@ type Subscription { - onNotify(course_id: String!, instructor_email: String!): Notification + onNotify(course_id: String!, instructor_email: String!, request_id: String!): Notification @aws_subscribe(mutations: ["sendNotification"]) } @@ -7,10 +7,11 @@ type Notification { message: String course_id: String instructor_email: String + request_id: String } type Mutation { - sendNotification(message: String!, course_id: String!, instructor_email: String!): Notification + sendNotification(message: String!, course_id: String!, instructor_email: String!, request_id: String!): Notification } type Query { diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index d164210..6594312 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -9,15 +9,17 @@ def lambda_handler(event, context): arguments = event.get("arguments", {}) course_id = arguments.get("course_id", "DefaultCourseId") instructor_email = arguments.get("instructor_email", "DefaultInstructorEmail") + request_id = arguments.get("request_id", "DefaultRequestId") message = arguments.get("message", "Default message") # Log the extracted values for debugging - print(f"Extracted course_id: {course_id}, instructor_email: {instructor_email}, message: {message}") + print(f"Extracted course_id: {course_id}, instructor_email: {instructor_email}, request_id: {request_id}, message: {message}") # Return the values back to AppSync return { "course_id": course_id, "instructor_email": instructor_email, + "request_id": request_id, "message": message } diff --git a/cdk/lambda/lib/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js index a6546b5..3e7c6b1 100644 --- a/cdk/lambda/lib/sqsFunction.js +++ b/cdk/lambda/lib/sqsFunction.js @@ -8,11 +8,11 @@ let sqlConnection = global.sqlConnection; exports.handler = async (event) => { try { // Parse the incoming event - console.log("Parsing instructor_email and course_id"); - const { instructor_email, course_id } = JSON.parse(event.body); + console.log("Parsing instructor_email, course_id, and request_id"); + const { instructor_email, course_id, request_id } = JSON.parse(event.body); // Validate input - if (!instructor_email || !course_id) { + if (!instructor_email || !course_id || !request_id) { return { statusCode: 400, headers: { @@ -20,7 +20,7 @@ exports.handler = async (event) => { "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key", "Access-Control-Allow-Methods": "OPTIONS,POST", }, - body: JSON.stringify({ error: "Missing instructor_email or course_id" }), + body: JSON.stringify({ error: "Missing instructor_email, course_id, or request_id" }), }; } @@ -38,15 +38,12 @@ exports.handler = async (event) => { ON CONFLICT DO NOTHING; `; - const date = new Date(); - const formattedDate = date.toISOString().replace("T", "-").split(".")[0].replace(/:/g, "-"); - // Prepare the SQS message const params = { QueueUrl: process.env.SQS_QUEUE_URL, - MessageBody: JSON.stringify({ instructor_email, course_id }), + MessageBody: JSON.stringify({ instructor_email, course_id, request_id }), MessageGroupId: course_id, // FIFO requires group ID - MessageDeduplicationId: `${instructor_email}-${course_id}-${formattedDate}`, // Deduplication ID + MessageDeduplicationId: `${instructor_email}-${course_id}-${request_id}`, // Deduplication ID }; // Send the message to SQS diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 2afe71c..7e1a01d 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -197,14 +197,15 @@ def update_completion_status(course_id, instructor_email): raise -def invoke_event_notification(course_id, instructor_email, message="Chat logs successfully uploaded"): +def invoke_event_notification(course_id, instructor_email, request_id, message="Chat logs successfully uploaded"): try: query = """ - mutation sendNotification($message: String!, $course_id: String!, $instructor_email: String!) { - sendNotification(message: $message, course_id: $course_id, instructor_email: $instructor_email) { + mutation sendNotification($message: String!, $course_id: String!, $instructor_email: String!, $request_id: String!) { + sendNotification(message: $message, course_id: $course_id, instructor_email: $instructor_email, request_id: $request_id) { message course_id instructor_email + request_id } } """ @@ -215,6 +216,7 @@ def invoke_event_notification(course_id, instructor_email, message="Chat logs su "message": message, "course_id": course_id, "instructor_email": instructor_email, + "request_id": request_id, } } @@ -245,9 +247,10 @@ def handler(event, context): message_body = json.loads(record["body"]) course_id = message_body.get("course_id") instructor_email = message_body.get("instructor_email") + request_id = message_body.get("request_id") - if not course_id or not instructor_email: - logger.error("Missing required parameters: course_id or instructor_email.") + if not course_id or not instructor_email or not request_id: + logger.error("Missing required parameters: course_id or instructor_email or request_id.") continue chat_logs = query_chat_logs(course_id) @@ -258,7 +261,7 @@ def handler(event, context): print("GOT s3_uri") update_completion_status(course_id, instructor_email) print("Updating completion status") - invoke_event_notification(course_id, instructor_email, message=f"Chat logs uploaded to {s3_uri}") + invoke_event_notification(course_id, instructor_email, request_id, message=f"Chat logs uploaded to {s3_uri}") print("FINALLY SENT NOTIFICATION") except Exception as e: diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index b5b32ad..ed57500 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -235,6 +235,7 @@ export const ViewStudents = ({ courseName, course_id }) => { const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); const response = await fetch( `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, @@ -245,8 +246,9 @@ export const ViewStudents = ({ courseName, course_id }) => { "Content-Type": "application/json", }, body: JSON.stringify({ - course_id: course_id, // Include course_id in the body - instructor_email: email, // Include instructor_email in the body + course_id: course_id, + instructor_email: email, + request_id: request_id, }), } ); @@ -274,7 +276,7 @@ export const ViewStudents = ({ courseName, course_id }) => { id: subscriptionId, type: "start", payload: { - data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email) { message course_id instructor_email } }","variables":{"course_id":"${course_id}", "instructor_email":"${email}"}}`, + data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!, $request_id: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email, request_id: $request_id) { message course_id instructor_email request_id } }","variables":{"course_id":"${course_id}", "instructor_email":"${email}", "request_id":"${request_id}"}}`, extensions: { authorization: { Authorization: "API_KEY=", @@ -321,7 +323,7 @@ export const ViewStudents = ({ courseName, course_id }) => { console.warn("WebSocket timeout reached, closing connection"); ws.close(); } - }, 180000); + }, 600000); } else { console.error("Failed to submit job:", response.statusText); From 69763f97ded153ead73128c7023181d87a7d39aa Mon Sep 17 00:00:00 2001 From: Aman Date: Mon, 27 Jan 2025 13:14:38 -0800 Subject: [PATCH 050/111] fix: added delay in sqsTrigger to ensure mutation was being sent to AppSync after client subscribes. Removed redundant fields from schema. --- cdk/graphql/schema.graphql | 6 ++---- .../eventNotification/eventNotification.py | 6 +----- cdk/sqsTrigger/src/main.py | 19 +++++++++++-------- .../src/pages/instructor/ViewStudents.jsx | 2 +- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/cdk/graphql/schema.graphql b/cdk/graphql/schema.graphql index 0f2ee92..cfd4568 100644 --- a/cdk/graphql/schema.graphql +++ b/cdk/graphql/schema.graphql @@ -1,17 +1,15 @@ type Subscription { - onNotify(course_id: String!, instructor_email: String!, request_id: String!): Notification + onNotify(request_id: String!): Notification @aws_subscribe(mutations: ["sendNotification"]) } type Notification { message: String - course_id: String - instructor_email: String request_id: String } type Mutation { - sendNotification(message: String!, course_id: String!, instructor_email: String!, request_id: String!): Notification + sendNotification(message: String!, request_id: String!): Notification } type Query { diff --git a/cdk/lambda/eventNotification/eventNotification.py b/cdk/lambda/eventNotification/eventNotification.py index 6594312..44b9093 100644 --- a/cdk/lambda/eventNotification/eventNotification.py +++ b/cdk/lambda/eventNotification/eventNotification.py @@ -7,18 +7,14 @@ def lambda_handler(event, context): try: # Extract arguments from the AppSync payload arguments = event.get("arguments", {}) - course_id = arguments.get("course_id", "DefaultCourseId") - instructor_email = arguments.get("instructor_email", "DefaultInstructorEmail") request_id = arguments.get("request_id", "DefaultRequestId") message = arguments.get("message", "Default message") # Log the extracted values for debugging - print(f"Extracted course_id: {course_id}, instructor_email: {instructor_email}, request_id: {request_id}, message: {message}") + print(f"Extracted request_id: {request_id}, message: {message}") # Return the values back to AppSync return { - "course_id": course_id, - "instructor_email": instructor_email, "request_id": request_id, "message": message } diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 7e1a01d..0231490 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -5,6 +5,7 @@ import psycopg2 import csv import httpx +import time from datetime import datetime from botocore.exceptions import ClientError @@ -197,14 +198,12 @@ def update_completion_status(course_id, instructor_email): raise -def invoke_event_notification(course_id, instructor_email, request_id, message="Chat logs successfully uploaded"): +def invoke_event_notification(request_id, message="Chat logs successfully uploaded"): try: query = """ - mutation sendNotification($message: String!, $course_id: String!, $instructor_email: String!, $request_id: String!) { - sendNotification(message: $message, course_id: $course_id, instructor_email: $instructor_email, request_id: $request_id) { + mutation sendNotification($message: String!, $request_id: String!) { + sendNotification(message: $message, request_id: $request_id) { message - course_id - instructor_email request_id } } @@ -214,17 +213,21 @@ def invoke_event_notification(course_id, instructor_email, request_id, message=" "query": query, "variables": { "message": message, - "course_id": course_id, - "instructor_email": instructor_email, "request_id": request_id, } } + # Delay to ensure client subscribes before mutation is sent + time.sleep(1) + # Send the request to AppSync with httpx.Client() as client: response = client.post(APPSYNC_API_URL, headers=headers, json=payload) response_data = response.json() + logger.info(f"RESPONSE: {response}") + print(f"RESPONSE: {response}") + if response.status_code != 200 or "errors" in response_data: logger.error(f"Failed to send notification to AppSync: {response_data}") raise Exception(f"Failed to send notification: {response_data}") @@ -261,7 +264,7 @@ def handler(event, context): print("GOT s3_uri") update_completion_status(course_id, instructor_email) print("Updating completion status") - invoke_event_notification(course_id, instructor_email, request_id, message=f"Chat logs uploaded to {s3_uri}") + invoke_event_notification(request_id, message=f"Chat logs uploaded to {s3_uri}") print("FINALLY SENT NOTIFICATION") except Exception as e: diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index ed57500..f3af182 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -276,7 +276,7 @@ export const ViewStudents = ({ courseName, course_id }) => { id: subscriptionId, type: "start", payload: { - data: `{"query":"subscription OnNotify($course_id: String!, $instructor_email: String!, $request_id: String!) { onNotify(course_id: $course_id, instructor_email: $instructor_email, request_id: $request_id) { message course_id instructor_email request_id } }","variables":{"course_id":"${course_id}", "instructor_email":"${email}", "request_id":"${request_id}"}}`, + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, extensions: { authorization: { Authorization: "API_KEY=", From 3a4e49b77600eb31132a392126186893bc3720c0 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 29 Jan 2025 15:58:22 -0800 Subject: [PATCH 051/111] chatlogs page table created as well as added functionality for download button --- frontend/src/pages/instructor/ChatLogs.jsx | 477 ++++++++++----------- 1 file changed, 232 insertions(+), 245 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 27306d7..1785c15 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -2,23 +2,20 @@ import { Typography, Box, Toolbar, + Paper, + Button, Table, TableBody, TableCell, TableContainer, TableHead, - TableRow, - Paper, - Button, - TableFooter, - TablePagination, + TableRow } from "@mui/material"; -import { useState, useEffect, useRef } from "react"; +import { useState, useEffect } from "react"; +import { useNavigate } from "react-router-dom"; import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; -import { toast, ToastContainer } from "react-toastify"; -import "react-toastify/dist/ReactToastify.css"; +import { v4 as uuidv4 } from 'uuid'; -// Function to capitalize course title case function courseTitleCase(str) { if (typeof str !== "string") { return str; @@ -35,308 +32,298 @@ function courseTitleCase(str) { .join(" "); } -// Function to dynamically construct WebSocket URL -const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); +export const ChatLogs = ({ courseName, course_id }) => { + const [loading, setLoading] = useState(false); + const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; + const navigate = useNavigate(); - const header = { - host: host, - Authorization: "API_KEY=", - }; + const constructWebSocketUrl = () => { + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; -}; + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; -const ChatLogs = ({ courseName }) => { - const [logs, setLogs] = useState([]); - const [page, setPage] = useState(0); - const [rowsPerPage, setRowsPerPage] = useState(5); - const [loading, setLoading] = useState(false); - const [webSocket, setWebSocket] = useState(null); + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; - const messagesEndRef = useRef(null); + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + }; - const fetchChatLogs = async () => { + const checkNotificationStatus = async () => { try { - setLoading(true); const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + `${import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, { - method: "POST", + method: "GET", headers: { Authorization: token, "Content-Type": "application/json", }, - body: JSON.stringify({ - instructor_email: email, - }), } ); - if (response.ok) { const data = await response.json(); - setLogs(Object.entries(data.logs || {})); // Convert hashmap to array for rendering + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); } else { - console.error("Failed to fetch chat logs:", response.statusText); + console.error("Failed to fetch notification status:", response.statusText); } } catch (error) { - console.error("Error fetching chat logs:", error); - } finally { - setLoading(false); + console.error("Error checking notification status:", error); } }; - const generateChatLogs = async () => { + useEffect(() => { + checkNotificationStatus(); + }, [course_id]); + + const removeCompletedNotification = async () => { try { const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}generate-chat-logs`, + `${import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, { - method: "POST", + method: "DELETE", headers: { Authorization: token, "Content-Type": "application/json", }, - body: JSON.stringify({ - instructor_email: email, - course_id, - }), } ); if (response.ok) { - toast.success("Generating Chat Logs...", { - position: "top-center", - autoClose: 1000, - hideProgressBar: true, - theme: "colored", - }); + console.log("Notification removed successfully."); + await checkNotificationStatus(); } else { - toast.error("Failed to generate chat logs", { - position: "top-center", - autoClose: 1000, - hideProgressBar: true, - theme: "colored", - }); + console.error("Failed to remove notification:", response.statusText); } } catch (error) { - console.error("Error initiating CSV generation:", error); - toast.error("Failed to generate chat logs", { - position: "top-center", - autoClose: 1000, - hideProgressBar: true, - theme: "colored", - }); + console.error("Error removing completed notification:", error); } }; - const handleDownload = async (url) => { + const fetchCourseMessages = async () => { try { - const response = await fetch(url); - if (response.ok) { - const blob = await response.blob(); - const downloadUrl = window.URL.createObjectURL(blob); - const a = document.createElement("a"); - a.href = downloadUrl; - a.download = "chat_logs.csv"; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - } else { - console.error("Failed to download file:", response.statusText); - } - } catch (error) { - console.error("Error downloading file:", error); - } - }; + setIsDownloadButtonEnabled(false); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); - const openWebSocket = () => { - const wsUrl = constructWebSocketUrl(); - const ws = new WebSocket(wsUrl, "graphql-ws"); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + course_id: course_id, + instructor_email: email, + request_id: request_id, + }), + } + ); + + if (response.ok) { + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); - ws.onopen = () => { - console.log("WebSocket connection established"); + const wsUrl = constructWebSocketUrl(); + const ws = new WebSocket(wsUrl, "graphql-ws"); - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); + ws.onopen = () => { + console.log("WebSocket connection established"); + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); - const subscriptionMessage = { - id: "1", // Unique ID for the subscription - type: "start", - payload: { - data: `{"query":"subscription OnNotify { onNotify { message } }"}`, - extensions: { - authorization: { - Authorization: "API_KEY=", + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, }, - }, - }, - }; - ws.send(JSON.stringify(subscriptionMessage)); - }; + }; - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("Received:", message); - - if (message.type === "data" && message.payload?.data?.onNotify) { - toast.success("Ready to download requested logs", { - position: "top-center", - autoClose: 1000, - hideProgressBar: true, - theme: "colored", - }); - fetchChatLogs(); - } - }; + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; - ws.onerror = (error) => { - console.error("WebSocket error:", error); - }; + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + removeCompletedNotification(); + ws.close(); + console.log("WebSocket connection closed after handling notification"); + } + }; - setWebSocket(ws); - }; + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; - useEffect(() => { - fetchChatLogs(); - openWebSocket(); + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; - return () => { - if (webSocket) { - webSocket.close(); - } - }; - }, []); + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 600000); - const handleChangePage = (event, newPage) => { - setPage(newPage); + } else { + console.error("Failed to submit job:", response.statusText); + } + } catch (error) { + console.error("Error submitting job:", error); + } }; - const handleChangeRowsPerPage = (event) => { - setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); - }; + //////// + + const [previousChatLogs, setPreviousChatLogs] = useState([ + // Dummy data + { + date: "2024-03-15T12:00:00Z", + fileName: "chatlog_20240315.pdf", + downloadUrl: "#" + }, + { + date: "2024-03-14T09:30:00Z", + fileName: "chatlog_20240314.pdf", + downloadUrl: "#" + } + ]); + + //////// + + // const fetchPreviousChatLogs = async () => { + // try { + // const session = await fetchAuthSession(); + // const token = session.tokens.idToken; + // const { email } = await fetchUserAttributes(); + // const response = await fetch( + // `${import.meta.env.VITE_API_ENDPOINT}instructor/previous_chat_logs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, + // { + // method: "GET", + // headers: { + // Authorization: token, + // "Content-Type": "application/json", + // }, + // } + // ); + // if (response.ok) { + // const data = await response.json(); + // setPreviousChatLogs(data.chatLogs || []); + // } else { + // console.error("Failed to fetch previous chat logs:", response.statusText); + // } + // } catch (error) { + // console.error("Error fetching previous chat logs:", error); + // } + // }; + + useEffect(() => { + checkNotificationStatus(); + // fetchPreviousChatLogs(); + }, [course_id]); + return ( - - - - - - {courseTitleCase(courseName)} Chat History - - - - - -
- {!loading ? ( - <> - - - Generated Time - Action - - - - {logs.length > 0 ? ( - logs - .slice( - page * rowsPerPage, - page * rowsPerPage + rowsPerPage - ) - .map(([time, url], index) => ( - - {time} - - - - - )) - ) : ( - - - No chat logs available +
+ + + + + {courseName} Chat Logs + + + + + + {isDownloadButtonEnabled ? "Click the button to download chat logs" : "Chat log download in progress. Please wait..."} + + +
+ + + Date + File Name + Download + + + + {previousChatLogs.length > 0 ? ( + previousChatLogs.map((log, index) => ( + + {new Date(log.date).toLocaleString()} + {log.fileName} + + - )} - - - ) : ( - - - Loading... - - - )} - - - - - -
-
- - + )) + ) : ( + + No previous chat logs available. + + )} + + +
+ + + ); }; -export default ChatLogs; +export default ChatLogs; \ No newline at end of file From 96af30de1e07fc322b61c24a4e0c223ad28936d9 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 01:27:18 -0800 Subject: [PATCH 052/111] fix: ChatLogs.jsx page correctly opens websocket with AppSync. --- frontend/src/pages/instructor/ChatLogs.jsx | 387 ++++++++++----------- 1 file changed, 184 insertions(+), 203 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 1785c15..f4a8813 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -39,184 +39,197 @@ export const ChatLogs = ({ courseName, course_id }) => { const navigate = useNavigate(); const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; }; const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - console.log(`Download Chatlogs is ${data.isEnabled}`) - setIsDownloadButtonEnabled(data.isEnabled); - } else { - console.error("Failed to fetch notification status:", response.statusText); - } - } catch (error) { - console.error("Error checking notification status:", error); + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${ + import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + if (response.ok) { + const data = await response.json(); + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); + } else { + console.error("Failed to fetch notification status:", response.statusText); } + } catch (error) { + console.error("Error checking notification status:", error); + } }; - + useEffect(() => { - checkNotificationStatus(); + checkNotificationStatus(); }, [course_id]); - + const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); - } else { - console.error("Failed to remove notification:", response.statusText); - } - } catch (error) { - console.error("Error removing completed notification:", error); + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${ + import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + console.log("Notification removed successfully."); + await checkNotificationStatus(); // Refresh button state + } else { + console.error("Failed to remove notification:", response.statusText); } + } catch (error) { + console.error("Error removing completed notification:", error); + } }; const fetchCourseMessages = async () => { - try { - setIsDownloadButtonEnabled(false); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const request_id = uuidv4(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, - { - method: "POST", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - course_id: course_id, - instructor_email: email, - request_id: request_id, - }), - } - ); - - if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - const wsUrl = constructWebSocketUrl(); - const ws = new WebSocket(wsUrl, "graphql-ws"); - - ws.onopen = () => { - console.log("WebSocket connection established"); - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - removeCompletedNotification(); - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - - setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); - } - }, 600000); - - } else { - console.error("Failed to submit job:", response.statusText); + try { + setIsDownloadButtonEnabled(false); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + course_id: course_id, + instructor_email: email, + request_id: request_id, + }), + } + ); + + if (response.ok) { + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); + + // Open WebSocket connection + const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL + const ws = new WebSocket(wsUrl, "graphql-ws"); + + // Handle WebSocket connection + ws.onopen = () => { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + + // TODO: Update UI with the notification (e.g., toast notification, state update) + removeCompletedNotification(); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); } - } catch (error) { - console.error("Error submitting job:", error); + }, 180000); + + } else { + console.error("Failed to submit job:", response.statusText); } + } catch (error) { + console.error("Error submitting job:", error); + } }; //////// @@ -235,40 +248,6 @@ export const ChatLogs = ({ courseName, course_id }) => { } ]); - //////// - - // const fetchPreviousChatLogs = async () => { - // try { - // const session = await fetchAuthSession(); - // const token = session.tokens.idToken; - // const { email } = await fetchUserAttributes(); - // const response = await fetch( - // `${import.meta.env.VITE_API_ENDPOINT}instructor/previous_chat_logs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, - // { - // method: "GET", - // headers: { - // Authorization: token, - // "Content-Type": "application/json", - // }, - // } - // ); - // if (response.ok) { - // const data = await response.json(); - // setPreviousChatLogs(data.chatLogs || []); - // } else { - // console.error("Failed to fetch previous chat logs:", response.statusText); - // } - // } catch (error) { - // console.error("Error fetching previous chat logs:", error); - // } - // }; - - useEffect(() => { - checkNotificationStatus(); - // fetchPreviousChatLogs(); - }, [course_id]); - - return (
@@ -278,12 +257,14 @@ export const ChatLogs = ({ courseName, course_id }) => { {courseName} Chat Logs From bc13926bc2c1c677426e13c68b1a490572882d7a Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 01:32:54 -0800 Subject: [PATCH 053/111] fix: changed fetchCourseMessages to generateCourseMessages for better intuition. --- frontend/src/pages/instructor/ChatLogs.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index f4a8813..47a5318 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -128,7 +128,7 @@ export const ChatLogs = ({ courseName, course_id }) => { } }; - const fetchCourseMessages = async () => { + const generateCourseMessages = async () => { try { setIsDownloadButtonEnabled(false); const session = await fetchAuthSession(); @@ -260,7 +260,7 @@ export const ChatLogs = ({ courseName, course_id }) => { variant="contained" color="primary" onClick={() => { - fetchCourseMessages(); + generateCourseMessages(); }} disabled={!isDownloadButtonEnabled} > From 73fb0dc7a7abaa1e231f26714154e3bcff7b8e07 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 5 Feb 2025 01:36:47 -0800 Subject: [PATCH 054/111] merge --- frontend/src/pages/instructor/ChatLogs.jsx | 390 ++++++++++----------- 1 file changed, 194 insertions(+), 196 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index f4a8813..a9982f1 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -39,213 +39,211 @@ export const ChatLogs = ({ courseName, course_id }) => { const navigate = useNavigate(); const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; }; const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - console.log(`Download Chatlogs is ${data.isEnabled}`) - setIsDownloadButtonEnabled(data.isEnabled); - } else { - console.error("Failed to fetch notification status:", response.statusText); + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + if (response.ok) { + const data = await response.json(); + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); + } else { + console.error("Failed to fetch notification status:", response.statusText); + } + } catch (error) { + console.error("Error checking notification status:", error); } - } catch (error) { - console.error("Error checking notification status:", error); - } }; - + useEffect(() => { - checkNotificationStatus(); + checkNotificationStatus(); }, [course_id]); - + const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); // Refresh button state - } else { - console.error("Failed to remove notification:", response.statusText); + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + console.log("Notification removed successfully."); + await checkNotificationStatus(); // Refresh button state + } else { + console.error("Failed to remove notification:", response.statusText); + } + } catch (error) { + console.error("Error removing completed notification:", error); } - } catch (error) { - console.error("Error removing completed notification:", error); - } }; - const fetchCourseMessages = async () => { - try { - setIsDownloadButtonEnabled(false); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const request_id = uuidv4(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, - { - method: "POST", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - course_id: course_id, - instructor_email: email, - request_id: request_id, - }), - } - ); - - if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - // Open WebSocket connection - const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL - const ws = new WebSocket(wsUrl, "graphql-ws"); - - // Handle WebSocket connection - ws.onopen = () => { - console.log("WebSocket connection established"); - - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - - // TODO: Update UI with the notification (e.g., toast notification, state update) - removeCompletedNotification(); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - - // Set a timeout to close the WebSocket if no message is received - setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); + const generateCourseMessages = async () => { + try { + setIsDownloadButtonEnabled(false); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + course_id: course_id, + instructor_email: email, + request_id: request_id, + }), + } + ); + + if (response.ok) { + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); + + // Open WebSocket connection + const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL + const ws = new WebSocket(wsUrl, "graphql-ws"); + + // Handle WebSocket connection + ws.onopen = () => { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + + // TODO: Update UI with the notification (e.g., toast notification, state update) + removeCompletedNotification(); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 180000); + + } else { + console.error("Failed to submit job:", response.statusText); } - }, 180000); - - } else { - console.error("Failed to submit job:", response.statusText); + } catch (error) { + console.error("Error submitting job:", error); } - } catch (error) { - console.error("Error submitting job:", error); - } }; //////// const [previousChatLogs, setPreviousChatLogs] = useState([ - // Dummy data - { - date: "2024-03-15T12:00:00Z", - fileName: "chatlog_20240315.pdf", - downloadUrl: "#" - }, - { - date: "2024-03-14T09:30:00Z", - fileName: "chatlog_20240314.pdf", - downloadUrl: "#" - } + // Dummy data + { + date: "2024-03-15T12:00:00Z", + fileName: "chatlog_20240315.pdf", + downloadUrl: "#" + }, + { + date: "2024-03-14T09:30:00Z", + fileName: "chatlog_20240314.pdf", + downloadUrl: "#" + } ]); return ( @@ -257,14 +255,14 @@ export const ChatLogs = ({ courseName, course_id }) => { {courseName} Chat Logs From c500e33aa7d3e194a05d139318e6e8da52c52486 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 02:25:49 -0800 Subject: [PATCH 055/111] feat: created a Lambda function that returns all the chatlog file names with their respective presigned URLs for a specified course and instructor. --- cdk/OpenAPI_Swagger_Definition.yaml | 73 ++++++++++++ .../getChatLogsFunction.py | 110 ++++++++++++++++++ cdk/lib/api-gateway-stack.ts | 34 ++++++ 3 files changed, 217 insertions(+) create mode 100644 cdk/lambda/getChatLogsFunction/getChatLogsFunction.py diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 9245bec..7bfc2b5 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -1623,6 +1623,79 @@ paths: passthroughBehavior: "when_no_match" httpMethod: "POST" type: "aws_proxy" + /instructor/fetch_chatlogs: + options: + summary: CORS support + description: Enable CORS by returning correct headers + responses: + 200: + $ref: "#/components/responses/Success" + x-amazon-apigateway-integration: + type: mock + requestTemplates: + application/json: | + { + "statusCode" : 200 + } + responses: + default: + statusCode: "200" + responseParameters: + method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'" + method.response.header.Access-Control-Allow-Methods: "'*'" + method.response.header.Access-Control-Allow-Origin: "'*'" + responseTemplates: + application/json: | + {} + + get: + tags: + - Instructor + summary: Get a chatlog files for a specific course requested by instructor + operationId: instructor_fetch_chatlogs_GET + parameters: + - in: query + name: course_id + required: true + description: ID of the course + schema: + type: string + - in: query + name: instructor_email + required: true + description: Email of the instructor + schema: + type: string + responses: + "200": + description: Recieved all the chatlog files for the course requested by the instructor successfully + content: + application/json: + schema: + type: object + properties: + log_files: + type: object + description: A dictionary where keys are file names and values are presigned URLs + additionalProperties: + type: string + description: Presigned URL for the log file + "400": + description: Bad Request + "401": + description: Unauthorized + "429": + description: Too Many Requests + "500": + description: Internal Server Error + security: + - instructorAuthorizer: [] + x-amazon-apigateway-integration: + uri: + Fn::Sub: "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetChatLogsFunction.Arn}/invocations" + passthroughBehavior: "when_no_match" + httpMethod: "POST" + type: "aws_proxy" /instructor/courses: options: summary: CORS support diff --git a/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py b/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py new file mode 100644 index 0000000..6a9d701 --- /dev/null +++ b/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py @@ -0,0 +1,110 @@ +import os +import json +import boto3 +from botocore.config import Config +from aws_lambda_powertools import Logger + +logger = Logger() + +# Environment variables +REGION = os.environ["REGION"] +BUCKET = os.environ["BUCKET"] + +# AWS Clients +s3 = boto3.client( + "s3", + endpoint_url=f"https://s3.{REGION}.amazonaws.com", + config=Config(s3={"addressing_style": "virtual"}, region_name=REGION, signature_version="s3v4"), +) + +def list_files_in_s3_prefix(bucket, prefix): + files = [] + continuation_token = None + + # Fetch all objects in the directory, handling pagination + while True: + if continuation_token: + result = s3.list_objects_v2( + Bucket=bucket, + Prefix=prefix, + ContinuationToken=continuation_token + ) + else: + result = s3.list_objects_v2(Bucket=bucket, Prefix=prefix) + + if "Contents" in result: + for obj in result["Contents"]: + files.append(obj["Key"].replace(prefix, "")) + + # Check if there's more data to fetch + if result.get("IsTruncated"): + continuation_token = result.get("NextContinuationToken") + else: + break + + return files + +def generate_presigned_url(bucket, key): + try: + return s3.generate_presigned_url( + ClientMethod="get_object", + Params={"Bucket": bucket, "Key": key}, + ExpiresIn=300, + HttpMethod="GET", + ) + except Exception as e: + logger.exception(f"Error generating presigned URL for {key}: {e}") + return None + +@logger.inject_lambda_context +def lambda_handler(event, context): + query_params = event.get("queryStringParameters", {}) + + course_id = query_params.get("course_id", "") + instructor_email = query_params.get("instructor_email", "") + + if not course_id or not instructor_email: + logger.error("Missing required parameters", extra={"course_id": course_id, "instructor_email": instructor_email}) + return { + "statusCode": 400, + "headers": { + "Content-Type": "application/json", + "Access-Control-Allow-Headers": "*", + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "*", + }, + "body": json.dumps("Missing required parameters: course_id or instructor_email"), + } + + try: + log_prefix = f"{course_id}/{instructor_email}/" + + log_files = list_files_in_s3_prefix(BUCKET, log_prefix) + + # Generate presigned URLs for logs + log_files_urls = {file_name: generate_presigned_url(BUCKET, f"{log_prefix}{file_name}") for file_name in log_files} + + logger.info("Presigned URLs generated successfully", extra={"log_files": log_files_urls}) + + return { + "statusCode": 200, + "headers": { + "Content-Type": "application/json", + "Access-Control-Allow-Headers": "*", + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "*", + }, + "body": json.dumps({"log_files": log_files_urls}), + } + except Exception as e: + logger.exception(f"Error generating presigned URLs for chat logs: {e}") + return { + "statusCode": 500, + "headers": { + "Content-Type": "application/json", + "Access-Control-Allow-Headers": "*", + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "*", + }, + "body": json.dumps("Internal server error"), + } \ No newline at end of file diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index ceb28c2..3964dc5 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1584,6 +1584,40 @@ export class ApiGatewayStack extends cdk.Stack { ], }) ); + + /** + * + * Create Lambda function that will return all the chatlog file names with their respective presigned URLs for a specified course and instructor + */ + const getChatLogsFunction = new lambda.Function(this, `${id}-GetChatLogsFunction`, { + runtime: lambda.Runtime.PYTHON_3_9, + code: lambda.Code.fromAsset("lambda/getChatLogsFunction"), + handler: "getChatLogsFunction.lambda_handler", + timeout: Duration.seconds(300), + memorySize: 128, + vpc: vpcStack.vpc, + environment: { + BUCKET: chatlogsBucket.bucketName, + REGION: this.region, + }, + functionName: `${id}-GetChatLogsFunction`, + layers: [psycopgLayer, powertoolsLayer], + }); + + // Override the Logical ID of the Lambda Function to get ARN in OpenAPI + const cfnGetChatLogsFunction = getChatLogsFunction.node + .defaultChild as lambda.CfnFunction; + cfnGetChatLogsFunction.overrideLogicalId("GetChatLogsFunction"); + + // Grant the Lambda function read-only permissions to the S3 bucket + chatlogsBucket.grantRead(getChatLogsFunction); + + // Add the permission to the Lambda function's policy to allow API Gateway access + getChatLogsFunction.addPermission("AllowApiGatewayInvoke", { + principal: new iam.ServicePrincipal("apigateway.amazonaws.com"), + action: "lambda:InvokeFunction", + sourceArn: `arn:aws:execute-api:${this.region}:${this.account}:${this.api.restApiId}/*/*/instructor*`, + }); } } From 09537601a6f53559c070d81c3fffb7e5e2f83fc7 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 5 Feb 2025 02:42:49 -0800 Subject: [PATCH 056/111] chatLogs.jsx updates for dowloading and updating the table --- frontend/src/pages/instructor/ChatLogs.jsx | 107 +++++++++++++++------ 1 file changed, 77 insertions(+), 30 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index bb94e4d..039b73c 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -36,6 +36,8 @@ export const ChatLogs = ({ courseName, course_id }) => { const [loading, setLoading] = useState(false); const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); + const [previousChatLogs, setPreviousChatLogs] = useState([]); + const navigate = useNavigate(); const constructWebSocketUrl = () => { @@ -93,6 +95,7 @@ export const ChatLogs = ({ courseName, course_id }) => { useEffect(() => { checkNotificationStatus(); + fetchChatLogs(); }, [course_id]); const removeCompletedNotification = async () => { @@ -126,6 +129,51 @@ export const ChatLogs = ({ courseName, course_id }) => { } }; + + const fetchChatLogs = async () => { + try { + setLoading(true); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chatlogs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + const data = await response.json(); + console.log("Chat logs fetched:", data); + + if (data.chatLogs && data.chatLogs.length > 0) { + // Ensure logs are formatted correctly for display + const formattedLogs = data.chatLogs.map(log => ({ + date: log.timestamp ? new Date(log.timestamp).toLocaleString() : "Unknown Date", // Formatting date + fileName: log.file_name || "Unnamed File", + downloadUrl: log.download_url || "#", + })); + setPreviousChatLogs(formattedLogs); + } else { + setPreviousChatLogs([]); // If no logs, set an empty array + } + } else { + console.error("Failed to fetch chat logs:", response.statusText); + } + } catch (error) { + console.error("Error fetching chat logs:", error); + } finally { + setLoading(false); + } + }; + + const generateCourseMessages = async () => { try { setIsDownloadButtonEnabled(false); @@ -230,22 +278,7 @@ export const ChatLogs = ({ courseName, course_id }) => { } }; - //////// - - const [previousChatLogs, setPreviousChatLogs] = useState([ - // Dummy data - { - date: "2024-03-15T12:00:00Z", - fileName: "chatlog_20240315.pdf", - downloadUrl: "#" - }, - { - date: "2024-03-14T09:30:00Z", - fileName: "chatlog_20240314.pdf", - downloadUrl: "#" - } - ]); - + return (
@@ -254,16 +287,24 @@ export const ChatLogs = ({ courseName, course_id }) => { {courseName} Chat Logs - + {/**/} + + + @@ -282,10 +323,16 @@ export const ChatLogs = ({ courseName, course_id }) => { {previousChatLogs.length > 0 ? ( previousChatLogs.map((log, index) => ( - {new Date(log.date).toLocaleString()} - {log.fileName} + {log.date} {/* Date dynamically fetched */} + {log.fileName} {/* Filename dynamically fetched */} - @@ -293,7 +340,7 @@ export const ChatLogs = ({ courseName, course_id }) => { )) ) : ( - No previous chat logs available. + No chat logs available. )} From def6d9666f1c7213ac88b2b6a1adaa8d3c6a3dd6 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 03:40:10 -0800 Subject: [PATCH 057/111] fix: chatlogs table dynamically updates when chat logs are fetched, presigned URLs are used to download CSV files and refresh every 5 minutes. --- frontend/src/pages/instructor/ChatLogs.jsx | 615 +++++++++++---------- 1 file changed, 309 insertions(+), 306 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 039b73c..5803bac 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -1,15 +1,15 @@ import { - Typography, - Box, - Toolbar, - Paper, - Button, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow + Typography, + Box, + Toolbar, + Paper, + Button, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow } from "@mui/material"; import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; @@ -33,323 +33,326 @@ function courseTitleCase(str) { } export const ChatLogs = ({ courseName, course_id }) => { - const [loading, setLoading] = useState(false); - const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); - - const [previousChatLogs, setPreviousChatLogs] = useState([]); - - const navigate = useNavigate(); - - const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); + const [loading, setLoading] = useState(false); + const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); + const [previousChatLogs, setPreviousChatLogs] = useState([]); - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; + useEffect(() => { + checkNotificationStatus(); + fetchChatLogs(); + + // Auto-refresh logs every 5 minutes since presigned URLs expire + const interval = setInterval(fetchChatLogs, 5 * 60 * 1000); + return () => clearInterval(interval); + }, [course_id]); - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; - }; - - const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - console.log(`Download Chatlogs is ${data.isEnabled}`) - setIsDownloadButtonEnabled(data.isEnabled); - } else { - console.error("Failed to fetch notification status:", response.statusText); - } - } catch (error) { - console.error("Error checking notification status:", error); - } - }; - - useEffect(() => { - checkNotificationStatus(); - fetchChatLogs(); - }, [course_id]); - - const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); // Refresh button state - } else { - console.error("Failed to remove notification:", response.statusText); + const constructWebSocketUrl = () => { + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + }; + + const checkNotificationStatus = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, } - } catch (error) { - console.error("Error removing completed notification:", error); + ); + if (response.ok) { + const data = await response.json(); + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); + } else { + console.error("Failed to fetch notification status:", response.statusText); } - }; - - - const fetchChatLogs = async () => { - try { - setLoading(true); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chatlogs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - const data = await response.json(); - console.log("Chat logs fetched:", data); - - if (data.chatLogs && data.chatLogs.length > 0) { - // Ensure logs are formatted correctly for display - const formattedLogs = data.chatLogs.map(log => ({ - date: log.timestamp ? new Date(log.timestamp).toLocaleString() : "Unknown Date", // Formatting date - fileName: log.file_name || "Unnamed File", - downloadUrl: log.download_url || "#", - })); - setPreviousChatLogs(formattedLogs); - } else { - setPreviousChatLogs([]); // If no logs, set an empty array - } - } else { - console.error("Failed to fetch chat logs:", response.statusText); + } catch (error) { + console.error("Error checking notification status:", error); + } + }; + + const removeCompletedNotification = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, } - } catch (error) { - console.error("Error fetching chat logs:", error); - } finally { - setLoading(false); + ); + + if (response.ok) { + console.log("Notification removed successfully."); + await checkNotificationStatus(); // Refresh button state + } else { + console.error("Failed to remove notification:", response.statusText); } - }; - + } catch (error) { + console.error("Error removing completed notification:", error); + } + }; - const generateCourseMessages = async () => { - try { - setIsDownloadButtonEnabled(false); + const fetchChatLogs = async () => { + try { + setLoading(true); const session = await fetchAuthSession(); const token = session.tokens.idToken; const { email } = await fetchUserAttributes(); - const request_id = uuidv4(); - + const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, - { - method: "POST", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - course_id: course_id, - instructor_email: email, - request_id: request_id, - }), - } + `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chatlogs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } ); - + if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - // Open WebSocket connection - const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL - const ws = new WebSocket(wsUrl, "graphql-ws"); - - // Handle WebSocket connection - ws.onopen = () => { - console.log("WebSocket connection established"); + const data = await response.json(); + console.log("Chat logs fetched:", data); + if (data.log_files) { + const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ + date: fileName, // Using file name as the date + presignedUrl: presignedUrl, + })); + setPreviousChatLogs(formattedLogs); + } else { + setPreviousChatLogs([]); + } + } else { + console.error("Failed to fetch chat logs:", response.statusText); + } + } catch (error) { + console.error("Error fetching chat logs:", error); + } finally { + setLoading(false); + } + }; + + const downloadChatLog = (presignedUrl) => { + try { + console.log("Downloading file from:", presignedUrl); + window.open(presignedUrl, "_blank"); + } catch (error) { + console.error("Error downloading file:", error); + } +}; + + const generateCourseMessages = async () => { + try { + setIsDownloadButtonEnabled(false); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + course_id: course_id, + instructor_email: email, + request_id: request_id, + }), + } + ); - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, + if (response.ok) { + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); + + // Open WebSocket connection + const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL + const ws = new WebSocket(wsUrl, "graphql-ws"); + + // Handle WebSocket connection + ws.onopen = () => { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, }, }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - - // TODO: Update UI with the notification (e.g., toast notification, state update) - removeCompletedNotification(); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } + }, }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = async (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + + // TODO: Update UI with the notification (e.g., toast notification, state update) + removeCompletedNotification(); + + // Refresh chat logs once the new log file is created + await fetchChatLogs(); + + // Close WebSocket after receiving the notification ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - - // Set a timeout to close the WebSocket if no message is received - setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); - } - }, 180000); - - } else { - console.error("Failed to submit job:", response.statusText); - } - } catch (error) { - console.error("Error submitting job:", error); + console.log("WebSocket connection closed after handling notification"); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 180000); + + } else { + console.error("Failed to submit job:", response.statusText); } - }; - - - return ( -
- - - - - {courseName} Chat Logs - - {/**/} - - - - - - - {isDownloadButtonEnabled ? "Click the button to download chat logs" : "Chat log download in progress. Please wait..."} - - - - + } catch (error) { + console.error("Error submitting job:", error); + } + }; + + + return ( +
+ + + + + {courseName} Chat Logs + + {/**/} + + + + + + {isDownloadButtonEnabled ? "Click the button to generate chat logs" : "Chat log generation in progress. Please wait..."} + + +
+ + + Date + Download + + + + {previousChatLogs.length > 0 ? ( + previousChatLogs.map((log, index) => ( + + {log.date} + + + + + )) + ) : ( - Date - File Name - Download + No chat logs available. - - - {previousChatLogs.length > 0 ? ( - previousChatLogs.map((log, index) => ( - - {log.date} {/* Date dynamically fetched */} - {log.fileName} {/* Filename dynamically fetched */} - - - - - )) - ) : ( - - No chat logs available. - - )} - -
-
-
-
-
- ); + )} + + + +
+ +
+ ); }; export default ChatLogs; \ No newline at end of file From 339d08a3dc7d2171849d8114e0a3add3f3c14402 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 04:09:48 -0800 Subject: [PATCH 058/111] fix: updated check_notifications_status endpoint to include completion status in response. --- cdk/OpenAPI_Swagger_Definition.yaml | 6 +++++- cdk/lambda/lib/instructorFunction.js | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 7bfc2b5..7848015 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -3156,7 +3156,11 @@ paths: properties: isEnabled: type: Boolean - description: The status for getting the chatlogs for a course requested by an instructor + description: Indicates whether the button to generate chatlogs should be enabled or disabled + completionStatus: + type: boolean + nullable: true + description: The actual value of the completion status. If the row does not exist, this will be null. "400": description: Bad Request "404": diff --git a/cdk/lambda/lib/instructorFunction.js b/cdk/lambda/lib/instructorFunction.js index 8fcc76d..92912ad 100644 --- a/cdk/lambda/lib/instructorFunction.js +++ b/cdk/lambda/lib/instructorFunction.js @@ -1203,10 +1203,16 @@ exports.handler = async (event) => { // if exists, true or false, button should not be enabled if (notificationStatus.length > 0) { response.statusCode = 200; - response.body = JSON.stringify({ isEnabled: false }); + response.body = JSON.stringify({ + isEnabled: false, + completionStatus: notificationStatus[0].completion + }); } else { response.statusCode = 200; - response.body = JSON.stringify({ isEnabled: true }); + response.body = JSON.stringify({ + isEnabled: true, + completionStatus: null + }); } } catch (err) { response.statusCode = 500; From 76f1d9733f690377a4ca612e4d065c90d117a1ca Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 5 Feb 2025 10:51:46 -0800 Subject: [PATCH 059/111] chatlogs page fixed with table format --- frontend/src/pages/instructor/ChatLogs.jsx | 637 +++++++++++---------- 1 file changed, 321 insertions(+), 316 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 5803bac..e98e267 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -1,15 +1,15 @@ import { - Typography, - Box, - Toolbar, - Paper, - Button, - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow + Typography, + Box, + Toolbar, + Paper, + Button, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow } from "@mui/material"; import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; @@ -33,326 +33,331 @@ function courseTitleCase(str) { } export const ChatLogs = ({ courseName, course_id }) => { - const [loading, setLoading] = useState(false); - const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); - const [previousChatLogs, setPreviousChatLogs] = useState([]); - - useEffect(() => { - checkNotificationStatus(); - fetchChatLogs(); - - // Auto-refresh logs every 5 minutes since presigned URLs expire - const interval = setInterval(fetchChatLogs, 5 * 60 * 1000); - return () => clearInterval(interval); - }, [course_id]); - - const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; - }; - - const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - console.log(`Download Chatlogs is ${data.isEnabled}`) - setIsDownloadButtonEnabled(data.isEnabled); - } else { - console.error("Failed to fetch notification status:", response.statusText); - } - } catch (error) { - console.error("Error checking notification status:", error); - } - }; - - const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } + const [loading, setLoading] = useState(false); + const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); + const [previousChatLogs, setPreviousChatLogs] = useState([]); + + useEffect(() => { + checkNotificationStatus(); + fetchChatLogs(); + + // Auto-refresh logs every 5 minutes since presigned URLs expire + const interval = setInterval(fetchChatLogs, 5 * 60 * 1000); + return () => clearInterval(interval); + }, [course_id]); + + const constructWebSocketUrl = () => { + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" ); - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); // Refresh button state - } else { - console.error("Failed to remove notification:", response.statusText); + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + }; + + const checkNotificationStatus = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + if (response.ok) { + const data = await response.json(); + console.log(`Download Chatlogs is ${data.isEnabled}`) + setIsDownloadButtonEnabled(data.isEnabled); + } else { + console.error("Failed to fetch notification status:", response.statusText); + } + } catch (error) { + console.error("Error checking notification status:", error); } - } catch (error) { - console.error("Error removing completed notification:", error); - } - }; - - const fetchChatLogs = async () => { - try { - setLoading(true); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chatlogs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, + }; + + const removeCompletedNotification = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + console.log("Notification removed successfully."); + await checkNotificationStatus(); // Refresh button state + } else { + console.error("Failed to remove notification:", response.statusText); } - ); - - if (response.ok) { - const data = await response.json(); - console.log("Chat logs fetched:", data); - if (data.log_files) { - const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ - date: fileName, // Using file name as the date - presignedUrl: presignedUrl, - })); - setPreviousChatLogs(formattedLogs); + } catch (error) { + console.error("Error removing completed notification:", error); + } + }; + + const fetchChatLogs = async () => { + try { + setLoading(true); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/fetch_chatlogs?course_id=${encodeURIComponent(course_id)}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + const data = await response.json(); + console.log("Chat logs fetched:", data); + if (data.log_files) { + const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ + date: fileName, // Using file name as the date + presignedUrl: presignedUrl, + })); + setPreviousChatLogs(formattedLogs); + } else { + setPreviousChatLogs([]); + } } else { - setPreviousChatLogs([]); + console.error("Failed to fetch chat logs:", response.statusText); } - } else { - console.error("Failed to fetch chat logs:", response.statusText); + } catch (error) { + console.error("Error fetching chat logs:", error); + } finally { + setLoading(false); } - } catch (error) { - console.error("Error fetching chat logs:", error); - } finally { - setLoading(false); - } - }; - - const downloadChatLog = (presignedUrl) => { - try { - console.log("Downloading file from:", presignedUrl); - window.open(presignedUrl, "_blank"); - } catch (error) { - console.error("Error downloading file:", error); - } -}; - - const generateCourseMessages = async () => { - try { - setIsDownloadButtonEnabled(false); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const request_id = uuidv4(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, - { - method: "POST", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - course_id: course_id, - instructor_email: email, - request_id: request_id, - }), + }; + + const downloadChatLog = (presignedUrl) => { + try { + console.log("Downloading file from:", presignedUrl); + window.open(presignedUrl, "_blank"); + } catch (error) { + console.error("Error downloading file:", error); } - ); - - if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - // Open WebSocket connection - const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL - const ws = new WebSocket(wsUrl, "graphql-ws"); - - // Handle WebSocket connection - ws.onopen = () => { - console.log("WebSocket connection established"); - - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = async (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - - // TODO: Update UI with the notification (e.g., toast notification, state update) - removeCompletedNotification(); - - // Refresh chat logs once the new log file is created - await fetchChatLogs(); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; + }; + + const generateCourseMessages = async () => { + try { + setIsDownloadButtonEnabled(false); + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const request_id = uuidv4(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, + { + method: "POST", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + course_id: course_id, + instructor_email: email, + request_id: request_id, + }), + } + ); + + if (response.ok) { + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); + + // Open WebSocket connection + const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL + const ws = new WebSocket(wsUrl, "graphql-ws"); + + // Handle WebSocket connection + ws.onopen = () => { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = async (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + + // TODO: Update UI with the notification (e.g., toast notification, state update) + removeCompletedNotification(); + + // Refresh chat logs once the new log file is created + await fetchChatLogs(); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 180000); - // Set a timeout to close the WebSocket if no message is received - setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); - } - }, 180000); - - } else { - console.error("Failed to submit job:", response.statusText); - } - } catch (error) { - console.error("Error submitting job:", error); - } - }; - - - return ( -
- - - - - {courseName} Chat Logs - - {/**/} - + + + + + {isDownloadButtonEnabled ? "Click the button to generate chat logs" : "Chat log generation in progress. Please wait..."} + + - Generate Classroom Chatlogs - - - - - - {isDownloadButtonEnabled ? "Click the button to generate chat logs" : "Chat log generation in progress. Please wait..."} - - - +
- Date - Download + Date + Download - - {previousChatLogs.length > 0 ? ( - previousChatLogs.map((log, index) => ( - - {log.date} - - - + + + {previousChatLogs.length > 0 ? ( + previousChatLogs.map((log, index) => ( + + {log.date} + + + + + )) + ) : ( + + No chat logs available. - )) - ) : ( - - No chat logs available. - - )} - -
-
-
- -
- ); + )} + + + +
+ +
+ ); }; export default ChatLogs; \ No newline at end of file From bf8ceae553e10fcc381b9201c6b7312aa1d559d0 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 13:04:32 -0800 Subject: [PATCH 060/111] fix: added request_id to chatlogs_notification table so that websocket can be opened for specific subscription on multiple pages. --- cdk/OpenAPI_Swagger_Definition.yaml | 5 +++++ cdk/lambda/initializer/initializer.py | 1 + cdk/lambda/lib/instructorFunction.js | 8 +++++--- cdk/lambda/lib/sqsFunction.js | 4 ++-- cdk/sqsTrigger/src/main.py | 14 +++++++------- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/cdk/OpenAPI_Swagger_Definition.yaml b/cdk/OpenAPI_Swagger_Definition.yaml index 7848015..3b0518b 100644 --- a/cdk/OpenAPI_Swagger_Definition.yaml +++ b/cdk/OpenAPI_Swagger_Definition.yaml @@ -3161,6 +3161,11 @@ paths: type: boolean nullable: true description: The actual value of the completion status. If the row does not exist, this will be null. + requestId: + type: string + format: uuid + nullable: true + description: The request_id used to subscribe to AppSync. If the row does not exist, this will be null. "400": description: Bad Request "404": diff --git a/cdk/lambda/initializer/initializer.py b/cdk/lambda/initializer/initializer.py index 04a950e..618dc4c 100644 --- a/cdk/lambda/initializer/initializer.py +++ b/cdk/lambda/initializer/initializer.py @@ -147,6 +147,7 @@ def handler(event, context): "id" uuid PRIMARY KEY DEFAULT (uuid_generate_v4()), "course_id" uuid NOT NULL, "instructor_email" varchar NOT NULL, + "request_id" uuid NOT NULL, "completion" boolean DEFAULT FALSE ); diff --git a/cdk/lambda/lib/instructorFunction.js b/cdk/lambda/lib/instructorFunction.js index 92912ad..77c5947 100644 --- a/cdk/lambda/lib/instructorFunction.js +++ b/cdk/lambda/lib/instructorFunction.js @@ -1194,7 +1194,7 @@ exports.handler = async (event) => { try { // Query to check the completion status in the chatlogs_notifications table const notificationStatus = await sqlConnection` - SELECT completion + SELECT completion, request_id FROM "chatlogs_notifications" WHERE instructor_email = ${instructor_email} AND course_id = ${course_id} LIMIT 1; @@ -1205,13 +1205,15 @@ exports.handler = async (event) => { response.statusCode = 200; response.body = JSON.stringify({ isEnabled: false, - completionStatus: notificationStatus[0].completion + completionStatus: notificationStatus[0].completion, + requestId: notificationStatus[0].request_id }); } else { response.statusCode = 200; response.body = JSON.stringify({ isEnabled: true, - completionStatus: null + completionStatus: null, + requestId: null }); } } catch (err) { diff --git a/cdk/lambda/lib/sqsFunction.js b/cdk/lambda/lib/sqsFunction.js index 3e7c6b1..ed0ef02 100644 --- a/cdk/lambda/lib/sqsFunction.js +++ b/cdk/lambda/lib/sqsFunction.js @@ -33,8 +33,8 @@ exports.handler = async (event) => { // Insert the record into the chatlogs_notifications table console.log("Inserting record into the chatlogs_notifications table with completion status FALSE"); await sqlConnection` - INSERT INTO "chatlogs_notifications" ("course_id", "instructor_email", "completion") - VALUES (${course_id}, ${instructor_email}, false) + INSERT INTO "chatlogs_notifications" ("course_id", "instructor_email", "request_id", "completion") + VALUES (${course_id}, ${instructor_email}, ${request_id}, false) ON CONFLICT DO NOTHING; `; diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index 0231490..fb77d9b 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -168,7 +168,7 @@ def upload_to_s3(file_path, course_id, instructor_email, file_name): logger.error(f"Error uploading file to S3: {e}") raise -def update_completion_status(course_id, instructor_email): +def update_completion_status(course_id, instructor_email, request_id): """ Updates the completion status to True in the chatlogs_notifications table. """ @@ -183,18 +183,18 @@ def update_completion_status(course_id, instructor_email): update_query = """ UPDATE chatlogs_notifications SET completion = TRUE - WHERE course_id = %s AND instructor_email = %s; + WHERE course_id = %s AND instructor_email = %s AND request_id = %s; """ - cur.execute(update_query, (course_id, instructor_email)) + cur.execute(update_query, (course_id, instructor_email, request_id)) connection.commit() cur.close() - logger.info(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}.") - print(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}.") + logger.info(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}, request_id: {request_id}.") + print(f"Completion status updated for course_id: {course_id}, instructor_email: {instructor_email}, request_id: {request_id}.") except Exception as e: if cur: cur.close() connection.rollback() - logger.error(f"Error updating completion status for course_id {course_id}, instructor_email {instructor_email}: {e}") + logger.error(f"Error updating completion status for course_id {course_id}, instructor_email {instructor_email}, request_id {request_id}: {e}") raise @@ -262,7 +262,7 @@ def handler(event, context): print("GOT got csv_path and csv_name") s3_uri = upload_to_s3(csv_path, course_id, instructor_email, csv_name) print("GOT s3_uri") - update_completion_status(course_id, instructor_email) + update_completion_status(course_id, instructor_email, request_id) print("Updating completion status") invoke_event_notification(request_id, message=f"Chat logs uploaded to {s3_uri}") print("FINALLY SENT NOTIFICATION") From 411931dd9169baafc23d74e1a9649e0304b0ff56 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 5 Feb 2025 15:11:23 -0800 Subject: [PATCH 061/111] feat: if the instructor exits the app before receiving a notification, the chatlog completion status is checked again. If true, instructor is notified. If false, websocket re-opens. --- .../pages/instructor/InstructorAnalytics.jsx | 177 +++++++++++++++++- 1 file changed, 175 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/instructor/InstructorAnalytics.jsx b/frontend/src/pages/instructor/InstructorAnalytics.jsx index c44b902..b7861db 100644 --- a/frontend/src/pages/instructor/InstructorAnalytics.jsx +++ b/frontend/src/pages/instructor/InstructorAnalytics.jsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { fetchAuthSession } from "aws-amplify/auth"; +import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; import { Container, Typography, @@ -12,6 +12,8 @@ import { LinearProgress, Grid, Paper, + Snackbar, + Alert, } from "@mui/material"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { @@ -58,6 +60,61 @@ const InstructorAnalytics = ({ courseName, course_id }) => { const [graphData, setGraphData] = useState([]); const [data, setData] = useState([]); const [maxMessages, setMaxMessages] = useState(0); + const [toastOpen, setToastOpen] = useState(false); + const [toastMessage, setToastMessage] = useState(""); + + const constructWebSocketUrl = () => { + const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL + const apiUrl = tempUrl.replace("https://", "wss://"); + const urlObj = new URL(apiUrl); + const tmpObj = new URL(tempUrl); + const modifiedHost = urlObj.hostname.replace( + "appsync-api", + "appsync-realtime-api" + ); + + urlObj.hostname = modifiedHost; + const host = tmpObj.hostname; + const header = { + host: host, + Authorization: "API_KEY=", + }; + + const encodedHeader = btoa(JSON.stringify(header)); + const payload = "e30="; + + return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; + }; + + const removeCompletedNotification = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/remove_completed_notification?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "DELETE", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + + if (response.ok) { + console.log("Notification removed successfully."); + } else { + console.error("Failed to remove notification:", response.statusText); + } + } catch (error) { + console.error("Error removing completed notification:", error); + } + }; useEffect(() => { const fetchAnalytics = async () => { @@ -92,7 +149,109 @@ const InstructorAnalytics = ({ courseName, course_id }) => { } }; + const checkNotificationStatus = async () => { + try { + const session = await fetchAuthSession(); + const token = session.tokens.idToken; + const { email } = await fetchUserAttributes(); + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT + }instructor/check_notifications_status?course_id=${encodeURIComponent( + course_id + )}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { + Authorization: token, + "Content-Type": "application/json", + }, + } + ); + if (response.ok) { + const data = await response.json(); + if (data.completionStatus === true) { + // Notify the user + console.log("Getting chatlogs is completed. Notifying the user and removing row from database."); + removeCompletedNotification(); + setToastMessage("CSV generation is complete!"); + setToastOpen(true); + } else if (data.completionStatus === false) { + // Reopen WebSocket to listen for notifications + console.log("Getting chatlogs is not completed. Re-opening the websocket."); + reopenWebSocket(data.requestId); + } else { + console.log("Either chatlogs were not requested or instructor already received notification. No need to notify instructor or re-open websocket."); + } + } else { + console.error("Failed to fetch notification status:", response.statusText); + } + } catch (error) { + console.error("Error checking notification status:", error); + } + }; + + const reopenWebSocket = (requestId) => { + const wsUrl = constructWebSocketUrl(); + const ws = new WebSocket(wsUrl, "graphql-ws"); + + ws.onopen = () => { + console.log("WebSocket connection re-established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${requestId}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + removeCompletedNotification(); + + setToastMessage("CSV generation is complete!"); + setToastOpen(true); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket connection closed"); + }; + }; + fetchAnalytics(); + checkNotificationStatus(); }, [course_id]); useEffect(() => { @@ -106,6 +265,10 @@ const InstructorAnalytics = ({ courseName, course_id }) => { setValue(newValue); }; + const handleCloseToast = () => { + setToastOpen(false); + }; + return ( { > {courseTitleCase(courseName)} + + + {toastMessage} + + { ); }; -export default InstructorAnalytics; +export default InstructorAnalytics; \ No newline at end of file From 955aa402ce5e0258306a27e387142998a462ed74 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 5 Feb 2025 16:39:17 -0800 Subject: [PATCH 062/111] updated loading for chat history page --- frontend/src/pages/instructor/ChatLogs.jsx | 71 +++++++++------------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index e98e267..1fd7896 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -289,13 +289,13 @@ export const ChatLogs = ({ courseName, course_id }) => { return (
- + {courseName} Chat Logs - +
); From 5c3bf6954caa22fd2d24863c8c679e758d8a73bd Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 7 Feb 2025 16:06:46 -0800 Subject: [PATCH 063/111] feat: created global websocket subscription to ensure all notifications are handled in one place, reduce API calling and polling, automatically reconnect websocket, and improve synchronization. --- cdk/sqsTrigger/src/main.py | 2 +- frontend/src/pages/instructor/ChatLogs.jsx | 145 ++------------- .../src/pages/instructor/CourseDetails.jsx | 4 +- .../pages/instructor/InstructorAnalytics.jsx | 175 +----------------- .../pages/instructor/InstructorHomepage.jsx | 158 +++++++++++++++- 5 files changed, 177 insertions(+), 307 deletions(-) diff --git a/cdk/sqsTrigger/src/main.py b/cdk/sqsTrigger/src/main.py index fb77d9b..f2d01a4 100644 --- a/cdk/sqsTrigger/src/main.py +++ b/cdk/sqsTrigger/src/main.py @@ -126,7 +126,7 @@ def write_to_csv(data, course_id, instructor_email): """ Writes the queried data to a CSV file. """ - timestamp = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") file_name = f"{timestamp}.csv" file_dir = f"/tmp/{course_id}/{instructor_email}" file_path = f"{file_dir}/{file_name}" diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index e98e267..8e98ba9 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -32,7 +32,7 @@ function courseTitleCase(str) { .join(" "); } -export const ChatLogs = ({ courseName, course_id }) => { +export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { const [loading, setLoading] = useState(false); const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); const [previousChatLogs, setPreviousChatLogs] = useState([]); @@ -46,29 +46,6 @@ export const ChatLogs = ({ courseName, course_id }) => { return () => clearInterval(interval); }, [course_id]); - const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; - }; - const checkNotificationStatus = async () => { try { const session = await fetchAuthSession(); @@ -99,37 +76,6 @@ export const ChatLogs = ({ courseName, course_id }) => { } }; - const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); // Refresh button state - } else { - console.error("Failed to remove notification:", response.statusText); - } - } catch (error) { - console.error("Error removing completed notification:", error); - } - }; - const fetchChatLogs = async () => { try { setLoading(true); @@ -181,6 +127,11 @@ export const ChatLogs = ({ courseName, course_id }) => { const generateCourseMessages = async () => { try { + console.log("openWebSocket function:", openWebSocket); + if (typeof openWebSocket !== "function") { + console.error("Error: openWebSocket is not a function!"); + return; + } setIsDownloadButtonEnabled(false); const session = await fetchAuthSession(); const token = session.tokens.idToken; @@ -204,82 +155,20 @@ export const ChatLogs = ({ courseName, course_id }) => { ); if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - // Open WebSocket connection - const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL - const ws = new WebSocket(wsUrl, "graphql-ws"); - - // Handle WebSocket connection - ws.onopen = () => { - console.log("WebSocket connection established"); + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = async (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - - // TODO: Update UI with the notification (e.g., toast notification, state update) - removeCompletedNotification(); - - // Refresh chat logs once the new log file is created - await fetchChatLogs(); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - - // Set a timeout to close the WebSocket if no message is received + // Invoke global WebSocket function from InstructorHomepage and delay checkNotificationStatus slightly + openWebSocket(courseName, course_id, request_id, () => { + console.log("Waiting before checking notification status..."); setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); - } - }, 180000); - + checkNotificationStatus(); + fetchChatLogs(); // Fetch latest chat logs after WebSocket completes + }, 2000); // Wait 2 seconds before checking + }); } else { - console.error("Failed to submit job:", response.statusText); + console.error("Failed to submit job:", response.statusText); } } catch (error) { console.error("Error submitting job:", error); diff --git a/frontend/src/pages/instructor/CourseDetails.jsx b/frontend/src/pages/instructor/CourseDetails.jsx index d11c064..9c89ae1 100644 --- a/frontend/src/pages/instructor/CourseDetails.jsx +++ b/frontend/src/pages/instructor/CourseDetails.jsx @@ -11,7 +11,7 @@ import ViewStudents from "./ViewStudents"; import InstructorModules from "./InstructorModules"; // course details page -const CourseDetails = () => { +const CourseDetails = ({ openWebSocket }) => { const { courseId } = useParams(); const [selectedComponent, setSelectedComponent] = useState( "InstructorAnalytics" @@ -66,6 +66,8 @@ const CourseDetails = () => { return ; case "ViewStudents": return ; + case "ChatLogs": + return ; default: return ( diff --git a/frontend/src/pages/instructor/InstructorAnalytics.jsx b/frontend/src/pages/instructor/InstructorAnalytics.jsx index b7861db..c9569e8 100644 --- a/frontend/src/pages/instructor/InstructorAnalytics.jsx +++ b/frontend/src/pages/instructor/InstructorAnalytics.jsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; +import { fetchAuthSession } from "aws-amplify/auth"; import { Container, Typography, @@ -12,8 +12,6 @@ import { LinearProgress, Grid, Paper, - Snackbar, - Alert, } from "@mui/material"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { @@ -60,61 +58,6 @@ const InstructorAnalytics = ({ courseName, course_id }) => { const [graphData, setGraphData] = useState([]); const [data, setData] = useState([]); const [maxMessages, setMaxMessages] = useState(0); - const [toastOpen, setToastOpen] = useState(false); - const [toastMessage, setToastMessage] = useState(""); - - const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; - }; - - const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - } else { - console.error("Failed to remove notification:", response.statusText); - } - } catch (error) { - console.error("Error removing completed notification:", error); - } - }; useEffect(() => { const fetchAnalytics = async () => { @@ -149,109 +92,7 @@ const InstructorAnalytics = ({ courseName, course_id }) => { } }; - const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - if (data.completionStatus === true) { - // Notify the user - console.log("Getting chatlogs is completed. Notifying the user and removing row from database."); - removeCompletedNotification(); - setToastMessage("CSV generation is complete!"); - setToastOpen(true); - } else if (data.completionStatus === false) { - // Reopen WebSocket to listen for notifications - console.log("Getting chatlogs is not completed. Re-opening the websocket."); - reopenWebSocket(data.requestId); - } else { - console.log("Either chatlogs were not requested or instructor already received notification. No need to notify instructor or re-open websocket."); - } - } else { - console.error("Failed to fetch notification status:", response.statusText); - } - } catch (error) { - console.error("Error checking notification status:", error); - } - }; - - const reopenWebSocket = (requestId) => { - const wsUrl = constructWebSocketUrl(); - const ws = new WebSocket(wsUrl, "graphql-ws"); - - ws.onopen = () => { - console.log("WebSocket connection re-established"); - - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${requestId}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - removeCompletedNotification(); - - setToastMessage("CSV generation is complete!"); - setToastOpen(true); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - }; - fetchAnalytics(); - checkNotificationStatus(); }, [course_id]); useEffect(() => { @@ -265,10 +106,6 @@ const InstructorAnalytics = ({ courseName, course_id }) => { setValue(newValue); }; - const handleCloseToast = () => { - setToastOpen(false); - }; - return ( { > {courseTitleCase(courseName)} - - - {toastMessage} - - { + console.log("WebSocket connection established"); + + // Initialize WebSocket connection + const initMessage = { type: "connection_init" }; + ws.send(JSON.stringify(initMessage)); + + // Subscribe to notifications + const subscriptionId = uuidv4(); + const subscriptionMessage = { + id: subscriptionId, + type: "start", + payload: { + data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${requestId}"}}`, + extensions: { + authorization: { + Authorization: "API_KEY=", + host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, + }, + }, + }, + }; + + ws.send(JSON.stringify(subscriptionMessage)); + console.log("Subscribed to WebSocket notifications"); + }; + + ws.onmessage = (event) => { + const message = JSON.parse(event.data); + console.log("WebSocket message received:", message); + + // Handle notification + if (message.type === "data" && message.payload?.data?.onNotify) { + const receivedMessage = message.payload.data.onNotify.message; + console.log("Notification received:", receivedMessage); + removeCompletedNotification(course_id); + alert(`Chat logs are now available for ${courseName}`); + + // Close WebSocket after receiving the notification + ws.close(); + console.log("WebSocket connection closed after handling notification"); + + // Call the callback function after WebSocket completes + if (typeof onComplete === "function") { + onComplete(); + } + } + }; + + ws.onerror = (error) => { + console.error("WebSocket error:", error); + ws.close(); + }; + + ws.onclose = () => { + console.log("WebSocket closed"); + }; + + // Set a timeout to close the WebSocket if no message is received + setTimeout(() => { + if (ws && ws.readyState === WebSocket.OPEN) { + console.warn("WebSocket timeout reached, closing connection"); + ws.close(); + } + }, 180000); +}; + // course details page const CourseDetails = () => { const location = useLocation(); @@ -84,8 +205,8 @@ const CourseDetails = () => { return ; case "ViewStudents": return ; - case "ChatLogs": // Add ChatLogs case - return ; + case "ChatLogs": + return ; default: return ( @@ -157,6 +278,7 @@ const InstructorHomepage = () => { id: course.course_id, })); setRows(formattedData); + checkNotificationStatus(data, email, token); } else { console.error("Failed to fetch courses:", response.statusText); } @@ -168,6 +290,36 @@ const InstructorHomepage = () => { fetchCourses(); }, []); + const checkNotificationStatus = async (courses, email, token) => { + for (const course of courses) { + try { + const response = await fetch( + `${import.meta.env.VITE_API_ENDPOINT}instructor/check_notifications_status?course_id=${encodeURIComponent(course.course_id)}&instructor_email=${encodeURIComponent(email)}`, + { + method: "GET", + headers: { Authorization: token, "Content-Type": "application/json" }, + } + ); + if (response.ok) { + const data = await response.json(); + if (data.completionStatus === true) { + console.log(`Getting chatlogs for ${course.course_name} is completed. Notifying the user and removing row from database.`); + alert(`Chat logs are available for course: ${course.course_name}`); + removeCompletedNotification(course.course_id); + } else if (data.completionStatus === false) { + // Reopen WebSocket to listen for notifications + console.log(`Getting chatlogs for ${course.course_name} is not completed. Re-opening the websocket.`); + openWebSocket(course.course_name, course.course_id, data.requestId); + } else { + console.log(`Either chatlogs for ${course.course_name} were not requested or instructor already received notification. No need to notify instructor or re-open websocket.`); + } + } + } catch (error) { + console.error("Error checking notification status for", course.course_id, error); + } + } + }; + const handleSearchChange = (event) => { setSearchQuery(event.target.value); }; @@ -305,7 +457,7 @@ const InstructorHomepage = () => { } /> - } /> + } /> } From 269f98e00f9b5c32f3b95c75a8d710fb24f7fa59 Mon Sep 17 00:00:00 2001 From: Aman Date: Fri, 7 Feb 2025 18:03:33 -0800 Subject: [PATCH 064/111] feat: implemented global notification context to manage chat log updates via websocket, red dot appears over ChatLogs icon when new file is generated. --- frontend/src/App.jsx | 73 ++++++++++--------- frontend/src/context/NotificationContext.jsx | 21 ++++++ frontend/src/pages/instructor/ChatLogs.jsx | 4 +- .../pages/instructor/InstructorHomepage.jsx | 26 +++++-- .../pages/instructor/InstructorSidebar.jsx | 20 +---- 5 files changed, 87 insertions(+), 57 deletions(-) create mode 100644 frontend/src/context/NotificationContext.jsx diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 26930a2..2136f16 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -20,6 +20,7 @@ import StudentChat from "./pages/student/StudentChat"; import AdminHomepage from "./pages/admin/AdminHomepage"; import InstructorHomepage from "./pages/instructor/InstructorHomepage"; import CourseView from "./pages/student/CourseView"; +import { NotificationProvider } from "./context/NotificationContext"; export const UserContext = createContext(); @@ -86,41 +87,43 @@ function App() { }; return ( - - - - : } - /> - - } - /> - - } - /> - - } /> - - - + + + + + : } + /> + + } + /> + + } + /> + + } /> + + + + ); } diff --git a/frontend/src/context/NotificationContext.jsx b/frontend/src/context/NotificationContext.jsx new file mode 100644 index 0000000..dc90ba8 --- /dev/null +++ b/frontend/src/context/NotificationContext.jsx @@ -0,0 +1,21 @@ +import React, { createContext, useState, useContext } from "react"; + +const NotificationContext = createContext(); + +export const NotificationProvider = ({ children }) => { + const [hasNewNotification, setHasNewNotification] = useState(false); + + return ( + + {children} + + ); +}; + +export const useNotification = () => { + const context = useContext(NotificationContext); + if (!context) { + throw new Error("useNotification must be used within a NotificationProvider"); + } + return context; +}; \ No newline at end of file diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 1f97180..c656567 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -15,6 +15,7 @@ import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { fetchAuthSession, fetchUserAttributes } from "aws-amplify/auth"; import { v4 as uuidv4 } from 'uuid'; +import { useNotification } from "../../context/NotificationContext"; function courseTitleCase(str) { if (typeof str !== "string") { @@ -36,6 +37,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { const [loading, setLoading] = useState(false); const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); const [previousChatLogs, setPreviousChatLogs] = useState([]); + const { setHasNewNotification } = useNotification(); useEffect(() => { checkNotificationStatus(); @@ -160,7 +162,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { console.log("Job submitted successfully:", data); // Invoke global WebSocket function from InstructorHomepage and delay checkNotificationStatus slightly - openWebSocket(courseName, course_id, request_id, () => { + openWebSocket(courseName, course_id, request_id, setHasNewNotification, () => { console.log("Waiting before checking notification status..."); setTimeout(() => { checkNotificationStatus(); diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index cdc0cb2..dc656b8 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -38,7 +38,8 @@ import StudentDetails from "./StudentDetails"; import InstructorNewConcept from "./InstructorNewConcept"; import InstructorConcepts from "./InstructorConcepts"; import InstructorEditConcept from "./InstructorEditConcept"; -import ChatLogs from "./ChatLogs"; // Import ChatLogs +import ChatLogs from "./ChatLogs"; +import { useNotification } from "../../context/NotificationContext"; import { UserContext } from "../../App"; function titleCase(str) { @@ -101,7 +102,7 @@ const removeCompletedNotification = async (course_id) => { } }; -function openWebSocket(courseName, course_id, requestId, onComplete) { +function openWebSocket(courseName, course_id, requestId, setHasNewNotification, onComplete) { // Open WebSocket connection const wsUrl = constructWebSocketUrl(); const ws = new WebSocket(wsUrl, "graphql-ws"); @@ -142,7 +143,14 @@ function openWebSocket(courseName, course_id, requestId, onComplete) { if (message.type === "data" && message.payload?.data?.onNotify) { const receivedMessage = message.payload.data.onNotify.message; console.log("Notification received:", receivedMessage); + + // Sets icon to show new file on ChatLogs page + setHasNewNotification(true); + + // Remove row from database removeCompletedNotification(course_id); + + // Notify the instructor alert(`Chat logs are now available for ${courseName}`); // Close WebSocket after receiving the notification @@ -241,8 +249,9 @@ const InstructorHomepage = () => { const [searchQuery, setSearchQuery] = useState(""); const [page, setPage] = useState(0); const [rowsPerPage, setRowsPerPage] = useState(5); - const [courseData, setCourseData] = useState([]); + const [courseData, setCourseData] = useState([]); const { isInstructorAsStudent } = useContext(UserContext); + const { setHasNewNotification } = useNotification(); const navigate = useNavigate(); useEffect(() => { @@ -304,12 +313,19 @@ const InstructorHomepage = () => { const data = await response.json(); if (data.completionStatus === true) { console.log(`Getting chatlogs for ${course.course_name} is completed. Notifying the user and removing row from database.`); - alert(`Chat logs are available for course: ${course.course_name}`); + + // Sets icon to show new file on ChatLogs page + setHasNewNotification(true); + + // Remove row from database removeCompletedNotification(course.course_id); + + // Notify the Instructor + alert(`Chat logs are available for course: ${course.course_name}`); } else if (data.completionStatus === false) { // Reopen WebSocket to listen for notifications console.log(`Getting chatlogs for ${course.course_name} is not completed. Re-opening the websocket.`); - openWebSocket(course.course_name, course.course_id, data.requestId); + openWebSocket(course.course_name, course.course_id, data.requestId, setHasNewNotification); } else { console.log(`Either chatlogs for ${course.course_name} were not requested or instructor already received notification. No need to notify instructor or re-open websocket.`); } diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index 856292c..31e106d 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -17,10 +17,11 @@ import EditIcon from "@mui/icons-material/Edit"; import PsychologyIcon from "@mui/icons-material/Psychology"; import GroupIcon from "@mui/icons-material/Group"; import DescriptionIcon from "@mui/icons-material/Description"; +import { useNotification } from "../../context/NotificationContext"; -const InstructorSidebar = ({ setSelectedComponent, onClearChatLogNotification }) => { +const InstructorSidebar = ({ setSelectedComponent }) => { const navigate = useNavigate(); - const [hasNewNotification, setHasNewNotification] = useState(false); + const { hasNewNotification, setHasNewNotification } = useNotification(); const handleNavigation = (component) => { if (component === "InstructorAllCourses") { @@ -28,24 +29,11 @@ const InstructorSidebar = ({ setSelectedComponent, onClearChatLogNotification }) } else { setSelectedComponent(component); if (component === "ChatLogs") { - onClearChatLogNotification?.(); - setHasNewNotification(false); // Clear notification on visit - - // Add logic here for setting the notification checked boolean to true - + setHasNewNotification(false); } } }; - useEffect(() => { - // Simulate receiving a notification - const timer = setTimeout(() => { - setHasNewNotification(true); - }, 1000); // Notification appears after 1 second - - return () => clearTimeout(timer); - }, []); - return ( Date: Mon, 10 Feb 2025 11:24:04 -0800 Subject: [PATCH 065/111] order of recent logs on chatLogs.jsx fixed --- frontend/src/pages/instructor/ChatLogs.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index c656567..856bf54 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -103,7 +103,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ date: fileName, // Using file name as the date presignedUrl: presignedUrl, - })); + })).reverse(); setPreviousChatLogs(formattedLogs); } else { setPreviousChatLogs([]); From be95598caac890340596bff03594ad91bbd572da Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 11 Feb 2025 14:09:42 -0800 Subject: [PATCH 066/111] ChatLogs.jsx local time zone fix instead of using UTC --- frontend/src/pages/instructor/ChatLogs.jsx | 21 ++++++++++++++++++- .../pages/instructor/InstructorSidebar.jsx | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 856bf54..9ed0e88 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -101,7 +101,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { console.log("Chat logs fetched:", data); if (data.log_files) { const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ - date: fileName, // Using file name as the date + date: convertToLocalTime(fileName), // Using file name as the date presignedUrl: presignedUrl, })).reverse(); setPreviousChatLogs(formattedLogs); @@ -118,6 +118,25 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { } }; + const convertToLocalTime = (fileName) => { + try { + // Extract timestamp from file name (assuming format: "YYYY-MM-DD HH:MM:SS.csv") + const match = fileName.match(/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/); + if (!match) { + console.warn("Could not extract a valid timestamp from filename:", fileName); + return fileName; // Return original name if no timestamp found + } + + // Convert the extracted UTC timestamp to local time + const utcDate = new Date(match[0] + " UTC"); // Append UTC to prevent incorrect local parsing + return utcDate.toLocaleString(undefined, { timeZoneName: "short" }); // Convert to user's local timezone + } catch (error) { + console.error("Error converting time:", error); + return fileName; // Fallback in case of error + } + }; + + const downloadChatLog = (presignedUrl) => { try { console.log("Downloading file from:", presignedUrl); diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index 31e106d..87971c6 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -118,4 +118,4 @@ const InstructorSidebar = ({ setSelectedComponent }) => { ); }; -export default InstructorSidebar; +export default InstructorSidebar; \ No newline at end of file From 5854785f7b4dc7f58ebfb04141d5794413c9a535 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 11 Feb 2025 17:10:27 -0800 Subject: [PATCH 067/111] reorder chat logs so most recent are first --- .../getChatLogsFunction.py | 3 ++ frontend/src/pages/instructor/ChatLogs.jsx | 30 +++++++++---------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py b/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py index 6a9d701..079f1bd 100644 --- a/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py +++ b/cdk/lambda/getChatLogsFunction/getChatLogsFunction.py @@ -42,6 +42,9 @@ def list_files_in_s3_prefix(bucket, prefix): else: break + # **Sort files in reverse order (most recent first)** + files.sort(reverse=True) + return files def generate_presigned_url(bucket, key): diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 9ed0e88..97130b5 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -103,7 +103,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { const formattedLogs = Object.entries(data.log_files).map(([fileName, presignedUrl]) => ({ date: convertToLocalTime(fileName), // Using file name as the date presignedUrl: presignedUrl, - })).reverse(); + })); setPreviousChatLogs(formattedLogs); } else { setPreviousChatLogs([]); @@ -126,7 +126,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { console.warn("Could not extract a valid timestamp from filename:", fileName); return fileName; // Return original name if no timestamp found } - + // Convert the extracted UTC timestamp to local time const utcDate = new Date(match[0] + " UTC"); // Append UTC to prevent incorrect local parsing return utcDate.toLocaleString(undefined, { timeZoneName: "short" }); // Convert to user's local timezone @@ -135,7 +135,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { return fileName; // Fallback in case of error } }; - + const downloadChatLog = (presignedUrl) => { try { @@ -176,20 +176,20 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { ); if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); + console.log(response) + const data = await response.json(); + console.log("Job submitted successfully:", data); - // Invoke global WebSocket function from InstructorHomepage and delay checkNotificationStatus slightly - openWebSocket(courseName, course_id, request_id, setHasNewNotification, () => { - console.log("Waiting before checking notification status..."); - setTimeout(() => { - checkNotificationStatus(); - fetchChatLogs(); // Fetch latest chat logs after WebSocket completes - }, 2000); // Wait 2 seconds before checking - }); + // Invoke global WebSocket function from InstructorHomepage and delay checkNotificationStatus slightly + openWebSocket(courseName, course_id, request_id, setHasNewNotification, () => { + console.log("Waiting before checking notification status..."); + setTimeout(() => { + checkNotificationStatus(); + fetchChatLogs(); // Fetch latest chat logs after WebSocket completes + }, 2000); // Wait 2 seconds before checking + }); } else { - console.error("Failed to submit job:", response.statusText); + console.error("Failed to submit job:", response.statusText); } } catch (error) { console.error("Error submitting job:", error); From 0b9fdd3bb7ab171ebc91f3c0f7130a60627bfb66 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 12 Feb 2025 10:53:13 -0800 Subject: [PATCH 068/111] duplicate notifications on instructor home page fixed --- frontend/src/pages/instructor/InstructorHomepage.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index dc656b8..4b426bf 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -320,8 +320,6 @@ const InstructorHomepage = () => { // Remove row from database removeCompletedNotification(course.course_id); - // Notify the Instructor - alert(`Chat logs are available for course: ${course.course_name}`); } else if (data.completionStatus === false) { // Reopen WebSocket to listen for notifications console.log(`Getting chatlogs for ${course.course_name} is not completed. Re-opening the websocket.`); From 15d352bb7c4405b2eb298291ce2e8cf0be02e3d2 Mon Sep 17 00:00:00 2001 From: Aman Date: Tue, 18 Feb 2025 13:21:13 -0800 Subject: [PATCH 069/111] fix: resolved issue where the notification state was shared across all courses by making it course-specific. --- frontend/src/context/NotificationContext.jsx | 8 ++++++-- frontend/src/pages/instructor/ChatLogs.jsx | 4 ++-- frontend/src/pages/instructor/CourseDetails.jsx | 2 +- .../src/pages/instructor/InstructorHomepage.jsx | 15 +++++++++------ .../src/pages/instructor/InstructorSidebar.jsx | 8 ++++---- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/frontend/src/context/NotificationContext.jsx b/frontend/src/context/NotificationContext.jsx index dc90ba8..6c7abda 100644 --- a/frontend/src/context/NotificationContext.jsx +++ b/frontend/src/context/NotificationContext.jsx @@ -3,10 +3,14 @@ import React, { createContext, useState, useContext } from "react"; const NotificationContext = createContext(); export const NotificationProvider = ({ children }) => { - const [hasNewNotification, setHasNewNotification] = useState(false); + const [notifications, setNotifications] = useState({}); + + const setNotificationForCourse = (courseId, hasNotification) => { + setNotifications((prev) => ({ ...prev, [courseId]: hasNotification })); + }; return ( - + {children} ); diff --git a/frontend/src/pages/instructor/ChatLogs.jsx b/frontend/src/pages/instructor/ChatLogs.jsx index 97130b5..2bd15b5 100644 --- a/frontend/src/pages/instructor/ChatLogs.jsx +++ b/frontend/src/pages/instructor/ChatLogs.jsx @@ -37,7 +37,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { const [loading, setLoading] = useState(false); const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); const [previousChatLogs, setPreviousChatLogs] = useState([]); - const { setHasNewNotification } = useNotification(); + const { setNotificationForCourse } = useNotification(); useEffect(() => { checkNotificationStatus(); @@ -181,7 +181,7 @@ export const ChatLogs = ({ courseName, course_id, openWebSocket }) => { console.log("Job submitted successfully:", data); // Invoke global WebSocket function from InstructorHomepage and delay checkNotificationStatus slightly - openWebSocket(courseName, course_id, request_id, setHasNewNotification, () => { + openWebSocket(courseName, course_id, request_id, setNotificationForCourse, () => { console.log("Waiting before checking notification status..."); setTimeout(() => { checkNotificationStatus(); diff --git a/frontend/src/pages/instructor/CourseDetails.jsx b/frontend/src/pages/instructor/CourseDetails.jsx index 9c89ae1..34a4241 100644 --- a/frontend/src/pages/instructor/CourseDetails.jsx +++ b/frontend/src/pages/instructor/CourseDetails.jsx @@ -83,7 +83,7 @@ const CourseDetails = ({ openWebSocket }) => { > - + {renderComponent()} ); diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index 4b426bf..71243f6 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -102,7 +102,7 @@ const removeCompletedNotification = async (course_id) => { } }; -function openWebSocket(courseName, course_id, requestId, setHasNewNotification, onComplete) { +function openWebSocket(courseName, course_id, requestId, setNotificationForCourse, onComplete) { // Open WebSocket connection const wsUrl = constructWebSocketUrl(); const ws = new WebSocket(wsUrl, "graphql-ws"); @@ -145,7 +145,7 @@ function openWebSocket(courseName, course_id, requestId, setHasNewNotification, console.log("Notification received:", receivedMessage); // Sets icon to show new file on ChatLogs page - setHasNewNotification(true); + setNotificationForCourse(course_id, true); // Remove row from database removeCompletedNotification(course_id); @@ -231,7 +231,7 @@ const CourseDetails = () => { > - + {renderComponent()} ); @@ -251,7 +251,7 @@ const InstructorHomepage = () => { const [rowsPerPage, setRowsPerPage] = useState(5); const [courseData, setCourseData] = useState([]); const { isInstructorAsStudent } = useContext(UserContext); - const { setHasNewNotification } = useNotification(); + const { setNotificationForCourse } = useNotification(); const navigate = useNavigate(); useEffect(() => { @@ -315,15 +315,18 @@ const InstructorHomepage = () => { console.log(`Getting chatlogs for ${course.course_name} is completed. Notifying the user and removing row from database.`); // Sets icon to show new file on ChatLogs page - setHasNewNotification(true); + setNotificationForCourse(course.course_id, true); // Remove row from database removeCompletedNotification(course.course_id); + // Notify the Instructor + alert(`Chat logs are available for course: ${course.course_name}`); + } else if (data.completionStatus === false) { // Reopen WebSocket to listen for notifications console.log(`Getting chatlogs for ${course.course_name} is not completed. Re-opening the websocket.`); - openWebSocket(course.course_name, course.course_id, data.requestId, setHasNewNotification); + openWebSocket(course.course_name, course.course_id, data.requestId, setNotificationForCourse); } else { console.log(`Either chatlogs for ${course.course_name} were not requested or instructor already received notification. No need to notify instructor or re-open websocket.`); } diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index 87971c6..5829542 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -19,9 +19,9 @@ import GroupIcon from "@mui/icons-material/Group"; import DescriptionIcon from "@mui/icons-material/Description"; import { useNotification } from "../../context/NotificationContext"; -const InstructorSidebar = ({ setSelectedComponent }) => { +const InstructorSidebar = ({ setSelectedComponent, course_id }) => { const navigate = useNavigate(); - const { hasNewNotification, setHasNewNotification } = useNotification(); + const { notifications, setNotificationForCourse } = useNotification(); const handleNavigation = (component) => { if (component === "InstructorAllCourses") { @@ -29,7 +29,7 @@ const InstructorSidebar = ({ setSelectedComponent }) => { } else { setSelectedComponent(component); if (component === "ChatLogs") { - setHasNewNotification(false); + setNotificationForCourse(course_id, false); } } }; @@ -105,7 +105,7 @@ const InstructorSidebar = ({ setSelectedComponent }) => { From a2f621de9ca71f130e8cb0f3e257226b0cbb2cc4 Mon Sep 17 00:00:00 2001 From: Aman Date: Tue, 18 Feb 2025 13:37:28 -0800 Subject: [PATCH 070/111] fix: resolved double notification issue by using useRef to prevent useEffect from running twice. --- frontend/src/pages/instructor/InstructorHomepage.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index 71243f6..267d467 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useContext } from "react"; +import React, { useState, useEffect, useContext, useRef } from "react"; import { Routes, Route, @@ -252,6 +252,7 @@ const InstructorHomepage = () => { const [courseData, setCourseData] = useState([]); const { isInstructorAsStudent } = useContext(UserContext); const { setNotificationForCourse } = useNotification(); + const hasFetched = useRef(false); const navigate = useNavigate(); useEffect(() => { @@ -261,6 +262,8 @@ const InstructorHomepage = () => { }, [isInstructorAsStudent, navigate]); // connect to api data useEffect(() => { + if (hasFetched.current) return; + const fetchCourses = async () => { try { const session = await fetchAuthSession(); @@ -297,6 +300,7 @@ const InstructorHomepage = () => { }; fetchCourses(); + hasFetched.current = true; }, []); const checkNotificationStatus = async (courses, email, token) => { From 8008c858f7e2067d24c0dd3249730d29492c506f Mon Sep 17 00:00:00 2001 From: Aman Date: Tue, 18 Feb 2025 14:11:37 -0800 Subject: [PATCH 071/111] fix: hide red notification dot on ChatLogs icon when already on ChatLogs page by passing selectedComponent from InstructorHomepage to InstructorSidebar. --- frontend/src/pages/instructor/CourseDetails.jsx | 2 +- frontend/src/pages/instructor/InstructorHomepage.jsx | 2 +- frontend/src/pages/instructor/InstructorSidebar.jsx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/instructor/CourseDetails.jsx b/frontend/src/pages/instructor/CourseDetails.jsx index 34a4241..3600b5e 100644 --- a/frontend/src/pages/instructor/CourseDetails.jsx +++ b/frontend/src/pages/instructor/CourseDetails.jsx @@ -83,7 +83,7 @@ const CourseDetails = ({ openWebSocket }) => { > - + {renderComponent()} ); diff --git a/frontend/src/pages/instructor/InstructorHomepage.jsx b/frontend/src/pages/instructor/InstructorHomepage.jsx index 267d467..9538adf 100644 --- a/frontend/src/pages/instructor/InstructorHomepage.jsx +++ b/frontend/src/pages/instructor/InstructorHomepage.jsx @@ -231,7 +231,7 @@ const CourseDetails = () => { > - + {renderComponent()} ); diff --git a/frontend/src/pages/instructor/InstructorSidebar.jsx b/frontend/src/pages/instructor/InstructorSidebar.jsx index 5829542..e813037 100644 --- a/frontend/src/pages/instructor/InstructorSidebar.jsx +++ b/frontend/src/pages/instructor/InstructorSidebar.jsx @@ -19,7 +19,7 @@ import GroupIcon from "@mui/icons-material/Group"; import DescriptionIcon from "@mui/icons-material/Description"; import { useNotification } from "../../context/NotificationContext"; -const InstructorSidebar = ({ setSelectedComponent, course_id }) => { +const InstructorSidebar = ({ setSelectedComponent, course_id, selectedComponent }) => { const navigate = useNavigate(); const { notifications, setNotificationForCourse } = useNotification(); @@ -105,7 +105,7 @@ const InstructorSidebar = ({ setSelectedComponent, course_id }) => { From c05e5129ba8747c341a4dbf39f655721ca689670 Mon Sep 17 00:00:00 2001 From: Aman Date: Wed, 19 Feb 2025 13:38:34 -0800 Subject: [PATCH 072/111] fix: removed download chatlogs button on ViewStudents page since it will be done on the ChatLogs page. --- .../src/pages/instructor/ViewStudents.jsx | 205 ------------------ 1 file changed, 205 deletions(-) diff --git a/frontend/src/pages/instructor/ViewStudents.jsx b/frontend/src/pages/instructor/ViewStudents.jsx index f3af182..c83ee9c 100644 --- a/frontend/src/pages/instructor/ViewStudents.jsx +++ b/frontend/src/pages/instructor/ViewStudents.jsx @@ -62,100 +62,9 @@ export const ViewStudents = ({ courseName, course_id }) => { const [rowsPerPage, setRowsPerPage] = useState(5); const [loading, setLoading] = useState(false); const [accessCode, setAccessCode] = useState("loading..."); - const [isDownloadButtonEnabled, setIsDownloadButtonEnabled] = useState(false); const navigate = useNavigate(); - const constructWebSocketUrl = () => { - const tempUrl = import.meta.env.VITE_GRAPHQL_WS_URL; // Replace with your WebSocket URL - const apiUrl = tempUrl.replace("https://", "wss://"); - const urlObj = new URL(apiUrl); - const tmpObj = new URL(tempUrl); - const modifiedHost = urlObj.hostname.replace( - "appsync-api", - "appsync-realtime-api" - ); - - urlObj.hostname = modifiedHost; - const host = tmpObj.hostname; - const header = { - host: host, - Authorization: "API_KEY=", - }; - - const encodedHeader = btoa(JSON.stringify(header)); - const payload = "e30="; - - return `${urlObj.toString()}?header=${encodedHeader}&payload=${payload}`; - }; - - const checkNotificationStatus = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT - }instructor/check_notifications_status?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "GET", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - if (response.ok) { - const data = await response.json(); - console.log(`Download Chatlogs is ${data.isEnabled}`) - setIsDownloadButtonEnabled(data.isEnabled); - } else { - console.error("Failed to fetch notification status:", response.statusText); - } - } catch (error) { - console.error("Error checking notification status:", error); - } - }; - - useEffect(() => { - checkNotificationStatus(); - }, [course_id]); - - const removeCompletedNotification = async () => { - try { - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - - const response = await fetch( - `${ - import.meta.env.VITE_API_ENDPOINT - }instructor/remove_completed_notification?course_id=${encodeURIComponent( - course_id - )}&instructor_email=${encodeURIComponent(email)}`, - { - method: "DELETE", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - } - ); - - if (response.ok) { - console.log("Notification removed successfully."); - await checkNotificationStatus(); // Refresh button state - } else { - console.error("Failed to remove notification:", response.statusText); - } - } catch (error) { - console.error("Error removing completed notification:", error); - } - }; - useEffect(() => { const fetchCode = async () => { try { @@ -228,111 +137,7 @@ export const ViewStudents = ({ courseName, course_id }) => { fetchStudents(); }, []); - - const fetchCourseMessages = async () => { - try { - setIsDownloadButtonEnabled(false); - const session = await fetchAuthSession(); - const token = session.tokens.idToken; - const { email } = await fetchUserAttributes(); - const request_id = uuidv4(); - const response = await fetch( - `${import.meta.env.VITE_API_ENDPOINT}instructor/course_messages`, - { - method: "POST", - headers: { - Authorization: token, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - course_id: course_id, - instructor_email: email, - request_id: request_id, - }), - } - ); - - if (response.ok) { - console.log(response) - const data = await response.json(); - console.log("Job submitted successfully:", data); - - // Open WebSocket connection - const wsUrl = constructWebSocketUrl(); // Function to construct WebSocket URL - const ws = new WebSocket(wsUrl, "graphql-ws"); - - // Handle WebSocket connection - ws.onopen = () => { - console.log("WebSocket connection established"); - - // Initialize WebSocket connection - const initMessage = { type: "connection_init" }; - ws.send(JSON.stringify(initMessage)); - - // Subscribe to notifications - const subscriptionId = uuidv4(); - const subscriptionMessage = { - id: subscriptionId, - type: "start", - payload: { - data: `{"query":"subscription OnNotify($request_id: String!) { onNotify(request_id: $request_id) { message request_id } }","variables":{"request_id":"${request_id}"}}`, - extensions: { - authorization: { - Authorization: "API_KEY=", - host: new URL(import.meta.env.VITE_GRAPHQL_WS_URL).hostname, - }, - }, - }, - }; - - ws.send(JSON.stringify(subscriptionMessage)); - console.log("Subscribed to WebSocket notifications"); - }; - - ws.onmessage = (event) => { - const message = JSON.parse(event.data); - console.log("WebSocket message received:", message); - - // Handle notification - if (message.type === "data" && message.payload?.data?.onNotify) { - const receivedMessage = message.payload.data.onNotify.message; - console.log("Notification received:", receivedMessage); - - // TODO: Update UI with the notification (e.g., toast notification, state update) - removeCompletedNotification(); - - // Close WebSocket after receiving the notification - ws.close(); - console.log("WebSocket connection closed after handling notification"); - } - }; - - ws.onerror = (error) => { - console.error("WebSocket error:", error); - ws.close(); - }; - - ws.onclose = () => { - console.log("WebSocket connection closed"); - }; - - // Set a timeout to close the WebSocket if no message is received - setTimeout(() => { - if (ws && ws.readyState === WebSocket.OPEN) { - console.warn("WebSocket timeout reached, closing connection"); - ws.close(); - } - }, 600000); - - } else { - console.error("Failed to submit job:", response.statusText); - } - } catch (error) { - console.error("Error submitting job:", error); - } - }; - const handleGenerateAccessCode = async () => { try { const session = await fetchAuthSession(); @@ -404,16 +209,6 @@ export const ViewStudents = ({ courseName, course_id }) => { > {courseTitleCase(courseName)} Students - From 472b2d9e715c2f2d8e4826bd562d02dcf10fb946 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 19 Feb 2025 14:18:14 -0800 Subject: [PATCH 073/111] deployment guide upadted for different types of cmd line --- docs/deploymentGuide.md | 140 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 132 insertions(+), 8 deletions(-) diff --git a/docs/deploymentGuide.md b/docs/deploymentGuide.md index 40c5f0d..0c5de80 100644 --- a/docs/deploymentGuide.md +++ b/docs/deploymentGuide.md @@ -74,32 +74,125 @@ cd AI-Learning-Assistant ``` ### Step 2: Upload Secrets -You would have to supply your GitHub personal access token you created earlier when deploying the solution. Run the following command and ensure you replace `` and `` with your actual GitHub token and the appropriate AWS profile name. -``` +You would have to supply your GitHub personal access token you created earlier when deploying the solution. Run the following command and ensure you replace `` and `` with your actual GitHub token and the appropriate AWS profile name. Select the command corresponding to your operating system from the options below. + +
+macOS + +```bash aws secretsmanager create-secret \ --name github-personal-access-token \ - --secret-string '{\"my-github-token\":\"\"}'\ + --secret-string '{"my-github-token": ""}' \ --profile ``` -Moreover, you will need to upload your github username to Amazon SSM Parameter Store. You can do so by running the following command. Make sure you replace `` and `` with your actual username and the appropriate AWS profile name. +
+ +
+Windows CMD + +```cmd +aws secretsmanager create-secret ^ + --name github-personal-access-token ^ + --secret-string "{\"my-github-token\": \"\"}" ^ + --profile +``` + +
+
+PowerShell + +```powershell +aws secretsmanager create-secret ` + --name github-personal-access-token ` + --secret-string '{"my-github-token": ""}' ` + --profile ``` +
+ +  + +Moreover, you will need to upload your github username to Amazon SSM Parameter Store. You can do so by running the following command. Make sure you replace `` and `` with your actual username and the appropriate AWS profile name. + + +
+macOS + +```bash aws ssm put-parameter \ --name "aila-owner-name" \ --value "" \ --type String \ --profile ``` +
-You would have to supply a custom database username when deploying the solution to increase security. Run the following command and ensure you replace `` with the custom name of your choice. +
+Windows CMD +```cmd +aws ssm put-parameter ^ + --name "aila-owner-name" ^ + --value "" ^ + --type String ^ + --profile ``` + +
+ +
+PowerShell + +```powershell +aws ssm put-parameter ` + --name "aila-owner-name" ` + --value "" ` + --type String ` + --profile +``` +
+ +  + +You would have to supply a custom database username when deploying the solution to increase security. Run the following command and ensure you replace `` with the custom name of your choice. + + +
+macOS + +```bash aws secretsmanager create-secret \ - --name AILASecrets \ - --secret-string '{\"DB_Username\":\"\"}'\ + --name AILASecret \ + --secret-string "{\"DB_Username\":\"\"}"\ + --profile +``` +
+ +
+Windows CMD + +```cmd +aws secretsmanager create-secret ^ + --name AILASecret ^ + --secret-string "{\"DB_Username\":\"\"}"^ + --profile +``` + +
+ +
+PowerShell + +```powershell +aws secretsmanager create-secret ` + --name AILASecret ` + --secret-string "{\"DB_Username\":\"\"}"` --profile ``` +
+ +  For example, @@ -112,13 +205,44 @@ aws secretsmanager create-secret \ Finally, in order to restrict user sign up to specific email domains, you will need to upload a comma separated list of allowed email domains to Amazon SSM Parameter Store. You can do so by running the following command. Make sure you replace `` and `` with your actual list and the appropriate AWS profile name. -``` +
+macOS + +```bash aws ssm put-parameter \ --name "/AILA/AllowedEmailDomains" \ --value "" \ --type SecureString \ --profile ``` +
+ +
+Windows CMD + +```cmd +aws ssm put-parameter ^ + --name "/AILA/AllowedEmailDomains" ^ + --value "" ^ + --type SecureString ^ + --profile +``` + +
+ +
+PowerShell + +```powershell +aws ssm put-parameter ` + --name "/AILA/AllowedEmailDomains" ` + --value "" ` + --type SecureString ` + --profile +``` +
+ +  For example, From 84c7ce26199d95d36cb1cf1a1f84c5d641ce6298 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Mon, 24 Feb 2025 16:47:49 -0800 Subject: [PATCH 074/111] security guide documentation added to project --- docs/images/NetworkDiagram.png | Bin 0 -> 70552 bytes docs/securityGuide.md | 370 +++++++++++++++++++++++++++++++++ 2 files changed, 370 insertions(+) create mode 100644 docs/images/NetworkDiagram.png create mode 100644 docs/securityGuide.md diff --git a/docs/images/NetworkDiagram.png b/docs/images/NetworkDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a9911283e2429d879c6f961a541ca710951c0a8f GIT binary patch literal 70552 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 literal 0 HcmV?d00001 diff --git a/docs/securityGuide.md b/docs/securityGuide.md new file mode 100644 index 0000000..166a9e2 --- /dev/null +++ b/docs/securityGuide.md @@ -0,0 +1,370 @@ +# Security Documentation & Network Architecture + +## 1. Network Architecture + + + +![Network Architecture Diagram](images/NetworkDiagram.png) + +### 1.1 VPC & Subnets +VPC Configuration: +- Leveraged existing VPC in AWS Hybrid Account (organizational policies prevent new VPC creation) +- CIDR Range: 172.31.0.0/16 (inherited from existing VPC configuration) + +#### Subnet Configuration: + +| Subnet Type | CIDR | AZ | Key Services | +|-------------|----------------|-----------------|------------------------------------| +| Private | 172.31.32.0/20 | ca-central-1a | Lambda | +| Private | 172.31.64.0/20 | ca-central-1b | RDS Proxy | +| Private | 172.31.80.0/20 | ca-central-1c | Backup Services | +| Public | 172.31.XX.0/20 | ca-central-1 | NAT Gateway, Internet Gateway | + + +#### Services Deployment: + +#### Private Subnets: +- **AWS Lambda:** + - Runtime environment for application logic + - No public IP addresses + - Outbound internet via NAT Gateway + +- **Amazon ECR:** + - Lambda functions utilize Docker images stored in Amazon ECR + - Images are securely pulled over the internet via the NAT Gateway + +- **Amazon RDS (PostgreSQL):** + - Accessed exclusively via RDS Proxy + - No direct public access + - Encrypted connections via SSL/TLS + + Since VPC Endpoints are not used, Lambda accesses S3, ECR, and other AWS services over the public internet through the NAT Gateway. + + +#### Public Subnets: +- **NAT Gateway:** + - Required for private subnet services to fetch external packages/updates + - Egress-only internet access for Lambda + - Cost-optimized single AZ deployment + +- **Internet Gateway:** + - Enables public access to API Gateway + - Managed by central cloud team in Hybrid Account + +#### Non-VPC Services: +- **S3 Buckets:** + - Accessed via NAT Gateway through Lambda functions + - No internet routing through NAT Gateway + +- **API Gateway:** + - Deployed in AWS public cloud space + - Protected by regional security controls + +- **Amazon Bedrock:** + - Requires explicit model access requests for utilization + - API interactions secured using IAM roles and encrypted connections + +- **AWS AppSync:** + - Provides real-time data queries and synchronizes data between clients and backend + - Integrated with IAM for authentication and runs in the public cloud space + - SQS queues with server-side encryption (SSE) enabled using AWS-managed keys + - Only specific Lambda functions are granted permissions to send or receive messages + + +### 1.2 Hybrid Account Constraints + +**VPC Creation Restriction:** Must use existing VPC within the UBC AWS account + +**Gateway Management:** +- Internet Gateway: pre-attached to VPC +- NAT Gateway: shared across multiple projects + + + + +## 2. Security Controls + +### 2.1 Network Security + +**Security Groups:** + +| Name | ID | Rules | +|---------------|-----------|-------------------------------------------------| +| Lambda-SG | sg-1234 | Allow outbound: 5432 (RDS Proxy) | +| RDS-Proxy-SG | sg-5678 | Allow inbound: 5432 from Lambda-SG | +| Default-SG | sg-default| Block all inbound, allow outbound | + +**NACLs:** +- Default NACLs in use +- No custom rules - inherits Control Tower baseline: + - Inbound: ALLOW ALL + - Outbound: ALLOW ALL + + + +## 3. Data Store Security + +### 3.1 Encryption + +**Purpose:** Ensure all stored data is encrypted at rest to meet compliance and security standards + + +| Service | Encryption | Validation | +|-----------|--------------------------|--------------------------------------| +| S3 | SSE-S3 (AES-256) | lib/storage-stack.ts Line 88 | +| RDS | KMS + SSL (TLS 1.2+) | lib/database-stack.ts Line 127 | + +### 3.2 Access Controls + +#### RDS Proxy: +- IAM authentication required +- Connection pooling limits credential exposure +- Audit logs enabled via CloudWatch + + + + +## 4. Secrets & Parameters + +### 4.1 Credential Management + +**Purpose:** Securely manage sensitive credentials such as RDS passwords + +#### AWS Secrets Manager: +- Creates a new secret named DBSecret for RDS credentials +- Configures automatic rotation of the secret every 90 days +- Uses a specified Lambda function (rotationLambda) to manage the rotation process +- Enhances security by regularly updating credentials without manual intervention +- Supports compliance by enforcing periodic secret rotation policies + + + +## 5. Security Services + +### 5.1 AWS WAF & Shield + +**WAF Rules Applied:** +- SQLi Protection (AWSManagedRulesSQLiRuleSet) +- XSS Protection (AWSManagedRulesXSSRuleSet) +- Request Threshold: 100 requests/min per IP + +**Shield Standard:** +- Enabled on API Gateway +- CloudWatch alarms for DDoS detection + + +### 5.2 Security Hub + +**Purpose:** Enable continuous security monitoring and automate compliance checks + +#### Account-level monitoring: + +- Enable Security Hub in the AWS Management Console for the target region (e.g., ca-central-1) +- Integrate Security Hub with AWS services (e.g., GuardDuty, Config, Macie) for comprehensive security analysis +- Use Security Hub Insights to identify and prioritize security issues across AWS accounts + +#### How to Use: + +- Navigate to Security Hub in the AWS console +- Review findings generated from AWS best practices and integrated security services +- Apply security standards like AWS Foundational Security Best Practices +- Use custom insights and filters (e.g., resources.tags.Project = "AILA") to focus on relevant resources +- Remediate issues based on the severity and compliance requirements + + +## 6. RDS Security + +### 6.1 RDS Encryption + +**Purpose:** Secure RDS data at rest using AWS KMS encryption and prevent accidental deletion + +- Enabled storage encryption for storageEncrypted is set to true +- Referenced an existing KMS key using kms.Key.fromKeyArn() for encryption +- deletionProtection is set to true to prevent unintended RDS deletions. + +### 6.2 RDS Security Groups + +**Purpose:** Control database access by allowing PostgreSQL traffic (5432) only from trusted CIDRs + +CDK Implmentation: +```typescript +vpcStack.privateSubnetsCidrStrings.forEach((cidr) => { + dbSecurityGroup.addIngressRule( + ec2.Peer.ipv4(cidr), + ec2.Port.tcp(5432), + `Allow PostgreSQL traffic from ${cidr}` + ); +}); + +``` + + +## 7. S3 Security + +### Bucket Security Configurations + +**Purpose:** Ensure data confidentiality by encrypting S3 objects and blocking public access + +- Enabled S3-managed encryption (S3_MANAGED) for data at rest +- Blocked all public access with blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL +- Enforced SSL connections for secure data transfer by setting enforceSSL: true + +CDK Implmentation: +```typescript +blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, +enforceSSL: true, // Enforce secure data transfer +encryption: s3.BucketEncryption.S3_MANAGED, +``` + +## 8. Security Group Configurations + +**Purpose:** Secure network access between AWS components, ensuring least-privilege access + +### 8.1 Key Security Group Controls in CDK: + +| **Component** | **CDK Location** | **Key Security Control** | **Purpose** | +|----------------|------------------------|---------------------------------------------------------------|--------------------------------------------------| +| **RDS** | `DatabaseStack` | PostgreSQL (5432) only from private/VPC CIDRs | Restricts DB access to internal networks | +| **Lambda** | `ApiGatewayStack` | IAM policies for Secrets, ENI management, and SQS access | Limits Lambda access to necessary resources | +| **SQS** | `ApiGatewayStack` | Lambda-only `SendMessage` access via `addToResourcePolicy` | Secures SQS queue from unauthorized access | +| **AppSync** | `ApiGatewayStack` | Lambda authorizer & `appsync:GraphQL` permissions | Ensures secure, authenticated access to GraphQL APIs | +| **RDS Proxy** | `DatabaseStack` | IAM-based `rds-db:connect` permissions | Adds an extra layer of security between Lambda and RDS | + + +### 8.2 Examples from CDK infrastructure where these security measures are implemented: + +#### Lambda Access to Secrets Manager: +```javascript +lambdaRole.addToPolicy( + new iam.PolicyStatement({ + actions: ["secretsmanager:GetSecretValue"], + resources: [`arn:aws:secretsmanager:${this.region}:${this.account}:secret:*`], + }) +); +``` + +#### SQS Queue Security (Lambda-Only Access): +``` +messagesQueue.addToResourcePolicy( + new iam.PolicyStatement({ + actions: ["sqs:SendMessage"], + principals: [new iam.ServicePrincipal("lambda.amazonaws.com")], + resources: [messagesQueue.queueArn], + }) +); +``` + +#### Private Subnet Access: Allows PostgreSQL traffic (port 5432) only from private subnet CIDRs: +```typescript +vpcStack.privateSubnetsCidrStrings.forEach((cidr) => { + dbSecurityGroup.addIngressRule( + ec2.Peer.ipv4(cidr), + ec2.Port.tcp(5432), + `Allow PostgreSQL traffic from private subnet CIDR range ${cidr}` + ); +}); +``` + + +#### Lambda Network Access: Enables Lambda to create network interfaces (ENIs) for VPC access +```typescript +this.dbInstance.connections.securityGroups.forEach((securityGroup) => { + securityGroup.addIngressRule( + ec2.Peer.ipv4(vpcStack.vpcCidrString), + ec2.Port.tcp(5432), + "Allow PostgreSQL traffic from public subnets" + ); +}); +``` + +#### Lambda Access to Secrets Manager: +```typescript +lambdaRole.addToPolicy( + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ["secretsmanager:GetSecretValue"], + resources: [`arn:aws:secretsmanager:${this.region}:${this.account}:secret:*`], + }) +); +``` + + +#### SQS Queue Security (Lambda-Only Access): +```typescript +messagesQueue.addToResourcePolicy( + new iam.PolicyStatement({ + actions: ["sqs:SendMessage"], + principals: [new iam.ServicePrincipal("lambda.amazonaws.com")], + resources: [messagesQueue.queueArn], + }) +); +``` + +### 8.3 Lambda Function Access & Invocation + + +#### **Summary of Lambda Function Access**: + +| **Lambda Function** | **Access Level** | **Trigger/Invocation** | **Who Can Access?** | +|-------------------------------------|-------------------|-------------------------------------------|--------------------------------------------| +| `studentFunction` | Private | API Gateway (via Cognito, `/student/*`) | Authenticated users in **student** group | +| `instructorFunction` | Private | API Gateway (via Cognito, `/instructor/*`) | Authenticated users in **instructor** group| +| `adminFunction` | Private | API Gateway (via Cognito, `/admin/*`) | Authenticated users in **admin** group | +| `preSignupLambda` | Private | Cognito **Pre-Sign-Up** trigger | **Cognito internal trigger** only | +| `addStudentOnSignUp` | Private | Cognito **Post-Confirmation** trigger | **Cognito internal trigger** only | +| `adjustUserRoles` | Private | Cognito **Post-Authentication** trigger | **Cognito internal trigger** only | +| `TextGenLambdaDockerFunc` | Private | API Gateway (`/student/*`) | **student** group users | +| `GeneratePreSignedURLFunc` | Private | API Gateway (`/instructor/*`) | **instructor** group users | +| `DataIngestLambdaDockerFunc` | Private | S3 Event (S3 PUT/DELETE) | Triggered by **S3 events** only | +| `GetFilesFunction` | Private | API Gateway (`/instructor/*`) | **instructor** group users | +| `DeleteFileFunc` | Private | API Gateway (`/instructor/*`) | **instructor** group users | +| `DeleteModuleFunc` | Private | API Gateway (`/instructor/*`) | **instructor** group users | +| `DeleteLastMessage` | Private | API Gateway (`/student/*`) | **student** group users | +| `adminLambdaAuthorizer` | Private | API Gateway Lambda Authorizer (Admin) | Internal to **API Gateway** for auth checks| +| `studentLambdaAuthorizer` | Private | API Gateway Lambda Authorizer (Student) | Internal to **API Gateway** for auth checks| +| `instructorLambdaAuthorizer` | Private | API Gateway Lambda Authorizer (Instructor)| Internal to **API Gateway** for auth checks| + + + + +## 9. Cognito User Authentication + +### 9.1 Purpose + +AWS Cognito provides user authentication and authorization, enabling **secure access** to Lambda functions based on user roles. By integrating Cognito with Lambda, we ensure that **only authenticated users** with the **appropriate permissions** can invoke Lambda functions, maintaining the **principle of least privilege**. + +--- + +### 9.2 How Cognito Controls Lambda Invocation + +- **User Pool Creation:** + Cognito **User Pools** manage user registration and sign-in. + - Supports multi-role user groups (e.g., student, instructor, admin). + - Automatic verification of user credentials. + +- **Role-Based Access Control (RBAC):** + Cognito assigns **IAM roles** based on user groups, allowing **fine-grained access control** to specific Lambda functions. + - Example roles: `StudentRole`, `InstructorRole`, `AdminRole`. + - IAM policies attached to each role define permitted Lambda invocations. + +- **Lambda Integration:** + Cognito-generated **JWT tokens** are validated by Lambda **authorizer functions** to ensure: + - Only **authorized users** can invoke specific Lambda endpoints. + - Access is logged and monitored via **CloudWatch**. + +--- + +### 9.3 Cognito Integration in CDK (ApiGatewayStack) + +#### **User Pool & App Client Configuration:** +```typescript +const userPool = new cognito.UserPool(this, 'UserPool', { + signInAliases: { email: true }, + selfSignUpEnabled: true, + userVerification: { emailStyle: cognito.VerificationEmailStyle.CODE }, + passwordPolicy: { minLength: 8, requireLowercase: true, requireUppercase: true }, +}); + +const appClient = userPool.addClient('AppClient', { + authFlows: { userPassword: true, userSrp: true }, +}); From c7f408be8ea73bb788235be22e8793fd466486dd Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Mon, 24 Feb 2025 16:55:18 -0800 Subject: [PATCH 075/111] README updated with security guide --- README.md | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 33db63d..edfbd2c 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,20 @@ This prototype explores how Large Language Models (LLMs) can enhance education by offering a personalized and adaptive learning experience. The LLM complements an instructor's role by providing tailored feedback, identifying knowledge gaps, and recommending targeted resources to students. This approach resonates with the core principles of personalized education, transforming the learning experience into a journey of self-discovery and growth. -| Index | Description | -| :-------------------------------------------------- | :------------------------------------------------------ | -| [High Level Architecture](#high-level-architecture) | High level overview illustrating component interactions | -| [Deployment](#deployment-guide) | How to deploy the project | -| [User Guide](#user-guide) | The working solution | -| [Directories](#directories) | General project directory structure | -| [RAG Documentation](#rag-documentation) | Documentation on how the project uses RAG | -| [API Documentation](#api-documentation) | Documentation on the API the project uses | -| [Changelog](#changelog) | Any changes post publish | -| [Credits](#credits) | Meet the team behind the solution | -| [License](#license) | License details | +| Index | Description | +| :------------------------------------------------------ | :------------------------------------------------------ | +| [High Level Architecture](#high-level-architecture) | High level overview illustrating component interactions | +| [Deployment](#deployment-guide) | How to deploy the project | +| [User Guide](#user-guide) | The working solution | +| [Security & Network Guide](#security-guide-and-network-configuration) | Analysis on network architecture and security | +| [Directories](#directories) | General project directory structure | +| [RAG Documentation](#rag-documentation) | Documentation on how the project uses RAG | +| [API Documentation](#api-documentation) | Documentation on the API the project uses | +| [Changelog](#changelog) | Any changes post publish | +| [Credits](#credits) | Meet the team behind the solution | +| [License](#license) | License details | + +--- ## High-Level Architecture @@ -29,6 +32,12 @@ To deploy this solution, please follow the steps laid out in the [Deployment Gui Please refer to the [Web App User Guide](./docs/userGuide.md) for instructions on navigating the web app interface. + +## Security Guide and Network Configuration + +Please refer to the [Security Guide](./docs/securityGuide.md) for an analysis on the network architecture and security of the project + + ## Directories ``` From cb8a7dcd4eca5e504e6e590bdaebced981911895 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Mon, 24 Feb 2025 17:11:16 -0800 Subject: [PATCH 076/111] WAF added to api-gateway --- cdk/lib/api-gateway-stack.ts | 57 ++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index 3964dc5..b8573c0 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -5,6 +5,7 @@ import * as lambdaEventSources from "aws-cdk-lib/aws-lambda-event-sources"; import * as iam from "aws-cdk-lib/aws-iam"; import { Construct } from "constructs"; import { Duration } from "aws-cdk-lib"; +import * as wafv2 from "aws-cdk-lib/aws-wafv2"; import { Architecture, Code, @@ -1618,6 +1619,62 @@ export class ApiGatewayStack extends cdk.Stack { action: "lambda:InvokeFunction", sourceArn: `arn:aws:execute-api:${this.region}:${this.account}:${this.api.restApiId}/*/*/instructor*`, }); + + // Waf Firewall + const waf = new wafv2.CfnWebACL(this, `${id}-waf`, { + description: "AILA waf", + scope: "REGIONAL", + defaultAction: { allow: {} }, + visibilityConfig: { + sampledRequestsEnabled: true, + cloudWatchMetricsEnabled: true, + metricName: "digitalstrategyassistant-firewall", + }, + rules: [ + { + name: "AWS-AWSManagedRulesCommonRuleSet", + priority: 1, + statement: { + managedRuleGroupStatement: { + vendorName: "AWS", + name: "AWSManagedRulesCommonRuleSet", + }, + }, + overrideAction: { none: {} }, + visibilityConfig: { + sampledRequestsEnabled: true, + cloudWatchMetricsEnabled: true, + metricName: "AWS-AWSManagedRulesCommonRuleSet", + }, + }, + { + name: "LimitRequests1000", + priority: 2, + action: { + block: {}, + }, + statement: { + rateBasedStatement: { + limit: 1000, + aggregateKeyType: "IP", + }, + }, + visibilityConfig: { + sampledRequestsEnabled: true, + cloudWatchMetricsEnabled: true, + metricName: "LimitRequests1000", + }, + }, + ], + }); + const wafAssociation = new wafv2.CfnWebACLAssociation( + this, + `${id}-waf-association`, + { + resourceArn: `arn:aws:apigateway:${this.region}::/restapis/${this.api.restApiId}/stages/${this.api.deploymentStage.stageName}`, + webAclArn: waf.attrArn, + } + ); } } From 943c57cc9fa2f93ad260067545d1129c26fcc01d Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 25 Feb 2025 13:11:17 -0800 Subject: [PATCH 077/111] userGuide image updated and security group ID's removed from securityGuide --- docs/images/instructor-analytics.png | Bin 93730 -> 196936 bytes docs/images/instructor-edit-concept.png | Bin 74537 -> 120055 bytes docs/images/instructor-edit-modules.png | Bin 92431 -> 130242 bytes docs/images/instructor-prompt-settings.png | Bin 153257 -> 163411 bytes docs/images/instructor-view-students.png | Bin 86609 -> 163899 bytes docs/securityGuide.md | 10 +++++----- 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/images/instructor-analytics.png b/docs/images/instructor-analytics.png index 371da26e07f3275aa9cd19faf06b4d0b7efe8233..81eeed30c631786bccf03c05bf8ac10ceda2f665 100644 GIT binary patch literal 196936 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

T`B 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 TNO_3=fikwSKa`(L4RrmdPjU-JK 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%0A0M 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 Z*gLXT>f>}TM*#Rcd&c~9@ky6I{vRG8zIFfr literal 93730 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


Z6u*7%4X>Lhp$Old41Xs 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

@n)h?@jY*ci<4XuJY%g6B( zWhZsZ4a!_C^|&)Sp|5L7q9e-ci#IXYuco*nWY0RIsO>^1977d9@Z`yKKg&2z631-9 zY*q|yR1_VHW-qfP@{?CuwdY~X;1Tp&r>4?YWqVzI7uTXu(;QY7^iio`=k(k45NK{=9?kO zL9iY^M-GdK7!5s!CBT&zED9aASLAygLf=6H*jwn$`HYHk?4?7V3Be-09q62PKXHA` zMQS@gg!Vb4fIm5Pxxjq7doz6;OcsSBAL!^WjzoU``ff}nfc6zuNYz-!RD?i!QXc<~ zcAkhsa@_kD0W#nXc~dq07Y|6T33UIU5iig_cjyh8Rn51uma@ZA^!Zvi6N|SZ#<4j*FU%mDn0s`{~gD4NRybwB~Nhjw_B`te{g);So-ZtJkh1($r&VcA#Tu0ourK?8&@ai`R{d`rs1$si0vD9t&!Q^kFnFn!ui1pHFFN2 z+1-AyM`=4RuWj5obB=e<@NA2}Ri-%i?QtEgh0s6Z7rG0?L)%~BjEM3az%RQUE!P=I zY5nb!;%0QYhQ%f0+pyY`i(jS}t$ai?Ln^Zkk(ZLqAa@4{K>ZC;GAZ!$UV&|68QQXm~Dc)1ue{ z`kGjLuoEpNB|YueU3{J@ehQB2!vrVVm|hIuIRj<#PJEf_d|RSzL%$ptfuUjcPHwQ< z#+0FEyIJ#dk<$-en`Z(z55UzqhO4D&fV(}CgA1XD-Z}e#H&&lg)SDxj&PIGspC@Q! z=kmovZAWdbjg;TG_L|1 zN$g4<_67~aIDtug7M-?7Y@O^G8QG}xSGx#tm)Z#(;&i>V`k@uhdp#BL{4M4c4ldGp=Hy~%nj|Y z7WW~1b(>JavoW(AdFU|QB&b@jJ8!q@psn#CN-+YD=50b!zRXs{eywYc!s?l+Hq-d@ zhY!UQr2D+Q`?^DKWR3Wr{dVIA?J&QD&)TsC-2Fe(La>*7p=1?x{+mGD~ zVEsH?HwE8c1%C#vm@FPu{kA73_dL&+A$yc8u|tD{gc5=|1K<~U(Qm z{Q7s?Ne2~9Q*E{4}QrNwm5o6(`+qHv!0vs~tL#WQG@|v08PO=q^lz z*1ir8d0A{sD@TqTdgF(08;15@)b?qbwL;3>B{AL!Fk%?={|FlC*9?|Tj*o@Okuqcm zE{DB2rTOhL%ceI%fek+r>v|bVsG&K&0<& zo>sEhkch1!vMj`qZ%C;oI{Iu`k`C4PVj4`5WojXKJS2vth_j8{RTD;;Dq_KU{UximY*lKk>+r&nnzkFb;c1DS zSV=Jxvivt~@#LV{YPh5{Vw_}b{cU`l-BMfTGN}T*fRAMpupcf@@#IXXJi50|{^U+# zw^3k3Oi?c`l>M7>hg%Nz6036Fx04I}hOaR(b_bl?Nm>I7$uD)Rf5#0t=(Zb$`JY?! z3o7z(UP~D`bq7s#=if@ZEuimJvq~F9X}qe#G1PfdI&d^y+Y(o=(gY)D@AzEBdL_Wq zQsN7CuF>j(D0@4ojHv_6Aru*oDKqYx9LZDj%(A&Vd5JaGD}_|P{ptZsqtSNH*;*qO zY&Ol*!*8lwSdbqoYvi^#P6Rudw_jRmG{%*_74lLb^&}yAc%tlmRK`PXGMJ#UK&Bvn zu=gj$`D7(`Z^fjKy*AV^i1(MH6TxH>Tx)h#C)RIbb^=N-_m77+VxLJ*V^43XG|Y&k z2@SPD1^Uhs)0D$^ojli77$Ar(_miPHfz*`fe%8XTC08bF4)YGg6q;g#yLqdiRS&9Z zXwj-<6jiRi>~h06Or<5x%u{PwlNLsh#{Kb?E*5x!e1gx^EC>EYQ@YN@gt8$~YL>Hb2$45!!=4g}B{B2N=Gok8OEwNVOZyh5CQw_eHTJonZuP)yY{4xtixnCYXhTiUms zR^2~Z0+}jKR=xHQ7g_ZF;7+@K;~@jkmbKMGt&dT`-tXNktAWacHv56>f$l)OTtt4^ z^#E~(Vg^QNcq7{uAOABg(^#;_w97Ni+VM?X2t|3{d}#klO@~jHPBp=KQs4J6t*Evk za;oXxC);8$C3;_hc3AR)I`IHjqYB~6wkHwx+IN)@!xu=wR|5jG#_-vN0+FZ|HPKtsd1o@XiUqY2+}(txYJ4IS*O<|jc2c+<^Od;OL5 zkl7NHuOi+Z%kYIjK|@iyk{OhvBFyGnWQ?~0ba+fkn+)0=Zl-I?oCqd8SkpZsLV9{n zP`sY0@74UA5qQJ2UDb?P!UWed@khza)U+M4^6c@Q`hpj~{SREMnmvaKYn&fNd>%Hj zDTvg)(S@|KCmod@?jNT;$37oljE#(2DJm8PKSzp^_=aKH+VW6u)J{-+_WU^Quz1gN zGh$MJF?MKcm4BrAx$$+ii>wBSbt5|;FSK3oeS_}xNu}>`KV2O^%q>2DAKD8(Ufzi~ zR&5&qiBwixP~g-yVbT_i6CM;=0ib5cHdF5nzpQ3@`0?sH*pBElZ$I-_cT;|6ogXYl z7?vM%B{ft^9XYUs>~7BH!frQ93e97zcotpWc7Ew;01$8I*lH5{=u$K?MMLW9PXr0} z$Rmv~rgf(JC}G%bWJ>TU{|KVGn){uE8S44WlQQk)w?C^>K`i#yR<@GBt5r2O!O26S zQ>KO9)CXr~+go4WfB$+>?(wcoBw=A!34Z7#!C|}UxbgWan7-~OULL!rs(x`Kg4HxG zAEO;qO3wOK^K^CPwE|jar=h1TY@%))7Ds(uN^5TxE|WFoTd%99bent;ikl<}o6^)= zMuflxw$H-(3O*aKgUe$Lzk&CyJdGcebljLTp;ZIdnJ`=G+s4CeOh=)G)EvG37QZSK z_tACf=JdyG*0rl#X6t`kP!=92B=PaoJxIo?84#=JfR6HYe0{z)S=0x0wEW2GQ8Y?i zyH@8MUeIN_-Zuu7qGXQeACK$Pnpt3~g1y+vKG7~LhEC{tXN=y{HPHN}yn(U}!{F)y zyB*kWvhphc(z3Zt!d592PCOBeLvFJw2&N!SIA z9ddKG4zkjL!^jD@FR@)2XFb{`=B{4On6U_`=5)GKEhS)@#+}0n6Q~I5#JQFLU6EH$ z;dc5;;4cA27xoI>bvqG6AQMrmCJ;i|e1&5@wqjD2 z(S=la>ILSARK$+cOuo`JQapPn&?{^PT8DG{P};QU=?&35+?Dv#VgV5^i*i|em) zLnx{8BO=|@2~rc<;=#3=oe!^r6fwDCJLz#7J;2o?@vh)iX%g^tx>jSbTCt%bx7bu- zZ*t(zE3+u$@&cKqstOfLA;Pu3#E+bh$(>wzs-y(BXIsUE^B|qN$$v;s9I_^j@mEos zyJdrm6K@K@10-zD2FE0=%5*(~_f}$)kvI5u^NKt3Qo@>_1Qr)|ue?%#yf$0=nNtST zJ&m7;9F$9qzk(z+^ZK})7|n#-){Qn{^UdC3j>msMF~Bi#h?JvS<(JR9f$GS5P*#k{ zR9F7|v?$^|;TkDN!%3X%AHgGH>Vi09l4m2t@`~7&S zkUjvIA2bjW)hC8n`xq6x26G^SA!1emh$=AXIBo)H95dhXoISJYe$RBeFcvJU4J@KW zcHh_84h11a)P@FgTx*vbd4AC$L;+1asKQ!hX?w;X1BGpdZilVSD&R*LrnO}#K2;;M z@9{U&gS0Od;zpjim@_F2><4luS)_Y~ng^Ggkej>mshh4CDB&7Y9CDJB90hnM9tf6T z!ubVf8`yy-PNZ&;26b6cFDKD0WvuU2>ci{`csz^oi@dpc>ejJriw(+x2luP;=rw-5Bb zMShR3qE9n8<KGgLo|QtO(00yvb@b6T-!XYp`AGKbxSI51tU+*YVx_ zANW4WPbo6dw-qzen`^x-3-?T!$lC@oYF(r$t#CuviSB&l@&gQbzm2IRUtM&&nahM` z=SwVwiKmq8GJB5Cpbz$|&(AZI|8bvRy%>~ES8mq_nWXw&xO?t@Wi*yug|3)H4zGX9 zflaV&^e1q(X_n|wI-${ycf_|NO(f@U+$J6ernp*!Q2V%T8?eUl>{bI%S)a3$0pCVl z8GCiwW2Iz)p-6!ROfZ1thNJp=t23&>?r-6;k;hBzJ90;)a>?;Gwrdt~lf--*IRgdS z!WNVL=Ye)v1M0K!uB|{Kr8PMRurTBFM@m6B*xJ+EyJ6aGF@oTRZ_5pm@$b*{8`^|k zKK&`buf!#XR~}mv>n4SLP~5I8evLV6bKGs?w#uT)*LM&;9o6JNzx!i!@emR(C&$KX zA|tn8Sw|#K?MUKAHPn7^eMlaDWA3oJ=D}|8dGiE(#tBhP`Ejk@md~NR>tWPsHl8Sj z`CS$HAVWcU?;gq{EwPGKvey}6iE|1te78LAa5QNQw*Ksd%tHK6zZ)#5fPD+oU9j^| zdk2#P86B+Sm)F`I7)F;d*&4^7z4?K~JrP!GkS4V(tPaSAMzTEi@YGI}?rYYI-^v2{-kf0%dBJiOpZwmx0*q5hB*em^REEl( zE>PE_hvZ477o&121wmtlSzkGdJ5`j{5!4?+&d)~CB_GcgVPTM5&`W>>Abmk-!ba_( zdN;<%V`S?oZ5_af-526C-?9YM6g(``l z+y_+a_|Q)rvxA5#tVaLxtmzV_=e~Tm4!Pe0*`BJU5p_yFOM76_ZSbp&<2)LTAU~Fs zP3QF0LF`)g!^=7i_-&P@`AXbXcHG(CFvaJ})~_)ll}=U_RN(31Zlx8|W&2GLbgtLU z!Qj*Nkl|Vfsg{2tQifShYkDO0ZT4!G zi`jfMzhx-k%~l=j?ztevHmk&LzE>aJU>`Tpk3V*>XvlnkfL1-x{_~A{A02;#G8 z$q;KJwg)Z#ZX|#T4XrnsT^srcK_2fp1fdezD0IGMD9Z|_v_R*&LOb0ui+-ap#=;j4 zOkWCMDkTCKU70t+ecF%TiJCGj`DO;d$Z{eNdK0;gNf(F10_+!otXBnir~Vr-A6*O# z;Feq_C4yajc3W;nJg~~l3fm20JkrtC)eUWYLfQzxwil$(1-7jg8l@C2&UbvNk8Isx z0!mqDD0jp>)!l4rCl6Q8z6NMT&lJOUE&drXo<}z)a2lT(SBx-R1@CJl82B=#%x4|h zPig;YG=4RS8GIpHBif4>^dhiT18p3Yw&7MxRG4?M1;3OY*MZt3!cpD!quHTfP>AMC zL$c2#k0N-T76~bZpA#7gv}uzN*(uQ)Etni%95qpA(hhyiD znWM?NnICM-(qY_9Z0FMAz5sU8*k?VmU4JD}+CGQ9w|Xiij2}j}kbIKlI%-EcgqykK z>QZ!kK6lT7%KKAl3Vkv8n4i&wJXx8Gkj30oQxc>Pre}NI7rLi|7t8}p zPOO0EevEt_YPPN$-I}Lwjf#NEIg1AJ5@>Iv5YBtQT1>|6hI!(`fp#f^-+)YlM1Av>t z`ts=VLSLd3E-R2NJShogP)NYvTxfV@;SCTt$arH;Orm-P3B{vugY;_vrbZi|rjF z>T{ZW%4=zc8Bb7g;?b%b!Ltd!_wVMY|d;xqt6!0PhHlz)L>ES72zCNM-s4a&am(Du~hvnYE zum-&jOU*9A{IRttq;j*%0vvXhct%Zy#LdE>U12t(Ze?Gk8T`iBFU29fYc9Jx;(JVU zN{G|{W9i;gey4kvP3-4Qs=9eplL5Ks0Hq1zK8-Eyi*F=8%I*XK)-6?wr~kpFZq!8jc6+==uRu! zW3q!wkUi*U&YGq>8%ZHEbuZs?zBPy@lIT3lPww%c@go+QH6*O*92UAjw|^IkxrQ1> zD?x!A$q~If)UqXmDa|8ED&4zGAvtA~h#4cftOsyk&`5%MQJB~&6abK5uScgI0RH+? zt29>514GQpP#9X8$6`N5)Myq+U}56!fTJWy$2ykwz!qc)&`gw&M>k61I3YjA`;M?7 zcY{>MqI{8y7Tg5o^(^8rusmiQ3aBm#nswY{?M!YV(e+Z1tN>*)3{`qrSUsNtoUfs{ zZ%W|4(D%zT677wMN$W+@LR1xmu~(!81qqWrJOx-{mhrtV2QE*<2#VzO2_Uuc0HMLa z%`>s%0I|}8elYvC`S#}fVQ1#cUS6}B4P`(U9YmP$u3e;Etfv`WECOIQAq?$(np@v& zB{!IhYe1PRC+CmuNN=rv0BwDeOu6Z0p8nAY2mfe69e*SV>(U|=L@I$<00%w zd!3zj=H;;$KLhB$YAF8odHN;(8t)!S%Lag2t++|;QJQj$aVt39)NO&s3%=JyZHK-0 zX3ZJE$90z0W45zkOY{sjNtVRmUxdD(?8O>NHcV7|oDhH~fyUj=B}@uRT$?d^Olod1 z3mDJpO0bkNEuqf}cN*5C=r8JoNV3O?7HW~)OS{1E9sSt-@|MA&G~^N^PIP>rf&2+( z9cGL9S?M5V>=Qakb^2HDT?irF-cJ=U^WS$lD?NVTH0#Lbjvp(w>yOv&yz+wfkf^FB z91ZAoNdn7B!U$X5SVUNyEy%M^I_Z1#UjSNrVg{IN92;B{{OI)`!Tbaz*lh}zY@gRM z*Z6-llls4xH3B75d+oLmdS*JVUw_5k$|WyXnQ}hzh}r@?mctx&QhEu@5dWeiw4S9( zF18;XHU48vpL#5HQ>v1!%?TJC{EbtePa>Q4qC71ybfCc=AjOd8amkNwa$iOjD5w?56^0ro#4ZQ#WrJ9-1d1=q_h+9=`jl-=97 z!Ta7oP(rIp=z!gVJ0FIr7O0fTN@hm77wC`Y=Vc}H!petUdoHl#>8 zL3x44bRYamwqLllGFH-);8obJw7R*jLb5O5Q-zEtA)FutH7AsEPLQ@R&oJxm9yIKe zH@S)_zw5yN-mN_d!65Z{E`bjWmngnVx2C(8Rq->Vog=hR`{7Z8hiMh6jO`mP+aW{` zA|{|CxECfV`5X*@^dv%Q7h(l9!<0rdrhnO#fYy(|#jv-L4`Uy>@**pl`YCwv-k-S!ET2zck;uZ+>ZNTewZOJ@)|!MohW zlfd`{vCp(!;kW=s%B#MXQ-bI&9WW7f^fvU0Xy5trO>nv@7$P%4J7sV`a(u4V51$$~Vm4_=|M-^#Mq>HQn4JFbgeCDy?z`H5=26PL=hC3Q45YpU3QNu*DKoA=?he+6CU$4FL5tUZox85hHM$v0HL$2{;D| zf+Ljql)T1G%{J7;ZQlPzh(JSY7=N+jkNZj$_`1MwU|r$rYA6x&xU&nS2Zrtos{T1R zx`v~duPGdGjp|SYL6Mk7nVDg&)V&0VWt~Hyb&{tD@1?fMu@#H#LxG-vpOF`>c7l9CKV z;h1)q%@p#0t)@LD{OS(CKI6JgFAWqz%cgltIHQ}HGUH@bYU0S7*F~0i~-Cn>?mXhyAS6Iu^B0(e>Lb; zG_ACBCG)|S9>5PnbI*0;k6@Wk$&sf+Lnk7&Q6%UVcafYkb>f-Xuek~D@PPYa+NqM{$J0lPPQq}dt zjrq6p7J#309Fs7%{#9r&63uCUdq<@Nn9}~TmrTLLM&-VVETmmEP-`WTHH{ytYv{R4 z6V`-TDW#GIn&{$~1p=1}tqLeA6%%-fey6pWxtQtrQyx#$Yg436e{plT;%sFN&()R8RgW{tAJW*11tzFQK zb78=vphdq&gKWCkY%?(hwBF^7RAtVL&Z|yGT+ibjfc;u_;LYf|najJBC=*sK8_9*=vBfVi{DH7ycr^?$I zl97s92vj2J$c<{ectmi#->_yC(7tSeN-L_;6!hK1dxT|gLpK@IyoRN*sSQysZB+QC zWFDbq_h5gee?~Zg51C6s`&5Nw#i#btKFlg?oJbD&)Xap$e&asx;Lz{~rvTGWyVsCp zwA#%Rd`~j;v*Nn#*ZZNRW_lZ>_fGvLXoR_!1SDwQMIC6x7y$nB1rNr{jfELH>LIx0 zv1z~57o{$O*Ots6mM#kkR|X&cgpx#AlVX~-thUh4&&2?yAE?{jf=hi3Lh=Y0D}RwQ z4djbkXgH+~%^qRr^yRTnPngC2uIc=FF*%O0-iN>T>U4dkt7dsdtqRFW(KbAz99-~W zm1a`Muy>syh>b1cvwa*+>1tI#>Esw2LHUeQw0GZnIK?@i<(Jd}u>@muQ>YDTe7|H} z|67hixch2~Ib*W@mg_xNB{v(EOB=SKtI!<(@GPbD8ApGFi)G_X64C@CU7F)U+qgGS-tP}377?0GJr}D z0?dZ~=Sz%YWoehlRT>|{>DNzRht>fpSo{wm-?1yW2ZX-~P?x=%PfuJW_CEr$vbfQt zG#}o#TkdmHb33iHhG7~Jch_HDoGniAjPZ7nDcv)Slhxjku@D7p*JAzl@uLasARi#L zBt;2OVc{)EVU6QUMT9m0bRRAn4q}6UVC(`0f&26t_4e%*2_GO(jBt8Df6z%WE0 znh%$kGKR`r2svlwB&}+}^fMjv0WmE*=J>=jczrO-CnM$jdz0?o39B3TDjbNk;eHbN zTjOfd?jv>)-?4kz^^33F9t)7V3Ke#N6wO|Ih8MN_Qncs33)0A@&NBBocoj$@cEz_tJf*?Qh0H)2~@DDnAG;6~=Rw)kUnEClmx zFUof+Qh5K1iw5@;Kl&;_re-h;WFL&qZtEXE#vYm)lDMVPCK=|mbKeJKe}SlOiWsoe zGt3N_-^;iycE<^(N^>HL@+Gh1pV-##by_fXg{r0sI+<}8C72RAs{!GAvN0+nN8ZX4 z4Mq8>a1?`)6N+6hW(}YUE9oj-#;%%5!Mc{RDU-DW@FeNuhQ@!oDJGc$CE?su2pD&?UX+6#QN^1l3RzSK(qFe5XarlT9 zKYFp|`%~~D_l;OUG@B;7?#Bxh#S;K~A_SHF zu1}1gtT1c~#wR1&PLLf3DiNO~%FHaxS4bK5@9xEggadS@qs6r=A0F%ge3o9={`CNn zD87%opq~eRUZN|1RY0o+{{sE_N5!)r1Q3R9XWVB_WQt&laoml&~C znKL;yuHiU>7Jp4TF_@_Bu!)0Fx3ym?yw` zIgTRUbPElF?=SZN-60d%Cqa4fo_=Skm`26sa+MJt0Ff#ADx-hmB2#7}Qb&LC(R

XCTEaOF2Il)KZlb?LXA|)!E~(%UEi<$(JTw(SJD_ zx!Y9rJ)3~or6EhCXNYluU9r=Rwv#3l#ntJuSya7U$ta2vt^@Sv%FTv9$L{&-9u^c(Rt2_Qg;@}r|Ce_5;nPSo8tc#fV5Q@|KiqC5p=uCL& zBNY|GQ?U2S56$JyDFOt$K6^eerAkP|OLXB9=1X3q{viw`!w}DWe>~eebD4G?>v-Bf z^raQ=^a<4|+E^y3o&cm7B8Q~3k5|CC0!aO9)`v6@V>crDdBt3S(G#CXUS_}@;4q&f zw@QD9$@jF-ncP3q_dUex6^rEQ0=Y>_rqAAqL!q#;w&mm%UWO9=TnY)VaL^$jBg>2n zRC%^Rj!x?K#@99cZQZw|L$u-8`a0OkG@KnzqMl|fw!L9`qIP6}V~j;4n%Mnt8x`WU zB7#WtNL8jPQ*swj+^u`9H&oiOQ>IlGbR;e5|1xE@W{ZB@iEpp{dRv8Nht|mEEM7@8>@(Mefw(MxjK4Lml%l@ffU*R*(i7Ou}&UGk#zZ ztZwdO9K6rKnatg0!kvtmJ)fR+eyDV0rmYeG&uZ+ysEy`9TEFqj2`u^gx?jlV0MZ8Mc|ZBo4#J*owUpA*x6C z271ds32C&Da{+jhx7q9Q?Vjx8_j&c8xNNqL7o&DkyVd_1r@D3RTDwf(%o4Q;7^~5S z87}Hiw^h!@me>AL*n9L>KEePn1r>t6;h4{gbu6Pq5YHW+g}{1moNc={)wLN<3YKDW z%pL&Q!n>elpfp*S5nOk&&#BxULoffvFg=mcbfG64+~icNLfL`SI8AQu9|rM z6h}8x5k4Ss?GaP+k~u?^PSU(pHP295E#oMS>F922o_V2c3 zSGn=)-M>h}pVr{_+e0A$h|&j@Grf0_>jcm`ka z=b}X9ot(nI+ZI&)@y74JpN=2nQ+<6q*wj&4=lPcWd9_FLH}#u8ujoGhZqs3G>|IS= zT~l&C8|Z1UG|c)`9e6n|ZqYFL;9rZkzfbI+W^(YF|Kw*OfL1-|rk}<{u8Q&F+Z>y9 zYx-eLlsa^9l(zTZro&fh5*?8+HO>A$f*o$U+^qpMJQpGd6HBB&BK`cXy8Ehm>t9XG zKdTM?GxrC#)I^H)n_3<+=R+nBEve8nb@xw>zV8kIeb$TJ1pv;`pGNsU&Y6ye2IQkm z6lbvC^D3)Y$Yf=Q^czxJ)*{x?No9rr>U|Pkk0}T4e2J!ov;vCLbpH-Hzt3ZZgXbFGk7&K+kki>c zdGAnd76wO{S=CacHy}@?+b7P^tGpdWe z`7P)z#vBJa)r$6Vr@zJQsPNLW=q8B`m#5}eSe!rY&F{B=;9tx1sR$gGPbW#^n&*d3 zDt%Gf3`qMPNcYoOZ=Pc)tCtNa(n?0B9ta1>eB>&b+7&F z=cFG1Y69H8&0;-ZziwR5&Hl{=@MnehZ)OJg2W&0?343$mhKB3Eob~Tb{Pz!o830`? zaqzid?7v*c?~4m~1DNGUE|0!b{fxJ}p3|@>ch$ z^KV*!e?RMg`Q-o0mZ;;EU*v*Om&`GT3D_6h8oq)S;B5*~Zf@=xGClG?FLpCN&HbiT z{Mtc@`lRzAk_UUPp|kHd8UX<7EdF4C@~r){BG4c?#_Oip^S${Je$w3EVDNt`R+Q9d z$fvK7lYPE3a***j-L2_}L_fWKHpB5K4~5(FR!XH^ajhcqZsy@oKpBXZs_M=&pw~i9C5`ic$dL zO6k)QN}|2oXAAy0hZD#OD*ucdbSu@Y);m`~I^~Jf*|; z>7VNQ>LXgM-z9S*%8h+0*o+lOGU)An_ryCD>9>5*)OdIU2xjK^6F;y6(1=T{tPsi< zAE*M|kYVt+g@C79KhDpal&vy=6Y@ld;JI&=yxbcznjfnzzmG&LOX!~wZ~h{)`8O%w z67*l%$;uk<=WFenn4FBkYOHN~wQV|mGPa_g)c*rjTF z&dQ%K{b|MYV{sxpu?xRO7zW_7o~q^-%x9qYXhJ4JqY5;LgCVEV#CD;HR{-FhtZhbHXl?cn?-dlgFx8Z|wmmK% ziAOJOpS7(SfA|yF>mr?woX=@2o}j8TuMpXVDMB~ke^}?r9A@8XIEQk_39+G{zY`Ze zP28;KGg8m)8~04`o-2RiGG0cz=wG6Pww>nvwBTQEnty17bZd-V*H7w)-cX+E@pngd zWia2`e!fCGXz*v^o||Ha-(dS$KwYl6nQjhLa&|2wDz`H647b`zOn3%Y%(n77cEO=I ze&>x|RYE_{x+uUkNUGT&0{n6=jN$7~q5U8a?H4Z!U9{hc*sn6w9R%Y*U7TMZQ*u2A z;tbM53_d$6sPjdgZe7s?+r`oy@K%C~=5m7)ItSWu-QY7k-+&AB+<^Zmgbk0=myTYl z#D~tVd@}P~XzX)2#~YoT)QDIqeo9Y3I)d?V_j)nJQOx(F?tY#o*lPO$Ip0+F*h6%w zazA!2zXteig@uFk;F5k+ge0y{GzV~I``sgdVRP|O8-7%6Q~8~l{2(Ls?6Y$|&;^?g z#@aob85yy%V=Jr%+f4x+#XQIHlxd5>9e8H?|BtWlj%w=L!c;6EAVrKQRX|0$fb^ya zq9R2h^dcZdLW1;8l->~$K{_ZcA)$uQk&aX;3BC6cIs^!1F7M6EntAUx^9NZ8Yq1vh z=AN_9{`OZQL@t)gtb+Cb@gM!yhH!d4)6?*noW8Duad22o!NeXiw!t%vl|ToqEJ4T) zE+&oBmfJbhj604?d+p$)&&Fna;m4nR2Bkymd|FM!fQ3tak!egTfdzo!7uMJv2!|7}VgVI*1k?5MzZKRu`JqW{?nGWZ{E z4FFr;^~B5&ZD7S$GzO3Mr#4DFACj@s-=%w>NA=rfudAhl?$^Xk?{Me}&=n^oCg#_s zN<1+@RaRD(-eit1yTcpfq#tXGfOvPVnJpLoOKkCXgW~2{?#}Q2_P^Yx68ZIKn}dU5 zq{&*}!S`Y>fUl99;?XfcQao)4Rv>EY=p4RX-Z&BN2?kW$a+(=o|5l{_UwifWcFlJ0 zZ}-MBP1G$nU-7DqlHNtq_}orf`^K>UCfK>|!S9+nD5OM8>~RH~CPU&AaiaZ(M3qL< zB!I<^@)cB@pEK-f{fF#CtvU-&_D6eYu;K*!33le0-{ zHPI>F?SI6rIul$MR~mnFf0}-`y?Xi;k216dg8m9a8Mp!YME}hFz|%f)%+E6h8!x(c zPWYY0v^o!2Iv(Izre-ChCUtN4BG1-Irk6|(`FQG1y4J6!ATv|{v2d&jUOc{Ye=>(8 zldypuHudJd@ciZFAd!m;buF|*YoFhN4=(HsjLQEu0l}BY08!4`cSBgwx$bheH3NZY zx9Uk{ZCD532%{UHLce+dAn96m5{&Yqpz^7_%$ojasYh(hEb9iv8?-`b;IiWSpUSc_ zyb1io1!7}EVdh;>v%jKEH~&B}*{H-SGLlKGeSZ>uM)#1BU+Yh7Q|LPNYhMjxxnm~DN%92mvTb(+kbW?^+1v1&j!lwAUYL&eOLh(%8|I~Q> z6(jpG$uMcXKwL5qOu0|yAAg~evB7?yQ%QWo9^53e5BqCT5LPEC#|}Ssc$RSa$t#Kk zfDM;D4$#!;yHsyJ`Y_)f=Q`;_Y?i)Ox2AH_2k;D5q&v@cc((ig?A=Qx$uq#g-h$$H zys_(#li{=zeTq!hJ$pd!v=785wbAkP$dl|y;dKX8%<|slK3n0Y)G&(pb0=UGeUdkO zrqJN=deuf55Rc<2c`VM(lqqaNmLTPno#N1Pr)5tLutJVty!=ARPsp@(Y)L|qSne<@ z4Qi=E`i~)-NtmkkaeXPsAo{vl8iiZtYz6w&rRXQJ7wDH6dwqXUu#8?R;Il0P);8?M z)W(x7sRyTm2hsKW+as`{M6DULFvrjCsWBbS*UK z)>8qa{*e9G*Iz&`zf-CKCW|tJVju`hSjjB&X$J$@CIDucKU~_jxOB4fjYlhjVhN1Y z83tyJHq>%s`sOdz4tEw+<~GjhH$cltv-OPt3>R<@G*ZX78!W8}Y9tB!2^RWsfbyee zw8)??Sua?#_LkJdEl+PQ)?23lgd?q0O`gD5G!E%};Co2ZVIY(O>;-s-U&TE203-%$ zfZ1}TG5loD!H3}zid^I(kn6Jd2I!RmoN1(%VtGEA!*v;F{12CY``2X=dlg5wYz_a? zl9lfi&T&tad>$QHC(&pQt=aN;d7BidoZi5V=$n_%0%2U=X+&>6;K_MZQOOPO6L5(rl9)+`N0fW*u8mT!tne(A`Z-(hX1EYBebRmzx zUmSAG&$6+Wye(a|x^s?6Hp0(USm??XUVtSpf9si?mi*u`;4)isP6eagN~&d;@6i0a zx3{;Yc){t36Z|IpbLCIyx7M0C&d4f*2Oh3*7M=`<;^JAiMeTymMC7CeJ;hiFIL{f_7kyu*6EX@+#Wf=T8BF**e*Z4Eb^WWBJpGa@Sq<+grz1Ts z%x3V7x!&l^-!h7LuICX;nirniJi7_(hs(LS7wc#_h~=|UR9ic#UhAP8Upi!(3x9|B zEA{#U5hzg)O}n2`cpuKk&pNx`I5B)3vZkajWLUH~xY zA+F{R$>bZI8&84R)T8c~p=H$oFOegF^M#hHO6WfQa75ubuqv}2e$Vgi#5sF(!=uN` zZfmCb4da{IHI*eRUyGwQ`Sx=%S+DEmw*ih#7ELqTzI8xWlW>HH%Q|4)PFQEn?D%2* zqs_^LcS?R7$U<|ytsn8F)w@HBtc<3u}5bxEmkh;cFj4q4CT(mNCePs=U!2z;f%qxl-dNBX8(I&zq6oPdL+s zo?KeC%|rb|E&ZRp=DTaVh=cIkE<1ddiOG*Fnt>{BG56v~flAUqcn%w=FBq>^nWsI34Pi zUd_M3r1WaxP3dHY9$en8gGxgmVZS=Z#TTBnpM2X&8Hjl$_x z^s}jd<){pDfPWXAXOZ=O7xGzF%@WU={Sf)_k0Nhf+1l(;A58M@ufDT$(jvzJr$K+z zdHB(h-{v{*qD4yKc$)Uvy>pF0P0Bmp4LRZnw5~#6fxdR`tEyc?z%^~q-lXR$$`wcu z33#YJ$)LsAD`U%kc>DVyaBr!Lk|?a!?M?I~foU+|8T*kYMQ3vG6HB;3jwi1!;tCkv<9-+d%4N+s?6lbDH-7CYiN7@x?aQz(DBhIlm$J zlOW(?w)$_y*?+Yt|7Y_^eeGXQ{@gk9i(VhF69@j5+)@d7N7U-}PVKE=iRUk5fMP(v z)|~(jXd#Ko;pxhk=YT-NKEV~|LSx|t!u`y+hsN$4j@e4Pf-~&&zgk(GBDzxLs%|ca z>b+EYlpnTpg@N@5$gykj1=7JTdu?;b-gw$E)?i<|Wfg)tXW4NH(U*2|N8Aogcrn97 zhamyOidGldjp`lF#5jmwLdT(o?3NNm^h+Z(s34kFcJp^`l1I`xrMrB+G|(#`7Zz0e zyy@53t_4uaiasW{S!BNB@wWs*6T)RFhIa#B3`b>l#0!{O0i`Ox>xU@!(Niy*9Rci^ z`Q$;11Sh-DO*)6jgjei&*kk1@+x4dqQZAfKSv|l#(JGp;k4KyHgnXl1&HgSd^rOe$%_twYqlzUUamkW z?SFN=Ogrxb5Gq6C$!rS#jm|!qyrDT|Ke??-_{S9^r+Q&B_?TU;LobU6Cp(!Zrt3DF z3R2O>DM^VWi<;l#90g7u=CuX^@|o&dio4GuxHxWz@B?(~MUK=M`$ycD9Rgl7Rab4) zj&>`Y9Zx+^y92vTe=8&2><2x~blh9v;_p7xVy^=p?oe>8nD`#fzhQfJU36dzU|!bb z&H|)Ts%eLT+&3Ik@`rP=`@oVL0!H+;bgUItM&y}A^pf;H=-KFD^uJ6!=HrIoEqAQH zjUT>yVg>bF+!QHEYlUIn@ z7p=(-l5xH$t12YwO}ERSG2@#uieV*c1~V!yrD2F186yWKA@>ZB>qH6Y72YlX5^VO} z%r8WJPP7-NbfGa&DP>c!{G8N1dpm+Y;_P(eOuk)FGF!n2AjEJMPhX2Z&xZ_v1yy7h ze9RH-Cavh!8H9;E*k*EI&p5P;p0PUEY|0)YhY|%Y%3a%eLM z1PcBB%W*et@oxow<--~GImP`&h>22y`I5=4%koX{GNn6!L}ld*GRwbWIXO$cVN=_( z{_~>rnH0$LSUaUyk$6G+bc%{jpN{0hLRsJhG}0wJ`sR%OK`0Q}Cb!cm%Jo%3xsx-~ z6rfhnE5EwO+ncSF#aZZNOm{c**SzeC4|EzL+#^V$&5! zy8l*rzv=eJx}Cnus;?;asWsG?-^E=vxomv{Y9;vIgyu!-TNBj(AF};-!w;DGmTC5y zth2v~4lxQbRg!#AkNRnK_Y=nf2O9VZx*iyi{^GI#89Q(nf^Ixb45EL2;ohrn9EE13 zKb5ovow~lJO@F(?o3Q;d#Gl$YdFAQA{B2Ht&iNG_(jwJ#o0Cn*v`AJ-y`94`&N0;1 zGUP*(S(9c!Ys&ocQGMFO0L@11PQgq{*|1+7kj`RtUsc(bc-?bg#4JC=96V zO7+e?dN>h07Ee*wti;yzku#l0ltP$&kt|+d%VG)8F9$7BJ-^9)Bc3FGe`WS)>&9im zlc9}Q=26z|&mIFLjXD-iG3YEYfWkI2JQOXspTjr5!txKtwEt@EKC8YXK6~KyvnNC= z#7ZfH(~;xFSGruf5jr$oVE8kI9NUD&xV9JVcX_`~+e<}z`%4wa*k~+FS-QUufIRd22G zM2&~;wtvsHyll|4nR0FE<~1)#$FqOYnK`|*;wYv&6{uS?4^-iK{w~5fvb?4o(=p=<<>Md zo+fIz((ZXf5l{c0b6eNf7c{&;@<=P9{&kTY?ph=7%B8CZb5{*B;oyn7O^N;An2zr(>Sx>>5u19_;0BR5IMJ3YagVS4S3K+JD5X8!2z4X!rP{4Ml@0OJ67 zP|^d(1hbz&h|1YGaGW!#0vI6{HWui;)O(qbaC3g6x4)n&LM+bOj6?yJKON!Z)XEdX z9poQsSEAa7`+bg0yhj$9Qf1uGa+|*|iNjBi%W0@BBER_dDl-nZ%I_DIxw`q;Y zz~JNB=)%TmR;U+2ZtQskqSOV#M2K6&jx^|&=@Z1^yzTuaqQRq~Ing_HNa!WSckUAQ zHf7lO!O`OTd#BqkpUJ++k_~2)A6Z}#Yj07@FUo#?=3_f{%JaUf{i@e~s6Z-K*fM;t z>7|%!yZ$V6#iY^hbT$ck+MlG_+8Tu{W6)r=*UHBJ$W1hh(=qn{BaSS9Y`K=+SsOGN z0jf5pd4Iw>AZ5SXp{3$i&=Fy@#8)j=&U^AI{7n{W!=d=>woF-jl!8aHTAEbntvZuM zOV~c6)JVK=XNUa8vsh?=ljqv0+CDyWWJun1T`$RJ^96fQZ66bJwGXSTX7%RUEyJqH zKi%%c1G=e=N|%(;dj65LRJCLyi`JCK-9H9~VrlJ*2alPu9=qDPY$i%pjF@;hB*_uy ztRP%pQUWEtHqCynwavB+eYBr6EWi!-N81+zOxg{;y+~$L){}ATv*|J@BwTLs#K*!6 zRrj%9$1$s?<FJ~;GOjxKjz`IS$S25nDeXp+ z>d)Sftbnfj!hQ<)Iw8fxF>z`SMm~PSy0yqRuFYRLHIFszIBIbDnWDlX*RsGOIwB6U zDOTASo$F+Ro;%h2>Teyjt*c9gk5nA_0CX6R?eu3V!@a&f&!h9gApJ)8tJ^5O5xSE_ z&)wf8Rw`=!^8b&$>GSyAPjxnaq+8LFRuKfZDGFv8G_QAT$0VX8hi%jxsZ&PO2O$&Y zPO-7wx9wwd@Iwr=uu=&Vq)X)89o=b_M8NeX$!kP%@SVZhp>^4iq5b=d5zQjcBXUbE z)NeybolNVs1v;dY>OFCfR|{2*5+R0#Srs)JF~`VBSgCdD(0gXQoBR>CPot^p&>M?} zR=}+_Zo0$Z$f~BxZE`#jx1J_&Q;zt}!Sxe~fJZ@#tKcPNL!Cn{X`VBAvv!jwD&-qp zE|pgdtGfcpwpkb+=!`CJ?7s0Fhwmqo^i6%uR$VQN{GF`UMaNbkhHLw#4EF{n1|>Y5 z!3Phv#%tE(ZH^P>YisYU2g{EYj5`y_qa5INDWqJ+8XbF~&eqn!zugjU)udNjgvi^* zcNSd+azU!Aggg}ql30g#IuNCj+dGY9-8k`^+`fN(oqK#uzP&Ok?DjX(i0tb4m|T-E z=iMLiw=PCc`_X?MHcgd0XR#K2j5vHn&vvKp07za8pAI1c+`R|4#98_4>!DS`;%NHBW`mh;XBiX zvSea${<-RkbU@T!!hKF6fRRNkK{!?EzwpG`XaRUf@uGsvB!Hg*n*v6c7Xc(WT)4~B zAAEj36qa?karoy`!mG5&omAp&^9RJMJ9KW!$7((+OY+YS1lDul)y_}Ylw6{+j#4H!aLmeF4iH|YBvmI`dT}e>^=_@`;x>ReS)6xMgb_#q253Kq zfaI)+Jjro=b`1O@-4w^%oGABD>#4gCBM6D=3w&3H2TMQf-&%eRypN`RUD{|=s{ZGU`fxHc z|5D^c>ibs*H7UdnvHfI)2*P6K>^xkA>nQYKWy8xZ-UN6wtc`8fHIMhm{oQKd#jH;4 zx4j@{DH!ioqk!>*qBd0~@#;P)HSD!+=Patk9|wk(Idxu{DJ~NMHjJHRSZAw2I1%bK zg}z>&KcYO>Y%dNhCHs)Ce8&RV8tcfy9ic=!^3FSV4&w#TZV&Xi-E%89!#;?21umbR z^nk=CnbR(E)o7Frr)w7XajWKOG>&T6nj ze6h+>C=;Dnp*ID0STwY7|z_cZTIAjJjHx3`r#XP{t9Kfy zqHaBtFK6`Hx@jXkgtn*Z*6DEkqJ0UZKpz%vlB1@7g*!#KcVZ_dbpNPhRQe_yGG^-D zQV~1mCN%*&n#8dk6p8tXy@l(~O344dg4Z~1evRCk`pQ#hVja$i^D2D79PfN8Ge&fq z`7vv}yEnyX-$0NM-m{dp6>o2z)tVHm@0N#Wj(;TZdiDE6{uxv`i%OB{mOmW6BM#j# z`%#yeKT#*mIGR=t|9Nu6z0SV-JGRyak*c;F7dNn~7`<=U~R!L5C zx2xKG#)4Vpq}Q)I2|>n~*Ue8pk+5|;LaO7@Ys4TD1-aJ>{Z_oG_+^;|m}RN~C)n*i zhh32@pf;xeao&Lh482fV0f_djJDu4gp$kgdCV&@xR` zRpR#(P+S7CdSMJL8Wg?TfHa;;*wGs5f64N0djt7a9EHy1ou&{-%a^WSH~+LJ%64jX z$YMLML=>tIJaQ6?T?EA3#Q?8)2v$W9H>@+ONpW1^k%|1BeSM4(2ursANzGaF;|!bd zP)2#VIOPUGpsd0@LY}kiMprmpdy%tXpX^GtZi(C%`V#AL)FoIXK|ZT)GcclfpX zgb?c$vsw!i#fJ;iV>eloC2#F)w7ahGoxD)B9R-|TmN=WU-KRfOSS&oSssM~AEZRN< z?Jpz>=evZ>O~h5Ytp9%SDMo%Z`K9ZgX?H|$q^@Z$MwiijAnS~hWv+pf_W4Ggb68yl z&erX)@y|jRtZlr_sxjp55G=fHkQYlgdrZi!Au_{6iOg2)hyHn6UWdOo@Yaf`Gx_b0 zPkyaBY1m<~@t8AKf6m^FByo(cna4w!zR4(NLQLju$BDnAXTRU`Swl-6X!4?|8KuSLU*_?^3;Gi-PX9 z_1!<+bS@+=E>&2(nh~N^(8|Ug_*<)mj47FOWk1-8r&unUJrQ_rT~qEaL8D68ydI!C zBHCXtYNirVmUW8f>g{WOY_1fikRBC!G?aEyW5y)|X$WAdYGBvvk#$qt^sHCL2l}!{ zCN1rJW0z_VoSi;>QWdWdkSOQg6Xbp&(s62rxin_S<98+@1h10zxJCYK-iI(^kKUBv zE+OC4w!eSNGiRC@(VchTC%vMO74=LlYje7$!Hd z@g%LK&&T*cd83YNCww}s0S;dEZC&)f*(7G7?qM)pe=|t}ON`BS+B8*5k?)j0TD~Jr z%r6rDI-%MFD*?-APAEn5$~UQ)COeHiB*hA?K_(B6X6Rz*ji0f!urI1whZcWeUX8jD z)1Omokx5=*8OY+EONt(+B_)&pz3G!V*Bq>(-zc}a%lVt4qnW$}w_*xn5 zFikuowdxC3&T`ULdpOjRd*nlkeXMA)&uZW~DYJ>OGH2+s=~qNi>r<2MqJg7_QN*s% zzcB6g0mjUd)zu`q8(!}(kF$7fCu~v)xjU*JnB~0Qi6I}S4YxmB>FFu8KkFAU+#K8g zES6VYU%XBa2%jU&LiOpai1+BPM0|7uMkGPGZC}ci3Lb1>_4d!3|60A3bL4HNdS>f$ zrP|y%g3v?p`-A)YOjy5nk<2Qy`2hf{GyBO}KFR^IT>UuAc{n-91T971KYG(}53i)n z)g-#Hy_}QAX8x%4z`x~Dmr~Ef$Hwa%{Olf0F&x>B)g=Lc!_zw-^>!w89M=QlEk{5F z2nb4q>Bo&o=bkl}b=!Z|g_t_cvJE%`kVF zI)B;n<|TS)+2cCjulR_@>M^M~Q(whiZUQM8osZz(n_8|0!4fAjCeJo1d=mTPN14ag zM>~kx7#|Ygsv<>nvhQzQbUQs$Y0a|GR6YShEY~Mh0=o<}G74cG2#n^OcXZ^U3-ojC zC6O_VsTQ~jj5bi7b*ht_qwxV ze}vCC`}4)xB$3J0gS_53rZKAzy4tp&u6%qwS4&z|)vFfaZbJw+u4yPl`sC^_lERWL z)mtm>N0f5hdWNRpvz7L820Z6c93zdya3_JdkHzDb@nx0W>KAAZZD%$qZ9Q1{$@jIZ zCP%>^ZATqz!^u|uh?by~UCR_w(|Ieh2t1c3?YL#($6dPXOEFIVALVp8HsbLj9?4g7 z8L}-8)AkZYMeI^ts%A6=O80877ngA(1a*>_b;&ynb`iO?^V7FV(=+t>S} zJG?2_WmQInR^k`X#SDmdHB-Vq8kiHcGQNj6L8Fcixa`V=`+S1SZAs`^*-+dk3z2c3 zXeD`CQPkdcypEdB-x1{HaI%x@$d2)}RQWmeku9r)`K;LDabs89%w?IEHHT_5#^nJ$-2_?=sTz z8Jn3h>m67WhMOk1j)|68eShC==V{}!h!)xDe9s)pl!{Jj}z0GepS+${nu;n@MrC2hFs;!5)e?EM=1!k+woYv zTfW~Yq6?jkWMbA%TDJFf`@(E_F}qUEHmnvABp5~**4VA2{2;b2IWEn?TaJJ1c?orC z+MT&-tnyGhoTN!bV73=>JllC6X{jQ>2;RlGFpjuqwnz->hcD!u5z;N6#1t7uvYNn@ zC5fZ6qNo{<615b!T}=!-H%%1r_c{}?3O;JD{8PM*(IO_MVVq-sBCYVrA&9xh=uu_*Ry$hVOQ~gU&)b5pS~O<8amt(j_8~~y)Py1uq2y-h^$vpp zXCW5$pn0eggf4M?eAQn)&`-|n&6gZaErA5wg28m|f|Sk`Tf;`VA3X2CfU$##R~PmQ zo~4sA4y1<$h{5E)Y?t#7UHvz8r+@Av(?IgJKH!zB;ZaZH3P!#wPVs2vT&5Kx8DGra z&(P@xe6L*Uj&KFZ0AM4sDhX~zN!j6MJexx3VW-E3wTimT16ww})~K9KEe@0-v_^b9 z=c7Sfo9!EvOE4|_y1((2;-lBky_PX!!0dlr;cQ1?JY1-D$@yY^fGT(S%vW=)E5Trc zm9>y>6YpJl4)4vIxKCf1+%|Y_U=O4U!1h*f6RHI&tEn5Dx>rs;d;HUN8O4@r&u9B- zfQR7WT|Ah%-Xk1An zfw#ghQ(K`xad$&m?=@T#t3OI-+$?4RL#N!#I^1WSb{TOpe+j`E}mqq2=!)^ z7ysRr9KSfB336;?DJKkDRS)9+B&)j)NPD0$Jj0ewi|Zl1(udyr$nX3z*rA&g`^EwV z;YTAle-#8FK)5UNcG5gDmyq0zUBQoWN$26fZnlBIrMqnB=!^>pNc(m{^L-)oW)s|FX+I9!Im~?>XHH#^xMGPM%#-lCXZ{yI~OuoZ7l3au6kQPB8hq1 z#6&}?aT0!h^To3mzlF_lTZ``?{0~iwoJ4W8X103S3LjLu`8RNj?eQ8)w|(r7X2;Uz z>4=w1e>Pv$Ji4~_;d}oswW^lvOe#NhP?UE?bBi_Vt@xm#H3)ChUgsWAm-pchtl=9A zGr5{8q6KW-+JWxe>fhbNo~)Hb`4!y)dH>S;DBHN8GV#8D3uS;-&o9D9j7fYjKr@?z zYFFCI&Hp%bY<9zRErJc@OQ6*$(@3nCMiHgcV;3_+#=ts}UZ?rY8BUPYl@1uN8Y|0( zf)}|pZ0&GY^HAO8+(PGzuMpfZmJZzrB;!4}Zm`cgWt*3R-p_lb0WR79rTnxEp$+Qe zl?7K>UYRbsbw!Hu#h&rS+*{*1HU|WI_~_(0XmU8U7pH5ol{#{|HeBKZf|RQj=7XVf z5IjG-qix*?yznx(8c_zO%h#+F2#=a4S2*}g%LAT9QceLxkWskRE*o+MOsWP*Qs>Ta z_}e205&ev8UJtM_@`BDZ3Xj{l#jiKzf39*ReKBm!gf5qB-^r&my)ukQ#bs_F#&FiJ zpOz}l0v?=$x=)Zbdw^zbgU`d?!`FY&rq=QY;-r{2Z;z?;;U}H@TdZzl)6rVKi6mW) zd={5uPZReyd>?8|4Y-eobsqWPz`BRGRw&m%w#e()g>Brb&rB%y7$8TUjn;_!eY6HK zG*F?T4DcVkGr^Aas{Q@NEap&}Yg0!N5#Puz z-%o|9$|Gc%S=8W@x6$)M-ZaDeAd>-4rPbBT_w@!$ltE3>8Hb&Ss7d&0KoVRdh8YU| zqGF)@K^7sh*J{#w!$%h3hzm`OLS`vnTogxkgOPK8;^)gd3U~_nj%|&XL%%=MJ%Oz% ziSWtTPVR4ms%cuTV1PB8X5q=VUiZ*5Im!8Axcz}29z0LdZN`m!(= z+VLs8PpY%_%cEsJ1{WT73pHqtEshIL++`A{YJoO$1AEq; zI{vDx#w@n1ZoS{>=nV6;x0|(IlYPtm!*lYVOKbKgzhSOm+hdlRldD;WWDJppAI8uP zBV>?cHP%ZO0=CfnEphN#Ep{zHEk<|xxn6zK-#2$^LAymi#e6$8XA`{KbdPwp2Ez0{ z7q#4myy`v>#)gVVCbl#@t{L*A`rz_XcZq{)^eVgOQe&mFz7W<#XykJpLE$_Qb2ADrxMoF`Jah*BP zYG-657rdgPPveecQ?_@%_NT-?p@$EzDLC}R<7&lr;_&*LM^}_@RqIwZio2NPD_g|z zD)#ExghncFl))mWmu2^oXDl%5_mOzxZSx{_uc*`p^$fI$DP0KZk1kH154%tnwlI5<~5$n zK7hBzaR&0OM0M_seSi#wwhymyT2wdPLqhoy2KGUUL6=_0>6&cs zL*vD?f<3=NscLm6EJlMhXXF*1tRN517PyNtb8o0AlwlkY(j*0Bc|s}0K#quZ@YA{| z9!aafUcj{FY^w1+m=1ESEUVoT{E$x@e3ylPWC6fAZIZ%(%B<7OQb0B1M29OYNg zQc&8@lRUXHgqMGX3#gX&i>^(+g)Uvba_cXtBye2*t9Jw-E9tQ=9a>Yu2!$>@0@!c+ z8I_1(%o$)X{n+=ab~9>m#b?9Bk=+8{G>*&tSg?+RMKi5DMhcg zV|xZuwo&1GC1p8yet(p4d+3aGRbqahLHA&}hJx%eto&!2G2Aew?yI0T_kF^tR z*FHw7W#xDTis5tCy_qCd`dhOXOP`egZDGU0@;B?vorRxf2bPN#bneWiO`jldfStyI z3}28(L&gyHbhPfb zt=ZT_TUe}%jds=sT8IyoaBuKBwjxquSh$r*6;<+R&k|zqv-Qy>z0*-**lTNhN5!1b z5?osm$nzZ{X?lpvn=c(&Kan(hgnpVDiCq#p}ltRWO$yU{AxC za8_a>v3*QT{Q3kAd-H(!E=f%{$6@#culD9?ncvJrvGYV5#GamzKA2bd=4o23f#FR- zguq9qaNgH|hsNT-j6MiwV2aD@1?AQ6fTR&*m}Y6NtM}m?d|Rx&koaEMnUypus2kgjM&30x(JUoq!i>3GX@vj_|Q~yN{3o zDikgwCtvR6Zm1%Jj&cEAF5UyW{x`WdCTt>{aPQUU;swO`ySSXnKK|+@+cG3fKr#o{ z_SqQcn+onSL@I;hDdALW2Lstk+!jX`r=ggP+V<1C8mT{K1=;Yegb9863GXUI~$XlJm*13hUY0;BOl-nQKOEod)eov{WfW7O{gXWcx z$h+&Fc!uWV0N3Ydb*dkm>!*~J@l=*SNsH(AGWFj(iA_9=uE9luo0i2}i%hg~1okWU z5*Np{KXxygM;k+P`J}JGWeDT%RQ_W@0Uv*RT+7|oMWuk}rA8M*Q$+X%HPo`h`cA}e zr2~|vnXO#|^qRBDm^Yw$O6_PiM5MD>gzwjv zHb+tdwO?`jlM~9b8IuS2Pfn@XTdyL=TMQoix-b8-(;X7JVP%i8wFxYsd@Upz->aji zWutYWg%U2dl>chdE&h9XU^I=R?vQMyOn&2(AcU2*rp>gzqL?nQMGP0?(EoVVUGh)m zrKl1M3Lyk+;^0F+S*kZx^oD04oWUNXkf-@PMF@0yiyi3zFkSstoTW&%E^M9KripAC z(;JNVTEm?S?3f_sbr%J2ZYh3Kn$A=fRvX+2!mZb5r1)1v$ z`B2yUY?~SO&LG=Nz1<1kp#fdP`0x0^#e2Ec(AE9YR5ILmzr}?z7kQE`%&?cp*Lhu+ zRYgHiCa{*D;xZZLmgh)oX7hKp`pVu(f^I9XJLy2Y>5r@97bxz>vd`CJoL#{P&PaOe zL!U{bcskvtKUVdmx_Fw9m$|(Z!vv3KjbeW1G)9Ak=45jp#^&3So~6aa%+MH$Eyeg_ zYH^!(NhIB;M!R6AX+oK+A-EYy;4RpEnVRaXclCve=EhmX;ntY;>4kmvTGNe`g$cc?m0xuThi%J>^%FOZ^3s9# za780)RMlR>Lbs;O+-4?2Vfq!d${O9G@AqV+w5vc;JWDkAXbkLQntW{ipKJqxRi~Rq z!;Ja;W|IWT`KoS2r%RlvyA&*LhtyOPolEP!XM5GaM&`rwDAgT{uV7z(tw3r@DWsj9-DaV)M2nw# zdjg+4MH~F!dgq$vSxsXU8iFuAct~!>3(CwpuXW-ReH_+;%2y zdY>V`jo$e8N3LBYqD{W|(XjY<8mK4V)Tz%cVnF`p1>J9hGLg(djB*k-tf;|k^BV%v zWm^m-<7%cGkcu>?JNS!lw5EJEb@J@5v(lu9O(6d&$X?AOF8}pKEG(H&DHsAH z-#bQ8$@|L8Z1=4hsKvg{bmN-NGN{ z@Tom=Q>WL}JD#ETpZnfh5DuPlYuVQr%(%kr4W6>drz)Q$;~9}oH@ zUDW&X`@(ZPF3{Fg;AhvW*ra`7^Y=Q4?>p8-6+ZPLT+pHVG-iPgFUxLW=R5CDvKDQETkm{h9 zixkZ(ha>X{1`q6G9mE2Yv``1r3sq3tiYtNY7VaC>CTp!vTlGSu{wSJ7Ud($mA5;K3 zq!aFH!QK?N9fOtyrt?iabZ`-8%T-2&)*T#wOM+;P^T@KeeJEp=&WzsR&)HINS=4e+ z-py2xV1oBOwx7O#8{S9M3rFaP>Et>Xc0rMYcWP`+Ob}X@MJ-yY&|`F2#!h-!-iL)- zaz5+HWlU5o@3nq6Q^G;jQKhiYOfotTrO(hWMwh(#p7*jetWZmty@~=|N!d=J{uymZ z0yD1?CnVRY3^y76e5k?jU(A@J)d-WjkShF>>fqM>zRcFwx*#ll%|ko6wgw2 zSGPm_h&X36r&{YZ)hPU-lowbEKwG+RM^rqQXMQRFZDPwZa1=^NC0&2v_DrBO?R{Eg z!T9K4^oH%2%b%H_iw8m2Q3jaXi-S>yckb7Ld;7! zj@{dHs;RZrmCl2{EKHX7X@QpRw*gqv5boojeexgZWP zY}6Dbdg^r3t;<-ZUH!q4K|*d=Z(jT;`_8id=`Ym`(=yBje4MF&umRP3NY-0BZW^_- zZ^2mnHlb}R`NNjG!9>Hb3dj?_sh(HYpg~ZFomthjtl&x@%CO~jxhpLweH()Dt=AB_ zz*Fr~p1Y_fWid=^<-3yP9w z_~H7seBIyNlpx(SVy6;}j@wUEjZWL=uA)3uaNh_Btg?Ov4=k#+c8-VeGfDW*&kbF&4h_CNB7^JPS1$J_f6No0c~|w2u>n& zoyMOsOB{EEs~Dqz*~H@qcOYnsNR%?8%aRlmZS`!@iNJALEA(nNfTM{ey&zde_97m> z=t+TsYLJsc7|y8egjqP#=%^jx+oU(D37dj<_UjFNkOP(7Nr?2q4{w^Ayg@MAInl8X z87^0m`Buz-18r)Ll)C4MZ#W=oB-9L_NYu(RtAJmOCqq&(U8%60n-E($%$$jR${mg2 z+l$i$b_R;bs}mKdzDTw-OOB7<(>y;etKK>-Gm{k^g1a57AB?h2ibb8Hlr~SF=!$(% zr|il@R0z=w6VgSrK;;amuF!=dl&ob&(h1Ayvz$@eWuoxi3l}86yi|Ist)GcpL=X`9 zLa38J-}iEkjX;UdEMil}Yy^iloeU(uwFFzb z#O^61iq`l;&KKW-A%4?~tfk=IMcbA&St_*Fcsw)Taj1(b8)di?zw>F53VGG%XWG+t zsXA(?!MsmZ10#JlcWiVyY<(HJYM8xiOA9i%LO6nJeb?2|gd&3AaihM^f5l}lZT@f)o;^;AhhPBXI50p~7AStN#< zP;&!SToczNgbnsXU&&xX_qC`=uKfUWNZA$Y@hTV^+ilzG7)46 z%jp_qj%fXmEOUA2x^jJMaVf*LtBuws$u#3YC!{7gF%QNjFR7-uj2<}EV1U|%1MFqQ)G`{awY zOUhh(^|FXtNg%Gw9-Ov?lLlWRw=+xod!W@hgJTTQHuo!DZX=_re81EJNmw6!)8? zq!dHsT39O!`~`A?x8!5R2Ql{pJ(rA6=%^$s-433$+OwFa>uO0_7Im!8vWVMe=8~aSxdi>FdS=C2VglVV5W45JFWVK*VnVrwc+&Of1`M|yTnSCRTjO~9CZIpTc)%D z_bHoI+1#x<5uZ;UYadZw)-OZBMc)ti8|#t%?j|s^FvE{ra+dzPGh~R-^LxCmq?nhA_GNToq?)nI-!W) z(w=!}1Xeww_2l+izz3=I&#hOh;_&MFpYy`FthzdOKpjkw@zQRxHLBZ(=bTW|N z2Pyx?pB^S)dgMp%ylu@cs*%Ub6&9wcaa+&UvlsA3dW;$9&c-D^BmSJvf|YmGcyCc4 zjiL-5msQLKTCCTzQ@c9Z^KV)NC8E_g@>&8xV~8slM3k5-BP(ptAaMUaK3iI6zQ6#A zOi;2&=XLGdb+aYZSm9psW#{cNl0_61eTWpch0PPh**`kXPQM8rN5StM6Y%!zTecaV|YX?UO9bE50Y`soI>b8EPOWGS8KWP=DsN}pK&ax$v1huZ;WHCp~A@K>b> z`t=w$O zI2jIvw>`3=f|JvBe6%3EDk{i7+VlQ?(Z7G(hnBYV)6v+hlw*1ez(KDWT=*$TEc(8m z7276p_SRgtdVb_ugu(r^sxn1`6ea3X{QXK>0Z$K7+zo7#LD*85bjn@ccQuRCr>B=+ z?%YJ8oC=r1q`+qgGMO&4w)WJ-7|x~MDUpQcwE)|%{?g-CPXd79`33gzbt(5+^&wy` zIb%&@_)dB#O>gCwT3Uv)j2mC+C&LaeRgEE|hponeSIVcA#SypJV2n&QZ*CxU)KqzxE^5f7akyq;|DO%2I=MBST86w^`xJWUh(3WMV&;`t2?2tvtOd2R( z+6ww8=_zxh&oMv9zGgq`z8H0VeL`pcbay}(wt>#J_~4n^(zZV|G{x7$>f$!Kv#3AV za!sq`#68{MDWgGeMA*YyaxP7jF71iV+5m9eY zmiun@$in3n$FV};JL~2UWuE~9hy>Oq-@e0o9@f}8yf6QYogYQ$G~KgS z@Z4v!pX?{SkS9f2;ZZlM5UK)#CZsfTVhdmE7zb6QA9CO(^`QPk{UqNO#hL7Hlp%vd zV24?5YZDI!ny?O;^K zE(un;Si+FO@UKLJj166q?J>@0B%0SB0{qTsZCZ5U7jo8FwtfpY?8Cg)^gQhn0KntN z6IZ#KvmY0!Nw8F*bNi_x*Pi0)m>P?nYyEu>K6^eoDjSAv{%jE}Zw)n8I(hgzxjM8P0T+Dru)!fAK;4&^i>Q zQD7ZYiB<>+cRCdKz>82MCxghp-JJa-DP?uS3)!R*o^#@3Y4MzC^sR2=xXxUrYeP|( z{9_u%2-O9~?BUx375v;#qq3|mZqP3O|7h>ZVIwhBd|RX3qU)`pR^DJo{h zu2NydG{(*hQ%QH$RFoxBQZvR-*1_0{s6pA+v1J+iJ{aS@=6RpzeV)==|Ga;_pW9zE z{LEa-Ip;d(T<3hhIXzqGNBmOg6{N9yQoHK1bJ`9T%mnRHgLj@*e3U-fc9-t-hY7{l z?p20FN1FzS8}9h@q(8v5!vwKMj9wqq&NEO^Sl@chF5skdfsx&Cv?Xy)c7JP4kFLxVb_&0YUbH;<{%jMY)Pjt>VfPYk*8N$) zcRVvbu@p%$UNU@(aSp7?h|))>zChF^Bdp#Hw&=UW2QDZadWxzWay)BQ_)L*3+Ml=L z`BBMt_KC>@W3*XhYJuhmL)zvrMU02f=V@`+c5Q1s{(08Ndk>5}A_6&%LNp`Gi|*94 zYN7_|Mp*qr#07H~Z0ED3lUcWgKUnnaUC>0<)sYv!Dx4vac405O)pMF%YBrsBur_@( zrue`(p4q(VrK;d%cvc#70I_!5j=EM~~A=TkX{AGPphZT0LqKCo|~KlHuvcL@v^A)ATNq;h09#Pi!Aoft!y<`~iNT|bfg??1T%7BG<` zU2uBa&eh-f!#~%?tm#HO9XlHKli_{;sM}heQijXKUd+8!^Z5QjkeqPhy;DTqFsbqT zuNUH5@1I{1`+mpIwE6p4kvE8PviH94{nyw;YmqG>=rIy!&vh5nCT zBtdY~rIFrJwwFhZ=%7LoKe!q0oqkXHXBitod4Db3h)q2p_K(=$`)}(ogW1W3_`CJ0 zN9c#g!jLSe96PkFt@7><^>3@+65fM>?yY_X{pUu(&|-rE(d=0XCmZ>nE=Zvn*e=PU zg#tG|(Nh6ymW?+CR4a@9q}EOpmZ%TOoha1zZqeW!6_aB-hf54|7fw!@tx*>vhOCe669#eeP270cbAG2x!b`c<=X z^W+IdJGATf#-CQ!4w?)bASZQxxC(*#=Cl zN#M8%+Y8k)1vS$N+tU$lNDSbM% zWfPd{Awps+QU$PW)yq@lK7?jIOk^j$dwx^JuKU~0S|>i!S?#N4k+C<;?^{pW^Q13J zCyHtm+*yfVu{ua>AN;IMxe>+7U}OWTv6P~7JNwFdFI(fcRq2Y1wF@K$*(iJWzP zA^(yZ^7+#Ki4h%b-#-pyWoOTgbmj$ebx>52XW7oi)^Uh+B zMa`H#9iRCSMeXOaJ#P)wKyusq6bzXsOwH}I#^By6jwGOvg$nG3m2E@!b?^J<*IIsf z{=HBG)hYHCI9{$5$<96L>Uv+=3q#EJ!N2t#XsAo8FNd0o4hr!~@$Y9M$J3}sT7v7qC!BPZ(*41bFAYX6NSxSh{Fu7=DVG)z%V?4RC?zr%YmFcpTHSSF5vg%b@ zl&H_g4jfY(dy^49lWD4sv$;WVF0OW+!flnvW-@kw=a;)T0xXPuG@7t=_L zi=%w|piug^zE}BwVu@BRjE62Ya~6UD@!BSm%QwDuIf&r_?)?T;Axzz&NcLmAo&0=8 z9$wHYL1(K3=Y-MXPGp%!A+lI($B#B}4ezMsk0>d4HhQroH!Dm3ZcQT1Ya=IbD-CIUpk08qs8>I5u8@IY$j7Gs}=H@MFiE>TX z?CmXCv5xY%twQp+2TaECxCwV_-LTbJCu(d!xti*?c-oRn(4Vu)SvCeLLt}s%ljHP$ z%Wz0zQ9ayZfg(Gfxm2SZ;`=PC3o$RIp)LGcGtIq3A8|eE)2AAYx3{M9;lp*;__`_A zc&hj|X1&~tsu+<3?)cykZ}&sFEH|TU#jcAN-8OF4%)8LWA6Q~;Zl0F?s=OgyXOtNm z$2aS?!$y`DdJ4Ak?qOu##Zk|ryIzEU8mX)3XJxD8$D^WoPPEbzpxuJJT{63i4OgWZ z2sR3dm~fwApC?gKo%w^~xQv4r1VeyI%<*!Pf<9_oiU};#nW2A7 z-x;A}q$}^VsBU?(js~#{D4DPJ83kr+4;{}nV}dMi|9ES$zOPc0`-UJLb5_uQmpsg# zEsl*_JG&Szu%_cYYyivgEO<`85Cfs1rqdMH++M)DM>e&{`*cJ^>YrF;)m-Ef4~CU9 zZMRe4T6^~-tA+W#GWS$I90;`5iZ zt0xVM!>855CWohGo-)tr-F&IhcZ26tQaR5C|AkcUskME-XdIuTI+Yx;uX3K9Hwnc77|c{UG~4VsrX}o%woJqLSG=-^Yepr_$sFmmN?C)+9<|X z`~Va2(W-cM_D_!@NRiefIo7q2chj9)=IWpGmY7|#D?#c9+jq!@tUwsrGq9Kzjc)Ye z1MQ)}^u9Nd)7bD;ZI`^>gNI2z_DD$JM%(y(89=+{H{H{DDu}NsqwMyHpRj9RwLv_5 zR8m0s(OZ~v9Y&`ew=AWiTbK8nrR39$!lViJ0`5brE%@y4C7#fYG@J*$I^TfR=G{25 z0l3(CFqSO4oYZ}Fb5ffASWLRI5hFhbg&z^3^a&1TZ@gD^O{9_3007onY z%^c{WeGE2jDr>frhprV%jM&0{Ul(S1TPSo+k z#PY#}kMZD^`5S}<9h*Xn@!wnJ{cYbZ3RQOX7!6k=S}8HX&hLK|!G%;E(kuU;(AcqCl4#I^eehTSKtfS?h><6l%49NIKWN!k zZ&SZq%IDetd27z)vUT%QpH%WGv_+zI+ofy2mDoh}^==m5C<^%D;o-JxT3!>E)a}au zkd^WWj598uqLerb^BtZEiV6y-rfjpHR_A{wlY^DK@rZ@C&MxF&Wo0FeJ`LE{+5rc2 zJ1AuB=%>ea^n3`m#$YhUcv}lU=eIX1O&))x6mh64Nf)UGXJme}j)@iA!HzH7-?L{= z9-!yR15FlGz=mA%hSvOfbP35Uc4x^_3AX>2h(U-?vX5-FbWmf%ere*0h&Mt0HsbZm&D$GBt!Vkt5@X! z=JN}ejhF+a0iGmlJv{;`EzN_3AiFv>ref3?e(z$BdcQS1H##NTYo_vG>4&ZV@$Eel zEaxvX)YQyq375_<|BpH+1mQ9k7Jfa5&G`sb9jJ3D0v~DvQ zfb+W=%3<}60hF{E!cBYWxTD@*bG}v6>CPtWNfXHNHhx*Zu2)9!tyfq}mGTL>49;8* zZFYWUs1C;hkiMX=s#j>fsfg3?I66ANyDTWdQ}8C_bBa;?R0X-$ewB;y-PXbqwFTWQ z+6KJjz6}iIqy2iNUD|Uow9$D<6;@%+WHZZ3nES#pIR(suyxVz<6&odwMh?jpMEbjl+kVjQ<~>6zcu=@d~D zTYzzY6X0E9J~zqUN%J|-zEi8eO2|{8y@49zn@8FY96MTQmc2_73uyWaeDxbNUE2TK@JtW7Rs+~yade*XL!TdD?m8Z(aQ2E6Yl zaT={S#;yKvD{L~uXwp0v?$`SV|fzqFUeob>+uAJ94LShkzDjFIZ3RN)~ zt}+`ZG=8zu3ahF*qYi|p$aZ_I#iL=UK#fW20MqO$MKg7lYWAb@{E%93punPq{iBtw zTRWTTUNknfXA7)5l7M!bkS;h6DMRHKT&GJRt>L5kFQkDgo8;PO*}9Sz&2(ZDqfrjox&=U8Z!HLBAVYs%mT&9`tUl;bU_YUTwJ`<2rEc2%P6(Ilo(<8 zxFW{i>~Tf3Ek5tlr%%&C%1r<_uByf$wE`YWn<{*)d|0v0a=baC41Ka@)^hWqPSBMT%7f8x zBLjto9EG2)7y!=k_Uq;*q9e{4-(Ex zO4{k4@GQrvNm&+V>sq;|Q`PI7-^qV_0Y7_{2n87_alO@WF4^qWGf=axHeJp&Ie)$+_29U z;GpTu6m;K}ZWl*dbt~G6dnjx{Jb5!$2bv3~8;ZKuXf1l(PRL^HF^tLu7_{p=k1V7) zD`vuL+oJX~KReb{A>;cQsXy%gX9#?DtWM4IEinP`NezYD5>km?fPU1@c57-=Y5=0) z6Y;$@%`b1M@1b!!x7F(-Nx%u3Hs1$;W~aOJXo^pemIIeAWM#FU+~tT7unB8xegjXMc|P5A;sMdI`zlQFHgm3V*T2#z>Ar9 zdN)bb+&NNwqtkZhlO>rhPP&WcJSi?Y*S=(nSD~aqYg-d4xxH}$IZTo=TWZ2M;1DNQs z+nrNWt}D6i;)}#HN7_*fe&MHUOdL|rBe3f$EKC)@lRz zZCRvafw% zlMAn1*z>wn5B`oh>?Z*UBi;eBRhb4pA<`P`Vgxm8 zg2T==P`KUxpU)|HAqL4eGnImmHF2S5JI^YSkI17hUw$sF>JVYlKN=kZ= zj9VCbN-Aa0pdxJoxm0g|XxqJEokDbm1bmKYkjd)|8R2rsn~0`Pm=RpDdS0o{7}?)U z<_oWq{N*oB6$|$8EEFD2-`W;sK)8xF-+TbYL1syG7Wo&&0-Ne<+`k{+d5sQW<(-`YqDieT4pyyxo_4X9m`Hkl|#gpz*jDt(w#oR_TD+Zxt>1)z5~oBl^v{C)|Fr*!nuI%di--<5 z5Ow&?+F|*(&~)2v)cyR83(0E5v1-nsg;&KBba(nbj5z2;7r35)Uv!jp;{rC`04=BY z{@{ODg1v%624ACNfs+TD2hg-j9u;~G6P<;=%W;_*&zj(4CduioN1S9BE${4?7O)NF zi(Q1u1a2W*)Q^`sSeXfbD^N@0R{(qX~jyryN+)rX1p8^fxO4L{K6Z95)?7Z^10y zpe?r*Mz!)&EOV-n?}+paB0}6K+p`6DEh5I^VNAvK_^kN1Zx7`Frdf&GeS%M;a|2+KD>#Z*H`X`ih9;nA^cG8Q^Gla86s5#>$;VED4FPCDNJEP6#&vPZfu?br8WGs=X% z<20+l%f!2;&5cnifzE}FPjztA{JB=A4&VxQ)cA9-vRjB27D_?0)(tOE6{&KrfFzxE zYsL?!DoN(Gg(nfuxx(R(SH5N^c=vB*AS^E9au+S0r*x{*y-5P*@S?l2x(qwbgaK=x zp=6zQ_+v_GOPAS<*8SjMTmbpL<#u$sgRouTH`G&WbMqm6ETjZg;|J(4HQ}37Yzmrj ztnQ%BolllnBL1w~Xm}cq%hO%b-#TOMoCjZ4)Xws2~M0R?H{)40~tJeo0w=XYKDR~pf zdBx)mlY!ytej!wHuj!t*jV4Ri17DRa6D69KeXNEZzj*l1ypUbc43FM#-h)W98Y+WB zjk}qE$heCeO{YX?m~HMNG7$}R7PijM;FTnpFE|-#xEXGK;A^sB2SBeLBE`6u+-g z>Zau-c(%eRlj4@BZ_OEYW5AoA)g*B-o^?XB2M985L7jVB-auwJxFwuZkKS#5O-PvD z8Yz4p;azFvU_}Rsw)^<7Mn(oMNKqF)R@QT~ zSn7s4+q&&blCy!VrB~qu=5CYFm1@{e)v*?_h43ypX+v{SzbV&2UpZ4emfxT(?nbK{B-|%w`&BTt5o31 zG}eTtX4eo^8@IhDN?iX9LATosOu9y9X>H4=3`{ygz_~yaP36Pq5>H=s`IEIhIC8@8k z9MaWgoQu=QI5(YPGsyAM;g#H(xPUvtkHO&zr4L=b2hwdx%=u$5Z{=UEW3eXhX^9gJ z30O3LM~3IPO^$tyjAZx(()p!0Cv3~X(je5EH}O$+o)N;a2H@s%Bar%(W#0=xaHh3T zk~g?_RX>E&|9*Qa7nZX36(BUhE?)V~%5k^k9tGy=r(V(czklHWeDua0Fjnk(_qo6R zW$#xl+Q0tr-aKGJy*lxR@UI5?kIy}I2PDXM*0=n;NZ~&>NYoybf@s`+tNDw$|MyVk z#6X<)*Li#H{p-I*^z&Dsq+`8*?;lnDznwkdIJh3zdn_LJ`;rli1Sr}#yf1cDVaTe* z_S)=J^Whb2mDGS%IkHM+ literal 92431 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

f3|Z_nr_sUp@|pFh_P-xLP9zBx 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 diff --git a/docs/images/instructor-prompt-settings.png b/docs/images/instructor-prompt-settings.png index e54a8c0a74cfbdc557c4f6e33d4329d46c37687a..9d6a2d9f53f024e28c86b1517b0de8122659d4db 100644 GIT binary patch literal 163411 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 J-{WxMe*rx0PX_=1 literal 153257 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 diff --git a/docs/images/instructor-view-students.png b/docs/images/instructor-view-students.png index aae450f290a1a4a90524adb6feae764a5418ef8f..f7c8a8b4a8b702e62a2a7d664e1e9ab6fa0942ef 100644 GIT binary patch literal 163899 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%0A))zs@Q_u=%`(1-b`^>5CtzpslwR(4i@ z4!oX#qE4I2M1l6dPQ}83His;y-_P5(<)L&GcQ(Y$Zet;$4OfS<%U0SA81N*PnE0{j zV(ZRA#34QIHPF*-@6v>u*8OXsi7xJF7$7T*CDwvg!b+ivQ?xqzhppuvPX`29INUls zvJId*pTkdalL%Tr8kb%CW%EX22utV$W~&%;DrU^XENnsnv=Kki3YVoP+61DG zUo-o5vi_D%{PE_!WTBhqM$nq~6-xLbN-ZKZdZ0tMl4*Eb{NYX*WZ+944!4zpa4ZP%HoO2+wfH4gnnH1BRBr=PA`8> zAa;7P?WlP-JiNMu7lFni4Nq`|)!RB0b?WL4)l^0bUc6oIG@zH6*R+jP8-jU8%Mm(? z8LETHiI~s3p*&G1F-|B zqb$ZB<&73=SjfRb+!;X%L||UI#T@4)Y*T|#sLj|CR5D6J0{jD$9pmWDrPu?6AM>Jr-Earf*kDtS;3m{)b%2DwR<$^nywqHez&5(2`U$a z+EA{Ll`oKm&H7{XtB#aw?T!+mBGS{gU>AP2uxp-t3Q$QZn)Jm_@G`46?!`>UBsj4RT5DUBksVii(0SS z0p3()#(-kVb9H2`r1-0y)RZHOhKM4N1NehRv~=~jWPwCl=h)$cOde*#(ZRv*GFOxnsBa5& z|8tfTk5HwZLC_li8s?v>K`o{$7~_|Sutnc!>W8@1ZO6G((_>tbOrFnJD&jVHTWRHP zMho(K(pq4`6x|aAp=PD+GJ^<+OgoXG*%f|BvRC2sFImK@d{HsKzKD0Qpw6qYv0D37 z-q~5U6Df|o!3hFO36Xa*8}wDrP5{-95`Qz!1aG*DMv%qOkkrCTXv7!rmZHP9c~8(@ z8)Gcsodb;0itWyC^SdXSGb6PeDcWUSw}7wA zT@B~OIYboOI|AqdK9^i7(yBYwBRSl&V6qOGkcmK$si0X~ZH;|?6Wx!yQQl3Kq4)j6 zc0kV**X7cB1XMfVTF%fJyqI3&w5H23xa0v@ngHnY7geM8f1xG)E$}QOsU_dfh3fOV z&??l0A*P&|DqxMZ z9&8IJvssshS)+zwuC$*0w~hhs;7!JgwrMD8amlI-Ov|fOc%M_m8T6j&zd>CjsN2dC z(Z%Pal51LqHL1-*HUKia9#->oVeWz%d8Br>y1=LpHCtXW>$y3g7p-o%c}z%Hag*=m zza1f~jkY`NA~igUs@&X%`0WU;pD7CS3@uS^R3s8&k5s#A z`5CnFl!}5QKpWRc_YO144iL*snm>v0{-sdSPBU>#^^>@1*G(yMgjP*d4e*L$QEFov zjXH>Cm+*<3QQ3GIE5%J^Gp|>Tu>)o?}R(#M8X$VMYwOg<(a!#$mT`qpI*jmaUR;8Gz;(mjsay zEhVP=WO9OO@7#;u&IlW>K5KC1)t!po>MNgwEsC7@*E{w54U~&(V&05tT0OUmIIsLCSM4fx=gUJO<_u@WIBeFg)u zo*f31C3^+!t`40q8jKtC;5jTeX>K+~54z`mY*)BTLrF}(n@OT#+L?PVBZv+-y_Arv zZ6!tvxLhB%_%XDm^Aof7oFguC46Vdl-{24bJGD2*3xE;U3lg}Z!c8_#Q}&P5rcPK; zQCio&qJEgkhVcO3wT~aFVr{RVcfZyr?x9F&|MDhp3CejHQZ%Xlhe?6DoK`vE5=Ujro>bz z*lZNJi&RG6=jOP+q{PpdRoK~lD`~(lRR4}t`wz5*#ohwasegHE?N&6vv18c zgBm2K`<;;}rM|bLco!z2BDyGRPX%oJt>EoDQWSGSo$RJ@V=_Tdd)K zW?{oHTF3Bhz69lflBACJLMLejxv$0N^AcjZ8KsxwzVIsY;TR$c-91Exdv{Y-cy~Lb zn53`GhTYvX`GnU>j9ZW}^y(3yC*B z(Ps3c9`MKGMZ(SF4oUT8D>E(fLW~MFd_Lb}m5Zq_F7U#O)$XpAYOr=n_cJP1L~rnT zcWU)zabM8G&cx??bS&SIoD~irb{eMG%KIA4#VM!XbGt}SE`1@y<)kK4l7wH{l3h2+ zw5q5wW%uHzcRFsjoE#TYV14uBEIv0{!B08ea$&qC_=W;VM^tZ@)-Yke7Pc=P{Ha-X zPPq_md5xU$@?%Mn1c}E2$3^3>7l(Zz^l83%({6lo$r@9%%9&o>{$Y^Fej@ncyKbN( zmF{#pWJiCvsJPW0zSX==o&KnH+;1##r*?g;>i%CGOqN-wfEZWtM~jt|e&LH$joRj| z*wU#GvElO%ij+lSG}=bBf=WAKx1V#V)-);JIp6!G$$=?QWiHGwVQ)88*^Z;!dU$GH zfmDw=5!i?%Y71RboNw6Wr`BjDpB<_17O+zfKV_f1&C9O$oUqj3O`;roSNU1!+&t!1 zb8OKqD!hFPVZ%Id=KZ4|XP;aCM1zfM34WviSgdOCrH9P%2l+iUv~O;JQiw5NtImsn zj8tM!bV6o!`_+vMCw=cnCdn_Oh_BheF>Fk8Y4X4U&#dji@O5dqjqY~$dDi;nlM*al zqX$m~(~u^tf#<+F9gRHa<>WDv@6e&oYZ0=EV<>N2qDKj9aHDEj@%IyaM~*<)I1G(r z!h2xe3zx-myGlWJhvNfVK*^hBw%ZGa&{E>250W=l{}VncXxMLzqhlR(HhHuIz=(?z z`Hfw_p1Y7PZgK4gODzRw<6f}#OdGRbJSv}#&PApvg_Yt%&;RBU>@}*WntEIN_oeZD}=?UydSri3LsSMQU^8L z;%v2ASGLmoospht-ZoU+a=jq(t^vRS&3-q)XgB>M%FT@F&$HrChzM{i9X3n(K6n0{kN}VP!4z@N} zU*?KXd%_^aPu}tL=$+;$pa2HKpdA%4%py5MU&iNFqVh8Gs);NmWJs)BAQ2c5y`wo9zI%sxUEMZk5AuF$ zl|#1@mz*lhs%+#tk+Mtv&*t2EVU8?={^(srTbjPlG-t9#zprmFcj5lBE*p@tJ)Y*J z?m5B*9TJ1sUMtJRxHQHd5@txwOV`OMta6}Me-AalQL;UC6Y#|XNbXSKJ^L}l9XSh0 zzJr%#!B&#EFNN)Y@)T7$$lVAXwiqm6Xwllkfer;zkOs<9@Sf+n!|Pha`s`GdvQw$U zlxz)y_MbW%QrR5Z%H<9(Y6YLsk%ka3HQDNvuNQO_Mz44Hb+p{*1w;y)#5CsyJ7rXO zIA5^FZTHkkzH3Oap*2TV-O6B1{K{5tfY^=#ME73 zu+fjI982@#s5TtLvEvTz+=RH1GszdXD;hYb;Z`|gW_1~yN&cR67; zTMx!`2ln70=Yo&UvAj7Jd^uSoUR>*^L*n5Dp@z+`vp?KK6Of39VuEPBcs|4UXNsbl z_fzf!^B%T1A_4t#>vYiU1jQ(;+Ru|TVUx9y*?3NT}n;S0E;Js2#&ktAr>_`aFkwr4mlsuzjlPwahOcmt|vNin9A!7Lm{_K4|S< z5b+V}>t035x-@3tAIV~r9(U=ATP9#xJTjjNE2(YQw|ISIb{lRn3Xn;&rS*q1J~FE5qpsX7 zk6V&mwIrC+rMBnRfHlQ}Y_vt^Od)FHxfq#358L?Vrz)MjMf&-Ja2x0H$0D5NnUu%+WDt}aWD()zhm-cP5N?=eryM4t%g@yL{r12IBY*F;`) z^mR&@$I*NaSsPgU>KfHU!2Eo^Jb~41gD6~5>6VSUv~mF_1%!?aS_ghSKF=F{o&U+l z3+w~vr93ux&y^mjch_ViVZ!%GsmZ7v_jQvSOLSs5df@v%ff-C+JLwcFJ@?GMrYh_n8tf&t zj*@%A3g%ugUCNe4xYd>4ierDgtnilQO|Bi8?)GCQorm;->BTJCgCWOP+?~tDJPQ?W zL@6a44B@xbm+G#ryaOA4@nkV-&e|yl?QH19Ur&ie8q|TLPXnAGHU$CbW$TNA>Rv*4D;dz+9T{8wXI@ zd@%5Z=tr2HoL6Yf@cne5(a$$X3Z>U=`E34;*E?xFv-95{y8n!7V4T`ykSs!H;>G}h z|7Z)jw?{94Giki4UdfAT%j*>>(B$p5!Z}nQ3<8rNYXsb?ZF&J^nbl6ZWdN zW=rhvX6k9G2D&9N43|V{AuFhwr?9-UvlVl1?&+Tm zRbl(30cgmMqJ086o<|^-#R`gr%*D-}ub7`Hj7XJr@>}#N%GK;rH6CQsDX321l|WwD zuIn z@}I(s7C2=d6cCkZ_t#lqF)f?CpW`KWUOdZ(X!_kc|Eh?~jb|m(gmSetJ?t_HYXvvj6N^3j}(RRJI zI{fC=<6&n9?=I=2;(F^f`ZT(oFaCNbFL&%CIem`u+9}^L!P&(_=c9y&9Fm@sA+3)y z0dF@?d^0@lKj*ac$&b)mmk{l=ft`6UXiMrOUtw^Pl&#JTBUC;o7JgO?sh+qy8Vy?^ z?p|wb@7nR5n~{)Reuqi6%dW;e5Rx@tH$vYuDF1!@Lt9D?b&wl{{a=YdOCwF^A-kMf zR2gL`QGFXB(p3@czI?I~X2|h4F`6&oZFS;P34)-}i&}-WZA;WU>5nM%N8Y ziuEgt&nHX%DsxEc!>q|Gz9B~|ZKs5onyt1{-4lgvt; z0XB||Nur6*Se<+Rq(*->Lia^CRjgi4!>{|7*)mE!DzEhNJnVg0ul`=| z{5cX;3P~$2hEBzlXP$QTA~(KtL{*Th;;BrGhen@6to6&7?Eb;?Cbj>Mx3`XJbN%|f zPfJ_c($Z226faP$1h?Q7T#FMdg%I3=1c%b%PLbdgcbDK$+$kE|EogCv2|Z_K&hL5G z%shX+Yh|$r3qtPP*R}Vx?ei4`19_C&*@^PTa&<{f=ohW76M$c_+ zhk7)f%{iyY5Xed;3TG;X*ps(Uf3?KP3vvAjw|GE&s2?{eRBc9RJt|uur!RY?Q6vhz z|1V?jse_L(wy1~DKW2_6{x6(rvdi!p0eI-Xgad1t$ZAHi}LNz#gAV5RvCpBlT-9_bl*u2OX-qg1=^mMbx(o%fhQ%5Of*5`;>h zP;-(XgZ*8*IWiNW=!)|&$N-QD)DTifC$0BYOgL9PCOw!$!aHGTeK!Hn{=q4PaTpu7 zm1d4QbRh)$99m+c8S2Cjf1;E30bGV(VI}>yU&#OXWixG#^W}taN!sJw>e%n{{^=$v8F9w^oT-{Xhwa#i z(Z|d`kAiQ8i)9-Mb*mqTjv7r8GnG&CsF-DdM0upjY)s|otaFl(#TxuMx)-o!d;w2Y zem(&OwdfOpD-Gv~QoD_l6-Jt*h=HzX^l_y)I<`wArX+P~-~T${$pzDj8}@m-TAxG_ zFCV9bn28JXLi$fB9@!|D(ekM_}{g{)nVn{zlExkUaX-qse+0oqnf{qMUdME`niH;E?d{p}CO0e8`tM>-9wBSQR> z+da(%nq)G^z)2@) zz56^`Y1$!;1%T-9i#`%JtwG7^Rfe6>?mgzF{1%1JS;${m`h9qRJX3J-JdR2DA%|>- zq0_EgH$D64#=7L;Rd9f%Q#xm~V?PtzzHE15w-X8bo^^p2AuMSKT;I>pT{SV)90(o{ znG55r`-WW`5;@EG;*VF;kbAvLeAzwV+W;2Xca|qp|0=vQtU)hA-&0yl?5w)_$SR8H zVwY8tW}8t4aV#@tZ^mz*`}$n7>B`3M*|*~D_+dzgk~EbsqjROc>)Y?cXaw@P14CDe`% zP6>ET(3*P$uQgjxmhI#9kgklTNeXy>2V`8UyQ;@Uk+Nyg7el|*NQT{~3QWk7iuU$# z4{vINdQz1u_dU(ZF4uD5-cbjACOH{KBxqeJzU7wj6^BOeWg;RoEEz+x>*CUeZrCXV z!Z^kRvq?Ta1@*WDAlfizcdm}uQkGC@gV>Y&UmaBDP}*Gr7a^GrYwZ}@D0XkYq^Ob- zAaL@I`PsLvhZLMrq%R%gR?URkxddXQe4{WP8nbfOA1w=El~!T@R=JYx8yKq-krZNi z?YiMyO z^6kRTh#A^q0$8vqAB&2cC6!JEBHQWgJ4X;qNSi=yBDsii7YQShA_fh*Wokz&SIla1qT~(B z)5}10mV&$;Gkok0xXWwrcoxdWN6|e3u-t*xgSDR{mSC8>i{!Eu2?E zf*)?*NEVq~kP6%9Kdx{By>P8=>akh)A{*77izS1vI-d2Bw>wonX9AOTW3BMe;Xhx? z7?f$3Eiea7Cz!(7$Q)2#+7k&`PDJ=H4`{pQYy^cM+%e_f>gCcw0TvH7Tbv5b)|FOPdfpZaDShuLz!}}HAy-Y zx`+3PSvr_G&TiqqsY3t@E`s->t(rD5jV+u|GqdX;;%9)<^nM6xrGaYQO(iWb}FMHZtK8 z7=4M^be_sz|B|1kLC;sjh!lpez=F6qY>P7h9tXVk2ha8^7E9?Cdw8Q+CYs+~kMI60 z`Rix%yE96$>L2rBDR^BYETw9#LtjySZN6-+W&k#qgl0ycLsUZrGi|KQQY?_dKK-W~+L3#wG2t#CyByf-IYZ`LuR??) z-dQ%$WcVH*!^ht8P}U!(8hT-n5c2x)f%1;k-`*e7VO~@HbNy7V^IsA>8b}>y)vQhO zwG^WMaUx=0T<+`;pN6eP%oO3f&PT9fA8{tan3EY>ls51nRjWeE`x%y2$y`4-?MrZw zokocxN8|BGgs?0$!!cFWv{%N(Hg7l(MTaO4bSY@~(RKBKdHY4r21|s4st{kAud9^V z@MKbGS;kAgRQ9YAV{P#Qv^KM8`u5p(CzG6EF&Pl69@~B44ufmmd@j?cEd3KfZ>9#u zbF*~H&1xcDW-U70o);YPyTx&Qh!7Lj%@OGzSanXc*Naba)|K5jJP<ci`Lg1%=|iiMjxjW}=CZx4BgXXLnpH3lM*;+edD1TYV7u98vFwoV&3J0%>Q zj}IGu(M&gMNOw6a*G=yDf;zb;#8eqDv%aPxF8tt~Y~tx$Tg17LmHFF$hu2$4O$)bN z#S=AyKWl|2vI%dh-lhhd5Vr6If+DX6y6~CPwk#<{_k-c*YV_8Fdm^2-KfT98OC^W8 z^b(==kDxV8rEF9UZ+@i%q$9OiR1EZ3#KVd-#U^OLCclsFqkcTQ=V8HWAI>gXFQ1;K zq;>a0oQ2UAznCtxf;Bwb29?Jx_&ye)C1`(|NyBB|iO-R2LPR~_)sZpBUZu?$$d0In z>@fcJNb2R+&Cv{WlHgtzMvm;8x2w91;3X#~^l*%Ad9R zJE#z*m?Ucn@}Fr{HRON%w{4lC2|KyJ=L8nMxpKxcK}780HYVAfO>k_AvnI<8kCrPR z3W1j?qU@@lq^K6|IVI+5&Qeqhi`M@VYY2PhsgC|WDr!=&D&cR)(^`f|p)=13k5WR; zu9P>&Zfa_q#Y<;K_YB6A3wHVVJTh9D_z-B(4UokiP${I3FA!2jCgBvI<220~1FFF5 zEnIVm@SUCuyHQ&JB!1YrP)o(okX?4vrih%wrNBb7Q3v|Mh!2(wXOb}hjdcW?AbxW^ zo@ke>3X4sd>jNVWJPJhu&SPqymr5`dt}oq|aS59S8^zw>x*rY`QkK-f~XrYs#P zS(Z#~?dNsZ&kU)R6RjDINoh?q_SQxt-=oqf2M5OQJW+LSu2VTyQTumRb{zk%?=8z< z$DfM$HcjLy_oj(@6;06`PTCLlNT3mLb;^hEdosh7ouG7v#|8P(ER1Fk()t>%WD!8sGF!Tk?||Qh zj_pK30gifuSls9Q_`^3!N<^lm!l5E?Y&Kj4@S74vLlUFxJ}mo>a|H)VQ~N=UcJ;>w z{aVH&dqcpoM1nss1lekGl8LOqM$LB42?7_xZY~C$!p~y-t5o zIm}ZC-ox34NAAy_$(*nMv_7Q(`mneO8Vh{&EmrvOw~hU*b+2j%nbQL}Co$QP)+NFhU28#4CQ z7z}``Lxs$53KQT?4fYWxQ#cH)s@6b{CLb&%NaVzkL?TwJ*evEgq< z;m@^pYws-AYg%O^j?g2q-D)dYP|Gx{#!cDLBNlNH<<$eF-DLBJD`Yt<5gf|d{IQwa zxsG(U+Se7a)1p-Dga??$d))hHgZ{luT|UhJ z#e@FqFl8Lnx^r2*a&Gx~f5!Dc>OvWB)t=B3k56WE~=0m`R-n{BxB z5TN%A=oJPmEUAw})#^SjXgHWepDKtw%{rbASh74zV<8(U)sXT71U^U#5S5GX z9V3&@e$<0dt5-Orx2Il!yiL`Nd>awd_V@$k+FkK>P{u%31FPe>Oth1BLOlAny>B*i z6JRng?7GYz!60&eJUYXv$}NAaBQTdxAO z&KG?Le06WLm7huPO|A)|JgZo|%(pr%oM9H7tbyETRXc~m`tL)T2D0mm1B2Ltr?@+1 zx>75i`$keT9rU*9hDU8^y!*=NA;rgsqzqp>M=0eH6(shXspl1oE-uEFh8ssdilBRp z&Mh@}6E9QC^HFLMSpS}eW~Tnz>Gw%4!6xfaTXdw{(yV+ml~#1& z`It8x`C_P=pONO63sxc$zdNa`x&zJN>>0{%uP>EJBnp~dY z19o`GuNukbNH~#|zbA>HvXx?1s8^~KO|s{-R2cAY$Q0DKDycwC0o+nPR)qAFUX7#8 z_-?Q#M|#|mXYW)0;{Z)`5BC9Er9K7D$7p&i`-;y1!{3Zl52Oy7vC zQd(AQgaL#>_8lurrR7z!MgRv3d}irtW%P%>5m9x?p$7saRuG8#X;ENO<#HuhIKt(IM$e{FzQj+`?LnnVmHk@{aas5J+zel2k7Z1vU z48dFTERdy~U+yinNp(&fVZ5@xTCbW@&U~tW*Y*XC|7A^4S~Xz%qRwbifxu%yIU|V| zWTk38Y1ez9*6YOIs=F~GONt2`j;0UjJ|a`2EyAH9iGDrB@}5 zt6hc!7iZ1#{oAE>(MHpo)de=fLD$ipw&{VPlXHYu!%lUUDEGWVG-I03vhU71PF1V> zj~@Aj(&Bj7WQ%wvk^Y!XHYI;%=YB{}!o-lsZ(H^^ozV%gaoKOHllom#5qnccXeBBQFY z@O>F<-;oixQW#I>Y81cMXh$gvhW6ftl(m?+OcO2>gIU&*PJv<$R#PwQoWC-_<5=!i zwJr3I<}MW=i74U3Wx*+H?$BT-N@ZbExK1x}cQX1Ki^n|)bufAfV7hV%d(15pb%Yq@<={gjP z0G4W&4VLMHE_vRFM14G%!mnnArNz2qp2RBmF<12rG|$4gdqG8v@kh!iZrGAaYzn9? zIvYJJig!%ii1q4`AikT0n?f*8Vc1Ar&ZLg?eWex2o+d3>on;6qXb1B4_?*JXi7O&X zrd9*+AZOP^d5?>Lf%QgPjm&twqdM@KUBK_)w{${YCs0wj11DP&D-zNYG4|nbd`cqp z>yWTwpBUnoF;y-w8y_rz4sLH%G#VPoLH5XBK-W{Eaw$Q^nBDAaBInL$dRnM-S-5EWcLVl}mx9l>i(My&I&0)=)^l zj76J)*!IM}OA+JTCloJI6~eFVWXp*LZA!gi?zTH-tc|WQX)TETDI9YDMMUur#gH@! zEs|IiLm-7oU}b84`B(bky6Va|JMy}Oo73;j^x=QGP+ZvIMod^4#1ywha!}huJ9u+c zHj~F&I>bGrZ$xC^mc&2G!-0xf@gpa=VC2cRC3S8kuU}QPy&)TyDA=vMGmf?WT*H>S zs$tJy(9d=|Tc|nKp88dM9xAaTD2lwfbymS{Q-qoNzEpj{Z9WC};i(Zva)BDsm1O|b zW!72+czd>1;vtHt%j$u4i;ai2kaiF3D+V=ay>(->Kh5Xmb2}LNo=M39rkRx{ima${6P(Oh^#qX2s;7`(0333jsxZ;5t=!tXga*I1}LhruEZjR_3 z)9>Wll=X_<#<^PA#*sU??#b*@T&7WGTfG-8V|<`;Rw$a-P~UF+-HWwU zBwl9VuT&GK$j?7s?c=^QQKJjV4bL?sjHx*rdxU%hS+1}6Wm|USo!s}u6I-3-BzD4h zw7k{syQ~pciyFn~SCex23jHTn-|67n<>641Z&m9WqD!-`1-sP9cey?QiBH3$nKCW7 zLIoB?0<@Id_D70#E{b!U+{t{!2!BiJWSml=i;=)r*NRqDnbA?zwsYo({T@gY=m^O9 zx3}_6+V<+j`uo}`>%n!M)gX zgc82%ExgKl3TA+HSmdo(AOMh%;}-Es|9-p9o$(51z@h;$jKYLUmS&sQEy?at>>C#B zs}pv+w=bD{A)ZSIa`wrnQkR}?8(~hC)wh@&uAr-I+k!=)e}8|%r1@V!V<_JX57{!e z>ZY?_6oEzX-`-evZOE1z-a?~J`R2&tZdmqZ8_!E>@aq35YKVOqFun=vb1cwgn4q_H z2VPXX*@x+5-!GI1!I8LR8vR5`uBLe~@|sdYMZ)k7IV+8vX&>-qeQ>s~MUl3J7bDU4 z^8M&zS2rrWE5DItduoCZ;w3$F|#}-JQMOKYP-^|#d>t2rgkv?Kt|*;$>0TN%iy~NrY_oq z%tMYIDdh9xPKk?FJA8|08RQ~&*fl?|u;?ykc-CZC=OQc&&c@qa!9@09hlHj@@wtHk zf*0~8QWuhCnz<9}J+&3>mTX7aJ9MAPu~(czdb`eThVJq5qLmFwh)HPTN2IQ#wk9)h z(ZVlB-%69Je)bo9#;!QrHnC&m1*uetwOWjHd0gF-+K^0H&jOwKd1e1}T1m^EtP$JE z4%Y${Y5VC&GN$m%-=teNANgiXNZjYEh@skpGNGx^s3;YNf0gTt3GVQDAgR-B{*+IM z?yX*L9XGD`P##!>iScW$nq<(n<=)RDyZV{DEhs!`aKzrcUR@U|CGlJ2P^V+Rq4{$- z+9-x4J>Atwc81KXJ;wq%YWHT9&`_!N?MdEzn*qzGk&c)OX&I#g*7S24CY4xNHV&^C zuRS55uK3EJ_;JA~V-EkZ=A!MW4YPM{o=dZ?QW#A6h@&+Dr_30V4J6sFe0X)vxw)|zKi(Bcvr12!Nt46_}oCNz* z2|rr>HR%{<9@{2%CQDBAo~<9LNna~hol!Qu)@tBx8O?vx<33hx*Ptq(MJJ8Lbd<_j z9-ES(#6g*csEI9f>d&z8Dr2)VJFDx`%pzRli-j>t3aAzxr%Nr8g@&K0IEG_cu3`B+ z&U8)Y#@Wm$)osr+9d#dfb*`y9tyYJM^`w3`^?w^vIkaIQW%6^=u)?PV@6a9bmF(Mv zyPQw(8%bi@SoXxgYO$6rCs41gcU&S`f2X>hqSn1fgsjni&1%*mzW$Pt$cw11Z>{!Vy|6Jr*RL%UqX?Wt})l4{E((E z4N)&s%RO}J?cRA%i%#$3lLm!Sttxrt7=i14sM9CHWfG43u9CYVpkQw3Fi^IVU)QqO zGy&~DV@i(^WWPQt5TC5=X0s&_0$p%M$G&ekr~J6&5U^M8^Je2B?<4zC`(_L}{chhG zUl>mT*0N4Wje4Q~q|owqwq~KlD3)6Zar6FUlzo>X!Lr6yj|5NT-#tDW@$a;)#t96Q zcaDE2!m(CJL?=a%SKellkIJJ=7Fm{Zk0OL4FEvFu9v6(f z{X~BNe`?nug_pvQJMuY*D}f+K5LYo_e@mq}<>$HIbYUF$Lv7tju&df`HyojjntvqP^P;m7g_AI0y#GNb4@c;ztP!Za)2!yO=2-Y*xg@VmMg@J3 zw(F%mw9U@dFrAEi)_1(Td?1%T_2&9IUB3aFx&6+ZFP9i3ea4{ZlL5%5fGlfD3|aYJ zxttt+c?B-ePd=$2(4>@RS?nU^@1dLV1B^=Cr{yKA5ogUs7v3-i#;7UlkKR!%wPQVl zjEf9QYB&`PZ)&Yfuok6a<{1Wy=PF{o2|JVnQvr6&I=~7N_7k0oiS$i{R|9XQ|HCv{ zUU6i{}kIz|4JP_6nJjY(UQ>+9^Fch!J!z;>rO5@$< zk|qzV@yBi*hRD}jl^Sd%=OtAyYQKQI{JbA-LCOoCIr4)UOmH4BCbruXw?xLn-_RtZ z3xPqAR8BO5PZ4QEGp5I>uP-9t%skLTy+>u}JKrJ|r^t83LOaOt83w905YE>O1~N1! z0J%VQ*$foLa4Sf5TJJ-R;!1Sr8u&})l2$7vN8F&JCZ^BHx2NL>0rU z@<W2E7eN(f7ADvA14W`o*9Lf>rk zKP9+-vT!oDJ%%fcX17l$Mm)c~wa(3&|d0Lwa20QcI@jHjim9d;# zRcY0>VH`20zOqCgC}h-r3t4Y{TJh*5nu7cirvJ@J9esG*CL_`qf-s}EM zNyT*XP^kl|%eq7VslZu>1k|myHA&-iNU75uJrywIDCff1BM7629Oc?)**(wc>3l`W z8hiXIMJ6>!pG&)_jVc%gkOAd<2Zd(wU$Ynl2tap;9!08(m^dX53GRyAG&5X1DezMi zABg-wua8vSs3n`K7upJw7;HAbh#acC$^#Sbv9g973^ow&x%amE6%%0c(;sg!kp`h3 zq_Qk+5(8%%&;!xciE!K>%Aq?}evxfgc4u0dmjw$m7|C&oIVBHamYJ;WiL@Xq&Gvgi z&0HdHRmA^YvLw1KS>6{^y>-5x%AQ{Y-ogMw6WVx;L4aVHRuLQp?E70J`570Zoa zE*yo&vHJ8aE`I1VP;5)A$V|qe&4(HAUu-%R836{p(Xt7+zZ%@_X!)a$#j(op&R@C7 z=ih5jFQ7JAjR2CLjQ^e+IkI_G@;vnEg@n08RFq)oS6ruY2?ut&C;7iFOf7;s^l`3( z-0aBq1?4|edia04kE05YaTnr`FNqP;%BXLXm-@R?wD{{65Ai9ZeC&(f&@89%EJ5&d zjucAwdSleXMvC#ZLNI48K2qCui?i0PI(wXREo5^N(dqcXd-qxnq^X!RZ;@2yUNd?)p-bC%HE_~Y^#;bV@~g*;~UJeNoF${D{8|Bo$7x`rY=kg zOc{@7jyHB-&@4>{n3hV_CmPbbl?ntGtE6RyEe!y72hB&I(+9AP&?RF=Xy4c=#hV_^ z9bXW1Oboet!sW(4`NMYo+|!d~o2Rq33SAxbe5}-5V5-7Y=OJk!8LKXjQqJTOD5!&0 zd3^bdqS(QWz!xC@_4-O{SZ&T;I|Hq%bw>OPanQgj$17mhX8R^pU58wq^++>ujDjF@ zUop|V43y;<{L6Ti>{Q#Zk0UgRIU>S2Prv(ozZY2rbPm+*UYe~*TgSl8#1I@1ySy9ap-4|8@qd6?e&r-dT(MH8`8C!x(I7BNV6{rXhIrj@KA zTEu2Ve{R%;Ye-^z!7N0_;nb%LMR{h9Q#-oX(=1KVDWn7UF17v+CB#2(i(if^?H%Z_ zDDkrKX-bW5j7}}R7w)ZFIV*EmfR>-?hHFl-x^MVcE%^+7o;A|w^h@tg*tfagn(3rTaXxi?QZ__cdO+UU7ZJNTx#bnBfA_|EyXCbXqmf{QZDu%iRSg?Nq>XH8e!l-ptPivcMzr3n{HF)lI2a6mF9 zkCPGGUxnza*sbqx&`O&%_n#4Gr4eF|kCq^+b$5KG%|Dgp@7^U(9bbknpSZ^wpfog# zbLEnenX{SO8vXl*)`FSlpk+?EjgDV2r|r;&8b@(t4^>$ACT~03k~v*~OWZ^TVcw~P zvel}KJb1{QJd?1QZ+L*9TBC<7$I|T#!)7B7?!;FJLL;hXnL5_oHe7m%05WcQP_$uD zcTYVsxg{sQ1ZA?#ydDWlFCb%ueEN^Nr`Byx4zmIX|JFza)69pIrTL!r%!FP-YC~sY z%|xnvX?d}U1hk)Tni?7SQgG~|w*(F?zexNhzLfxvp+VHN^lo`TxS?zG{K1oy2 zSNz(fAx*ugt415Ek=18TwUK^h;8UL2qc3sOcM3STj?L*kISON^Z!LjD-Tz%W|3P~) zo8vIBchk9FHWHYooo-WUdjRX?GB0FwFcRkH@kKB9@lmZxX0aYCk1f*m9Gmt2t~uMY zLykwvx?V!3NB7Lm!VeIF{Iqo2xR19cej-S1PRa$o$ut~`{nNW#@$mPV^Lp3}r-pIz z5lrZHqpa}I3cqq8l{WaaRIx8BVLYK>T1!KZDY<+T${5)G5!rcOqd0x8F)}F1Jo!Gx zi3kLmjdBz@-&ZP%Tszfid0N9*N+I17qYx-YK}(~TQ+8nNd_<}B7Wssw*KALcW|vX? zL(d_B3<$r#($>^8f%Qpyv&CwqrO5f@q4o;Y?WhBB$R)M+}ATN<9FVclI*$ zQv`YGWR7Pm%89x}ABjD)f$p`s=#yJxv$_5D4*wNcDp^a*DwBv#eJtN^sd%40^T@os zb5XpsHZACpCk3>NckMF|i><)h7U@K!R87A{FOza0OG;n95fhV*uyniJKg86IMv9$MqNPCy6PXN{#oblHDAC1ZxL$6c^-A2b20g> zK3@T0_DT0+70Za-pl#Im{)<3eU-!ZYg?ba&nH<3Wb$2n~7i+4`N?bcgcc~Cp3THyT zOLV#DO2#CMh#YZvsM|z>7G<7LvP)a7Vo_+;DAy2HoYUi3HEr16;L*BSJrY0pB1XIO zLE5bC-G*57#diiPn|oA6rEiSHMh!D%uE>FS>Pkor~+c?#A(C)xax$ zqiIUB3ndqL**I#}Upoj%m^mZDopMaK1%8FyEjwM1*CW)GE!ug~cE>NMg$SfM>s1g` zLD+-ze%1X|p_6Dh4_zVVStCD7db*)nN zS2;_ij^S}$J;#aSY7w3PXBtMvz-~u3n4dXuhkioH?&>{UBg=3i39Bth$(i;b^2Qw? zEAHowf4Y>+L;nI7q8+aHe_E;s4syRP+=R&$p}d^yC2Dn;#8HXzNk`%q9jyPDQ`Y@r{Ykt&U9&V)p8kJWjwCQxu%W0$n$rBWYHJ4ixD(s@;nM+rDSnCb776m7^H9ohOe{bt`nX zR7l50^FxE?Jx&~@S^tjX{)y(qZlgJBMu9)3Cgq+h9!ia7y4oyM<4}VCAiiiO&BN_P z4%vcA^sH||v_;YSvPRoM8>~4&L3=eNxr>qcRbIvM)n`D$`wW3co}DO^S}(~rY^|hh zbeQ>W#U#t~C#U@ZzIpR#-u%jYF z*H(J+JQ5XGyl~gFMo>1j$KwK}ldL2z`zp#iyX%8fx{1#QE-8Zr@WMv zF12ZPgXqmqh5ykEfxHc`w315cZj<7q5?{!}FAHZqA=s|4<#Esb3zy3=3i;3Ofkh67 zhBb2wn>eh1{_++gX#qa06YrN=<^EOc)Dp4pK00@;3*|L&m?zRRNIkW{%&dNE{dXYtm?J79V)&U z)NPum&w9Y5&y)&rFUY;xK1>4^nx%}KOM?nFyHZhE!#p*#Z{igjpd2f(GUEx3o$%&L z&Ka@FBCXb?Ay}dM?l4SFzAHZku*JHkT4|}@svju5loV>KTY+C;fY>+ak?7bK_Uuj^ zFC+f~pVK#$S)LU(ge%UX&E0s_dM4Q|;dgVI0WtNXQlVRQdE}-PXtM$l>{UKNN zfRgVz?W}>dwhT|piFf)-y7<0W=9zNWVOnu@SN)g#oHMs>oY}oZN)(O&J1Tb6Y(E z(-AYSP|FN=i-pqd*%N{d(9m?387MkucBK77!;;onyg83W)F$ z$SbkT1p~adOh(R9<^ee*u9?o`vE8NOl_?s3A1j#dx_YkuxYE9t;=Vd%pT@OcxQ=>=+g#A9sa8h4Aw7G4cq40`nBKu>q%vD3Z(s+Pr zh6>BqLTA;kdzA_r45$WX7SEnQ1j!MZOV@~WF=1^w`FGZ~+ zr9azt&tgJ*i#eG?rV-@`eqx$A%gN33pKQO@;9@^gkhg64|sBh|GaDQ+TAJISFwuPG0Ta4Lk9JL1|j+iCJaIy7;D1<6a*0*$5<0&$* z%4DGhvD=*kPuf8t?s*W4(;L4oFI@p-okJq-nWEcfCzrw;p+Pz6{fwsrX9!+AroZpw zKX;S-HtG$@_%qquB>ti*iqC`Ke|M&QX1a^vXj)V%5hK*sdNrnP76@ba5L{7*F)^n0 zsdgF66H(Cy^d_cE%1Z%LMIzh{#(GB@Sw{-4!rIKk@R>YLf+V#wJEd*+U%}S=zu;E3 z=6Xfvlg^r3R<$i1XP0yP2hd(9v=Gkyg1feKh|rtU>Ns(HCjP9IxK_+VW^ZykBMqK2 zVQf7EZwVUpzmX}({nMND&l~(~bvsbVO9mDDS8nLfFUXtRy<9E&d#dk$js^d7*-bfe zuanUBrlIfa|J#GL!%3JmpLNCf`mftX|KE6Acw+wGLXVL9!M_UFm@x4F^zi)u<3BVl z;7iSqmq1!>1%=7@Yz#2-!P%6)&nPMOV~+3F>mtr`T-JZ3ixhTB2f77R@pXBTzboH+N-_n#03^3|46%Pp_%manU8Ng(bHtjNI04?R(hsTTnD52IezRMNzYb+x9-DR&>xPYu)`Z z&<4Yh*jTt_g#Nx2W36f--(f4>wA*-PWb{_P>*g%^2DWyJ;Z0IH5H5*gbcsYZj##Ug zUpQ#UZ(81EC7ZsbLDVI?;(cL#uqy%O+`_tHwz#$-gZ)H}r(zDRE$5;S9JMh@DYMHUqr?^YJ-OL7H|mLO=Ku4u{$I=8 z)9EgK?^z(tQ(rn;;w*^sv_s^&M8GR{PC|G;T=+r5Utc(nZ&^)A zzrEhQm=mySOFTF>_meQZiMid5TYbBv z-ootvJAdTQ<&Uf1F7lJIPrpY)vG>p;@;C#bTNB<7 zBfA1$Orrj5!Il?C+R-<+h$2#qM2v%za8HawKhE;j14AP=Fv)o6 zoi)~=(^M?&evup3o931rezk_kFkEoMy$?VP6iZ=rA$#usv43yNKjF7aoY!G>`_JLeCQCum$JuT>C-DRtKEN$_RbBb~F-h*<@HD3RclXQ9^6UW0e%5AqFy8MSu z%ST#s=W56fc|(emUYZsW%)Q0ERVBGZrroMjd(OG9{@5LFb?S|=PBr>L-cN)(xrPjz z;7eM-kg{`jc{0I~oY>>@b=rjM^hend@QD-*;G|53XidoTtVwZTsR~UGfVp#0Os4kp z9Z&U-coJ+)Tm=m$^EEx{jftU2nD15QuUmLZIw|4Hz8Bxs+h@0f2wrmR=0gD0Z|QBP zEUPA3!?qC3!n%LWcm5ae^}n7r9Y0K9TVuuLCi4fDS+^hEk-+E=!yeC^^*g|^$#5&H z!{nQ*OO-)BkWlh)!HrjIbOJiCRqBqPQcXENoOnhI{Vlf=YCB{Gz6>@LIkNSEEH#~p zo+Cd8{aQ{*T+De^s)tF8-h^l-bO5PLu#Bi1X@epT>kj%4UXk|BpfCze3vyP@!%b;^ zwa@?>m4o z@51izfYKHo2iwK<7N@|7FbT>fV>t$WfeJT=3O6InNYt(zH2SP5#kcVjtwk^jbjLt1C&V^-!8DWb+H%3M`VLw zUF+i4+fV^#h1mUf9B?!~P!BVn_GWRu&7^b59Ok+(z4Cc&143~SvvJw>z7tp44i>p^ z*;?)Y?YSGgZIMjYcWr+mF^+cYH8eyTzMCxG8lA2$Q+_gma}D@ zA>2O)wQVU>T_w!o0^e)ulI?X2Uy^L&dxEv~;uUryPEgRn`mNuwMT@aIhjXS1C8PzB zN?7yDmCYr59RCsIzBo-gpYDpG(`{`p&ATt)fY;YF_&sjW$=6*y=lokAeD2h0m7KXW zp18PQud;x*7J%*;u~RgzwK=;&FZR{4P!ptZa4qm@(0yz+c`frLvUaE5euspq1T1uK zTUU<@4W(zFpx{aMfV~l~KvYhsa?J6qkP_}KCUYsZDZAT**6z0+>;s1bU{Ee3*x%^E7TdSd6)%a#B$ zU-UD=2861#pLIhbVC{=f+Svmm@MkWWHOV5zp=<2&a$ES2Z%(b^{VV0*UK-mAj3`lm zViZQNz*|I^Sb_o4j`5llp0Y{R9eT1JeiI8l8tXLua%9cr_d~buo%iBu!Lbf9?z+3Y zT4S|%ZvCXJ46(PwWmtEQEdMa}dZ=SsthYKif~bRO1!xcJH5A&gnZ4d;y(vYukwM~P z&eBsmBC-dO+WiwOPFH04j#$C0c*S0i!na2&+B+;~ zl18f@ymz!PVwE0SSLsEEWuX^`mfg*FJjw*7W9P82aYH6^DxYaysKI}w8`2AJ@#=7|(h?ulsesp8JM6%X<~iDkGhV8edRFUe^NsK`?DU7S}XHl5Lp* zV^ZDxLt_g6<%GsfeD!R;z<9rSo_Esr)+CBWpGLbJCLG1?vNM+EY-Ciyo)@=OIl6u= zc;G1v>FNcHUua^dFr87ai#y^0w=e=tmL zN|;mID{Hm1I6uk(qtRrYI#>Wbk!p!fjw~l%|S3-N`AF(ewQ5xp2EvI~iFZsDEQZ!Qz)pKlE z*UnhJ^!}7!CEtF3@Wkvk>d71@x%m+JAPc;ZrYH~Top@pffu>Y)l@EALQitfRL!G%& zyJ0qdKP)`oF9oN1Cie{vCK)GdN3AQ|zU>gu*@V5muC{ngy=9I&ZRm!x>P>6)pDp&? zHS2i~wcYksL`=7QPL8$p?@$CUCLd1i*>a|3tmtk1OM0CcdA{(h%FKsg)bc~@>H5F>6l=udBZ&W2%O zkqt(Vt&cJLKiz3?OK@(QQXz}(e`U~*ePq@Ivk>58SqR==Zrm!$qP-v+sq2BP#mXQaoBuNlaV?#NLZ1XCAAa8EEgR`{f zckIuf+}Uq$f%1mMs)4RqBS>p)>0s@B`EO!_((h~c^Oy|Vvxw+xGZXb7*3F#SI8)d| zr2MF9b?zN^ZZq(0kcX?ti)~zJ>mh?GK8SQndWuyw$yF05#l2=SazB)tMVPbi8dEs@ zSwiB_f$bHG9nZjJuLaAtjY)ao>nvoY=(AoUqqPK1?D-762@HYX!WtW_6`=+Tcm1R< zl;MyD*jdii#2+1V*poJ31p<61OTHPPw(-RwvnD!etlt5DK}Wc!PIm|?Gvf1HgUGjW z!t-u=jcQ9fmIbwxGq%{&>?PrjsJ?5~>o4$WyQW=lyp9Y7*n0!GBrL>QA!354uj|MAYDgF=OH|U)&g0MPs zlRIM~b=+&vxG{3s;_26YwB zyB$AtTOaTle0&&nc038vP83#q@Rv8tr4<4!)Owit_EJJ=evx-C>7Z_e{8lwnv+7BX za!iGimRHp$En(!g8{%@jx}Ft*Xj|XRchKjml7)D~sZv~QfFaX_z$9O^Meh>}SVLxM zc&vT2=*;|yc|uaDzp5~Q&6Tu`t2>Gy^=MV8$+oYg$`9^2)H_W43-zuQ1Be_1PhtBQ=Bn|_n+1+1T!*Mfx-I?NL2du6?lJfu!* zsiV>7XO{#sVR*&i{dRn=h|52)bQ^Ity!Ag;J4LU%eqSt}aGY9f4~fNbQm&Csu@FQy zV2VA5?sps}i0WJ7KFl@&F6R5@`GNjBQL(YheS@pYY3#Uk*r;!uyn9G%|3FlSix3$a zZB}248^PB;4H)z#`>J;jNA7~jX)ZtI@*P4R>p0A5#0f6zequ&s@e0W=ee_|n`d+SO zs23~(Nk0MX3F0B^QE|%7D0V~Tq6u8z`ON=!y}PpqcuQLZUgAZEKPqiH`x#NEO4_Zu#bya z8X)6QF(i=ww}j|-m-3ev_(AS&cQUlp&2@R0UgujF8${hl7L1m|8N=G$GNnuJxgJ<$ z(iU+8*MT=1*CVgQ5Y#J2I9w}^2fF!z#qYntd1RUx4bA#CovqL!s7DyY?OB9f8 zd34LKRtz%2saqfM%U}7Z#n>pmMH+EMer6Q!R-Qao^p}}^xY}gq`$Gt9g-eB%ix?A^y^RW=N;t2 zNTgJ$&()ZJA%Q0v2xmyFc8>pU1OUt6|J8{07=Gx(b6&(Xz$9G5a(ACdL0;*DRUwa# zeynLMuwd3dTOZaD7erbDyWbt{?$`GLDz8j(-k7ag23RX3%TZ1*a3SoNYuMxe~^X30F-O}pM+;WW!h`ZT(1E< zO$Pm&cGvWIi}+CoCgvIBG)nFvjAHeBe--F70ZJ zl6gG}sQOd7I~Gnv;zHe-q{u+oDbqllLaBq&aIplI`Y2IbvL@230QTiog!QA8EP;>X zxebBa{VQPQJ<`q2 z=D4H^<=hhYid&M)GA9Lg=K#1 z1A~HR49_az0Q7dyko8v7&{~vj-9tg93~;6-aj5@&>7$NSpOBi8`|h#Y+N6)Qi%FbA zwsX&PgupnMu0IORp0KE(k9*zScZ{-UcSZ3jGskyVq@0${JJbhRd-o=E_BiMU@=K8} zC|`+?vz_D~ZqM&_DBXMou@EWw262=%b3?b!VzJc7P$(Nv;8umBs6T+$rIvSq>JP&B?qC+;sOQX>%|||PYiFPHKtZmIoy?XAdA261 zf_K74CSP{FQ4|?IaI}A2-`*ihpA-H5*#Bx<-w{ej+E%~vO6}gaPS@h{SaITv18-cR zAi>;kDwTtUa2U%Zd4PJ}+DlE29bRv2b(KxH9iHDZ+JuJP9AVynfH*$A!AVpv(rEK z1NJK!D4zz|Y$2sC_^c)YS5hXXo|*rz?8x}LcmwCPB&Un?JCIHIvu7=mydS^h>!k{< z{GVh({<=cHhyz&-A3u5iRh96!;Ob8glXU@U%YXmke=V_JM(n?V`qRq!r?>wN)IW{P zpPv8!GEl=5Ad;QexOHWSadKH2gQ6iCAKq;Il3(~w4f@mD%zeQ%Ky26B;8DfvG{*08 zet)s2=HG(&K2tuBlUuT74M&&`0W%0l4ol$&2wPE zs-q-0P%Ae4#|X~3O@-S*e`*ZyHj^*7#y$QT0B_O&zfP8af;AfZ*#qzaG?J_oWQ5d?HJ<2&TXpwrBzZ)RhHK~IsKn@(D z%b`*Z!TK}aYXVZ>-msbou1(e4C*r|>;k@t;=Y}Z`Cx7AqTKqcVyM<%qq7*-H};EYz;JUZ-`kcp{AXn|H&ikQ~jb_&ZoT=N7fp& z5sHjD%=}+VXD}+2#nBP~n3T33-K ziJzNzp~;}<`wi(YpeTnmAgngKRSJy!ILf~>9da^X_TB+(fIk9WR4k#?Jf z@al&(_=vQMFPf@a6U>`vhW{IXB~yxN>zt1tu~bX;*V7|YoC(r(FMqt%1)Z;cV;%^D zZ^C?*rP;RICeq#(aCUahA<42T|Bx^vs&<`7YjedXGMKrN`Loku`}*`!n?K z?*uU{Q+LP)2Q$0$RzTV8q%c9-hLo$t0&F3yuW>=f>!RbHng)fG(rMOw<3Xj zcP^F@eXq)LDi0r&c7ikE6lRImD#tjB`p5gyl1u#Eq2BkL;fbW~Dn?ka=EmUCVejHf z${i>;6{rhT(y_o$7|^LBfI@&oc~iOZ2EnI3w--y9SZs#%pm%72fiN=8y+4=!+PM7Z zHHP4Wvj>oA)R|XwC}*r>F$%rhtQ_70ZQmP;U$~nCCL$MtawMO)=AYrw_*{$mrn*&m&iH5jtZ$N@U zS0j{EnFIo{^>x*U*n+`q_cyM81%EP(EYxnw$G(%d-KUskCV1DPw7foZBllAK5@bSl zfRa2jK(_;|)|!kfM%BDan$1ij%nadsc7{_PqOD&py>b)%VXRBGz(vV+bD=_3QUq_lj~5JTRm3 zb&}Y5+rh-+VDpyS^Cq>Dq|6~$o{=jNk=6hsV0aT1J<_}&kHgV5nmTA@e{2=DXhm~UsA&h$X+%ojR}v2N6YU;Blo0{3fQ2;E|X*y`Z|$W`8SHsYTs- zyjc<_g`;BL@9a-aJ>K-^Z4$&ftI4=~P^tR)?yrY|twd{u}xQ0^_jUlwA zBd};?@GjU@#L6p!k{=JN5)V#ai7-nfA0!+jp2wY;B=Of723haTYyoH^^Dcs6h;{4+ zOrpmDqx3MP0p{S!I?`Q}TV1UleF+yp-zGCO1lP4WtnnABoX_F13N8r3p7~yt=RATY zBvyPvD7zk=NOy8|{>ayx&IRM0;)<^GQ2u1F5o`uVz^eFnIt}l0fZxqNey)exi>wN6 zNp#&F?LQK(iK^*I<@BBw)5(-0)wkE;UWkPcov$-&=AVRaRU!1-b)e;)B^`3nw|%Pj zXzw+B&_O1^Cls6$7V)eTEkf2!LrX30BpU)IcD*rCdryZw@ke4VP=Tr~Fe09MOUV8p z#+72pE7hhJ?7o+UyKK0~VmBE=<{)0?9E2jrfhh0M@qQFReQ<;f-k6bJ@KtcZH3y6Y zeZZoZ)8AMhDufvWr@FzWZz~Q6W{Fw&4AUnJTUsO(iLMng)tg*53aSFACH0#@B!=oJ zaB!pn=f3?cZL21xC0J|ZC#b>Hk+Y;x+}7O%Eu;0CMcE=6M1FP zVtd@8zcC~|?3^3;D9p5*n=oGn6fypo;?AIa7Jdi-3YyJDj>9B00nOW*wW(`rE|rfU zt*?$d&XBZCsk6q6cvL$yxde@x`rvm%hKa`D(}2$5r@)ya^ldLWYnYZu~ng zSmCV&fY69i_jXMkDX?<{ZXqw<(P;;5548lGkua3MtwZqWFPynl$KR;Q=-74m3RpmlPY%gMIt|M#b z5{CTjGW#S|)e_k^IF5q{FbOHiuouYwnh{&5e-E<9HsRg)-C9n4SBQ%~Jf#MWP>R}p z7YZ6aL3j$p#ASS3kkM|$k=gl5@eucTIJHU@sIJxS$uFt2MlyYY&_4;jPm!=mu3Zi- zX;aQa*9Rm86SQ_nn%n6!BhM$wBdrts0(wZ$?NMkMM@4OLdLqp+qfsfk1i#ik?#@aO z;T+#TM%5AN?!^Y@QrD{z99S_)Z9gC)E&viP)fRyNx-~)N+l$M@Wt-}JQY{;*&szMw zl=zp|GK?fmG55s3LtH`qU71Jp*>OoAoct^W5L&&NjxLVSn6;{)9%5;%+}W%wg>afd zc1K!2_yALK{c@R0TaukD^MKl50?ED~`)J?_tmoEldrtMc?Y34z1m?n*5xkQ>_~R6b z8o1M6WidTLyn9vk4ZtU7*KA@SnQG88fWGh1? z_IVu>N@ftK_A7x~U4b0rZXndWW5*y@VWw`467xQ`G~q4NFI>3m1vM@&M)?Ub#Aq{4 zFJsc#s_S+0Hn5RfXdoOkuP=e)n1yUd0QJi@Ze91fobS#ZPfiQmrr^kMLds-8=>FuX zQyG=8nsukk6H^RX9)(WU91x|O4#{@I0tKRp#h>{?%r~i?CK@W3Dnp&Q5zU96%__qZM>pyfgIB($I*BfY!L<@ z0~yumEb{P&$$KoAN8Ce&HUmb+!2VEb9e3(cy#EGJqdX&Rp=HK&IAAz2TG(tuE0BLP zZ;{vozh;BmEk8z8+f8&vxJSpaSWU;B=nzQ5=m zVq7s9qP}VW6*u53#POpDPN>%a57KQotTw5ch``}yA$2h!;LIcHXH}86c#sg%0ZU`) z$T65n4|k*(cP2a0!g2U4-r>Syyqr1s8O*EO5R(r`G&r>ne~!s-h_>Ft!d|NON=HDy z*n_7ecm9r_%qP;(>XI6MAjzF8bGtntIO)#7!lIGeIi*-a3D2Y^=eZ^%Zq%nGh)R++ z@V(!+AawKkAOZFqX;RIeDIQ!wDnk#_c#qIMQ5_~P_NnDZLF zp!Z+CJ=RchkM-!h{(U6t8s6|TH0@#x}Zqb1|Z^)f#T@O2*LF+Ii9qr!av z1On}e69Sdb(za7+MVoz@ZAnTq8Z|9Asxz#kufssI?Tx<{t_?mAcD*3hNro568!*zw zYK&PDO4kvN^f2arZ74npZK-Q9#WJF@7l)nEWz|1g1`g$z-yO0V zU~vLvIqH|U1*rHUZ`Wy@zoo=~P-}$9m$jQFhq4sz zq0oH%Nf7hCqfhX82O4PjPl@1httX3stMn4^9R?4bK3+L%x6F5XAJ$Y-rtu!~;gdLT zi=}4QYHemkEn6OD-n=C_BQ1UIV}JxtI2tKCbm$^$)8v(Ekq|xf2=V3X{n*OID3`M+ zP-d711~$RB)Un4O#0zQ_K-gN=K`CqnY|2wCST@P45+|Ou;$jcn^HSvA#e=&Xu55>z z6@x#Plern_edNSXH<+b1VtLcGe7U4O-4G$h(_)?CFOP^zAt&f90#mx`i5->w5yzj} z=y$f8Ny(648`?W;vI4HS)0|y#!*N_&5}28Azv~NbN%p&HG$L;6zja?2ZYob+NGERP zx4NcBw0|lE9=a-{PIQ;aOy0XYN2VE^Pp=S!r*2)3M-7Zusa+?>5{lho9;*^ z?+N$GmeuT7OT94TI_XlxW$J?7OHoQpYcmAD4D(RE`LBR{Hbadm=fU2j`u{6K+lB%uqsQ$jrJAtXOekSCNOU~W3G%muGu3_5l zIdbgKOigr}gCLDZc>Y}#!d1VJifT};_dIgR;zqSOT8n2Fm3nf=GGmhKA`V;7`Y+K{z9+$sunqRh0;{M=~%6o~JiawoRHeY6xN^DY*nfIF>Hs}CVlqH1Pi4Hv9%}i#>pSS68Myw9ufqU z+!6~9J*~MF*8>Pn2-F#Q6+Tn~y^<8KA$8%5L2^<|S#C0HgiK=UR5OYr~!UPMV z2ud9l^Jh^7QBNWrDxMx8k99jE&o(@oYp`UyJ!l*$ws6(%x%`$`LEVYAl&%o3OUiw9 zXkxntmlb%0bPk0%I3ZNzIHNzCEPH-F-r}`wh%%hP#__i{YG}!~ZJpsicd3TeY+fBV zp=6l)BtZlx9jdV{5G9V4fMV_RV@hOlYb{e~HL?;>WHwedBrVi~6 zyWdGrqbZygbMLKEo+n%JIspQq?O|sDwE1GAU+LyVUW;p|!Hu{b_^d>tgkw2gxukRlS-e6ty@qj+%Ne^HXhC!b$Yi@OD zo=em{_4w(PghzR}WEAKmE)6(gI1N>*AWrE91rfHr?)|QWx`we?K7!q;M`9tRl+`nE@X0wleII?33xPcZRn~O3XJ}>{ zt?Qq(2P2x!yA&!|=>=&AvKcxElE;)%r;zjb#( z%FWlvC=GouzU*6VmUYs7gV^?iX$c~r67%EHrX4McQViO42#H!xs@Wn4Kc;B2vX`_O zfATDR_tl{N_G62=W@mqSCFb_GNBF$M!+d>V3ZOUihiR0Aj}g1#4q%XRLE`}UyekrB z5tqLW+)|Qn;{HG}zgiu%f13YZBlHv71^&|)iff=9Y&Y28>*v%(AyxZ>ImjP2=S$xx zwZZc@0HWkmMKWJ8y-uBK3IV+spg&B_xr+}EN>U{Q0nr(;QyKf`#0y6IL0JGCMSB87 z^4XWCSx>>5(=#*yb#L8WYv$}by2}wC0)Zl`+C%(z&Z}nuz?|Pu*XM%21G_C-E^9ff zs{jW>%ksWTVeaNlaYcd|;6BZj>Z-=CDk^?ZH-tWgj{E@ZU{J+dDx}i|HFG0ZBh+G* z_jz96Q`CHFU|cf@3pZMuOvgsI;}|lO8z|t`)7$O&h3%|Sp--T`S+VD%=08oIoow8y z+Pe4vevfy^B7n<1ZINg?f4sti&9)?PEtIpOsJLhiZQf8z6Ai4*Da4GD0~pA8)P4_5 z@wAerJxo~ai?oX4C@kxcrt#4<1KB5>5O-pEi$*J|W^!&_AJiOBxu`S;T=2qdtW^we z#w{3VJ*6sv(k~<;>qAvJL8IRBU3)xsCT(7*G4|yZdhh|wo#LJKp}q6LceaCTF22th z_%@%v9%}D{!~)BCe}y5IG9X16@w1{m}Tm$;<9(s@M;BTm^W0{YB)mY+>~7qZ(b zqAub=;&9ZZ@B>la^rd3ELhk3>9z4$vB+CDcQDj`UaU}6;J$NT;bpZQB(qtX*5`=B} zowP)1SrOHc5WH17)2q-+_vDjKjn3w`MHf<<1J2wEIW~CV;tkd~pMn!85&rV!PdZ}o zXHjvPtzi~nyE;oh-g^*6Nw5r-k3=SKGb)zfCmd9ALso9BM%sqN831}VZe=8*_q67# z(3o3^^v2T|6Ft<25v3gx#tJF-`Kb z(%V}5q<A=SbtczT5?q|Mj=rUJf3(r7`sn_W>|*m|Mb`n>cb{>zjaF6`z8P|){X#abOST;nuY6l`$Ba>s)v>Pex7 z9(bI&hZ60&T^zDRH+`1M2rF=pxo5X|kJ=xyB2Q(eK>~-D0FG1)Ew@x&Lu1DpW=65I z#gqHu$1kNWoJ8AE-4oO7VFwD_4c;zG*I1y#mnuW)E_-PEo9Qn1V}F4p-=-Ho#>T&` zKX|f;@XM38CQN4x(6986RSg;Qap@_n=h+N=%cLp~N=>RRfBex}@brQ7Vg7qf(0Vpz zeZ=}0>t!|_wqN$q|V+<`XC^1Q8P~#q~6&KrK|ESNJ+9v(8c&C3_o|C6O^~ET?z<+Y(yx` zNtxJ=LE}4rL~5D!*l(Omyl}p`7SXFMNU4rL5E2xt{0Z7L=-Fk)?K5!~-h>oVRq=G^ zV6}glyv_aP!01Qq*)C-ZzR#$+#DA!I`h&F()Lvy zqx}%9&PzK%lNi!r_rn4cenS4Ylhu2Dj380l-m|kto!iQeI0N>;nqbPXj-^;6gzQDv}j0(Hg7W zYw5eElj81e23y80Xjae??G#O=<(4D-@1`Zu-;zHF(zD{;*sCA<4*G$87hK0}at+N? zlw;2%r|&A4m|HA5}^tBB_f6m@Lrm!r9ubT4SUp8FD~U8}}p zefXsJae33A1&QjzXAYxdG-b*}pNor&(}xpA=x%8{{Z@j)tJD!6t&l|>x28)7DPrt+ z&mf0mkM_rgv*&*-?$C%|@Qk)i9bbaSrO7#3UR`2bg_>UNbHP4X#_p_P`?UGp!E-I! zHtOql0#_4MPs>Y&rN_O%>L%u5{py#l}|p!|hQ zpnN%oibVHTAqqPR$Kh601^s;`I1c-t1uJ|lD5!?=Dvi4GkQL@S5Z2A??hHnbh-B`o5s zGf0^;w2MR0!ordpm7h3@i>QIOix-OP2mI|`SU~%-zr+3~c((&S^rD&Oo$LU$?aG6d z!e!tuu+7&!VU*yB(t7a^N`vOg%|OT@u=m=*0eic zk5@I=d$wkE@#Wx@WQaCG7Zjr#%B1gzn_wqT_-KvU7Pl%RLV0&0#A?9R`!~*|bq}W4 zDb2*U+6KTlp+J=zl@-n}da7?Jtq%e|tSYKKL?&~8fG@=xwuG5sWF}n8;M<96OCM|m zZ)xwn-qNAc_n7mz^zsuI{Ya@GD2;n4v_CB%a15n7>+c{cJ2jXVknQGjS%pS2&4$`i z?Kzwz_NPvf&u!}_>i9eC_FNqCx89s9!rJ!2x>j4q;m6QvHCx1$@Fz+_1Vr?B!ghd`f~)zqI>vXe1d!)lx#f$w*2~4a{esTL zq7Xtd)^c2{?{e3093r&O9o4N+(zb5H-r{8ueMYL%UgbrWA)1S;&{|;z z0#BG}%MR*VU0+#s{AMP90j3uZm@HEgo+PvjmEDfCm|bMo)beSu9ZfMUD}oMPS4psz zNe4bCaSE_>RTlC7tt9-*^K{@E)IRIWdd%g|wc*=F-G1DVzpi&5!ry zI}dzVbICJI!M4YgE>!q?ZcJqw6Tt4eWf6~J>flqhnJHfPhr77T(mxeKzJ1&8S`~cZ zAY({qMgu_k`p@OG!5i-^D$)A&m;ljPiKE-&&_DsPaMcHMWpD16d_Q^Q^_k0*yytq~ z>kLX%cMo{=$s*F7_j@Y6PKv3}|HFuX-&*p1!RNRFskv=s3*K40BlEY-sgHf&Cl>Zq z%w(0mwomny~qZ5!|YAHjXGWqUeK$LQ5Dvzr8Hle2u-&>O1O0!fyol6+azd> zC(LC=6{NL!Tv<)p>M@S*AqpRC@q*i?{C=2!*U4}6OQJZV5h{D!v&&as4^qNat|pke zU04|o)tv^hAj2`3jI0LK1m(|A}{CGrM962V02R+ff;ZpAT{}CK{-OdTeIwEAol{Vtx~7ZewQiZ@XF=QYuSF+%Df-U z7!0|5n9A^>DVWn?4nI0-k7a6PySR09eZfxFROT@yL8h&0Vr$y&@ z0UP}%B&E%|fDz%Y6MI<_VZM0Z81CYgdj9u={@1n#*BvlX7=fk-_|j&qB7}^%1C|C& zCO|>(Z6BPZR)ONP)h{<(qGH-IQ~iG4OdJDCG~XqYQ~k3x+IHw|tX2XN0eB{sWrYL# zlzQW}m3Y5gMkhNJzFO^fZ~GY-`8jrd0jHL`eVYrFnh5yM$vG)8@8O>W0<~5zvn(8v zgpChWW1hT7=`!;+GiBG3Byaj|{-6}{2+XYq(;xZ(l;6<6+|StJUo^Qj&jpFq6L19f z==`nClU=5~2w!1WXuB7)SJPz{&qb?F1qgifG2z-3$?QFImLP={H#jyg15U`*KiYN@ z|8Q6G?T;GqB9Fatqx`|QzgyP7F%yjaH*q{irp6*fB}C~=Ue&#z=v~ox%z=lO-1{X% zP7Ovjr(y4F74`(9Ga+K`wQQc}-O=M{rGo*(!#H`fM6D1{ z)tNMAe8Dueh5QM0h9;;kywdeL{n>Z>{R^}6$G7qZ!L|b1ip-B_)k_s!R=lE;X;tlM zHBDKyP6nD=9-xS@1kjzD!52C{=PlQPEAJv_EVPPvOueKaY4r)Uea_F@azsoHQ!oHz4VdYoWqt#iJAE1ikiO6y_v zjUqXj>-OSQ#sxI~+~!HEw`?6#$J4zT(a}n^?KP71S%s(YkvU*~h0LVF2z$7q#STdF zOXiU21yQ%pP;^vRN3@T&q2~U?8UJ~N@Ml2bnQz!%IfM}o-1n?0;WjFteRJfaqzGg8 zk~Atn*a7a!9;QO>eM-+B?TQ%(?@6}hzpw#FV_vIK@Vmw663b&SZxuQNk^b8pVNEM~(Ymf_c;J!Kn0eaopcC?p~Z056cCXQ!BvTD*)vYH6g z4uoluFB^N0mW4I*k4@UFW^!z@C0!?*m(T|N(@`KiBVPQvt77&2Au$hu@@CR2ffp?} z`S_TkGR-9GbrN&6>6tE4w7Ohbj~BqmT(wW}G%8+7bcG}R#$vQbxx31|AESBUymtZU zyQX+KIS6nQ(4H&xDisP4)sztpudpVSp#b-l_@Xk256zP{XY50)CAHXiP1U9UJYIiX zTR8_9YfJ9A7|Bg{FAfwMc0Vk-rrKgd=hj6SeBdmlVY0J^OB3Ft_%MMR4{u5|EDcL~ z%WKNx2XSi<{S2&meygLNc`4eOKxlJaLGclO^<{eW{h-9TuuhDOUF~eUwy;puxQCOF zqnMNESz8aP<(kf|<`Pz&(vbyAp%VQdon0;PzUrelB(=`+9~%EGOeP zJ+uAI;_Nru(5v~ZjRxv-1=C}(2GNN8SbS1Y(yjywP9De{TG#9=U$X_|0J8AO!K!f~ z)`q7;*yZlVG>6r~LmnRx)XX|LB7b@-M>|Ek=3h426TA!%kI3JpF;vPH$aa8@hwV5U z7oXaqxvAEcU2zi$2TbMys|1@On<$$$n~;EKQ;GYse6YAJs}EbEu>Wi>Yb0N9d=<$j zOi}chQ`4$#5_nyQ6`pWUNqPok_uQyJT3ZH$U~L!x?w2 z#fjQQ%uz{-2Cd)y%?;-g2`v_05r7s}bP}y?6~XOFv)lrhkf=+^1Vi3bQXA=oG>wrP z2f~s<7*kF8HOlqJ$^C8W<&A?S*aLmx^4Jy$P;zrE>jelweV*3}Dk>%_gLRh-Fq=Gk zAjwM3^FW^Brvz0ii4`R&wshDVJD&vTaNBWE(Ji?52@Q<-sZfNis?>vaM>6u5ZV z{!6pxPw3O*Msy?hs8{%uTl9x~}6VjVBZBq*s4ly}%gLz=S*2_^|G%?dLeALm}hBEAr zeHH2y)?Ox+L_11Nwb3$C+LtJTBV7B}%_+^i)%Yc&^F*698-%S@5tckh*?-LbxC-Z{ zl8iXrc5Kc=%Rpo0D(JZZeDN&2aQ&`Ww8ALQYzMV?J&~$6yhP9|<2g6}tq_ledW4Z2>TWT0cQ0@0;*HiP~RbF*T)P0g6{OVP4XxzKNjdY(2F6>VmJ#xFR5*L z0k31?^YJvxHHOm&cS{^jAnc(=4>E+7hk_+ekD311a9V}=5=6B1uF*6DRa+-rN;IsZ z4R~9W?Jg3GbCZJv>JGQ0zY=)bq9|t1_ByTYUVDB)EbWZDGqdGjmyU`4ExjAQwQjVn z##s`op+90dfkw;Y(9t6E)SCl0%?~ljF7Re#$B`DhF-IqUSbXU)op^ha=#Lf{Y0eF6 z594X056@* zplOW&pCGVIFn-q}U@W7CX$(C9GL}Y|&u>GZ#6mN(QPYr+%V!J*&oxI3$9{~Jf7DI@ z#lrm_2f?JOFGY*ZzHkbAhWYsg${mGu|MLEoJF`i3A7Bb(de8E2-Zw6L<~N&5cn$bi zvXFJ%j~5T%c%7bOj0ds=`Md4%_M@|97vIx6-+Af?6MQ^0pKK%bEUBHau#YI}B$p@Jeua+N zEFU2!Qa2D*%_uK;H2er{iyByR%+v!F#!1MG2gKQ)od+%vY_nDflr*E~MF+3xnh;ST zhfXV_GPht$lXe@)yeqtyukc~tW;nsslBvTwBE(zn8!hK=Lj+rI**E22hm+k@+r6ic zTs6PJyf`IUeM`&8J%#cDzM>XYihsSKx&NYyN_^nj^goYH*`5#CH8P7X4sXR!@w7wv zo~&<=smwpiI8es5%D6cSS1i)eM>3Ss`MrKK?@E(1%_@Lk%p2f_tWDE4LwU_TtJkAo zC+IV)XeEwSkz5uRF~dj;XX|}zQe{1EpM2{|czRgo0N%IIn$KGE^a-bDvdh5~zwX+1 zZ4ugVKny7PNK6)S}#dW&8e$^gCZJa=guP)v(L9_j4@q=kV2CLR6CXPD4?HRu$v z&yVN4WoR{r#oqePUvmu{r%~!T+8$||bRPpkX+yZbwbu+A5TCZIvTNMoipdsmj@A(|YJ~-6{8cV6B4h>s6C~FvI-sc2zc`p1}_-C)uaTZ7pndvvX&7J=3lvyy02-$&G=of z%wF<3kWtYc<=EK590}Q8YJDJPzxKtK;G5% zrlQApbHQ_ZQM3VjwHB1MB)+YB1FK?m%|NqGtiMZ}%VMqCuV8EXGhEK5Ma{|kA7(E2 zkoc)do%ogIj<(tvxilFA*Z!N$@4^wP9(z2SGxQS~)N+`R`h2nVS8|TQay0m`#d!mv zT|GaRnT8*%&+Tgwp*-U&f2p?AAogZAC+tbt%*wgX01a#L?s~pmyS8iFM{#f2m{WW4 z$qC$*0Q|mGw&@!oRFwV2u_&W#C*Tdww%mNfw#0N{=Cyy|0OHH>;T)cnO&}bsmHHmN z#rwIi&uOT_?ja{^!@I{qOVH#ik-J#R2!>*O#*#y{hnGTT^^#aW0^C``eQh$&Ggavv z+@3;!aAFNuzb(3b3m{m$04 z4*{=~Rb;;6?2^}H06Q{b{r?A&AS@D+r%vw2Ow~*3W>-zG^67Ap@hZw{z zL2&^{71!SERM?Z@2RNSA4fG5Te}I>H=QZHj_4B|7&qK}n`(*5c`QmnBhOvimlEy(h z{KKxIE$cw>)~!05^3PYsxj)V{i#{55y@$itLi3Oyh2*icWKl5A1e$}^pdkgF*)*ylH8D$+Q{Z`$)Q`>`wL#xK; zH^c>dXph7!*Gk>89?4!i6|BJBFs!nZE=sokq*40x4}bMrgD`i3DoceTn_;dg^7NEq z9p{Kcmn>CT*MvEmM~-#x{bwe&UdM99$CEJl+gJV5t5|73xR}&6VE!+tdzSc0Vp3n_TVXWXGbD|@23R9FCUjD zGIa9+o^#3H4r%$bA~og{1LHD}``iZph!-gV?ECkYz4b2gOh{WO^hNxFQR4G~gWjz| ztx)e9^5xGxwYQ?h_orUFy)1Tj5Tr2(1`?iH;=RUecdN%c2iy0@zTajS3wSh|- zG{^P0T|PD89G`*Dr?c$EAD=wadzJC8gURRc6q>Kqs`$6ng8#J7Bh&(Im{-THk`1H` zZry|=7Z%7a&wl&BSKxw2GNl?7_~o}Y31?+xrJ`0#rW-R;rJ0bnyWqIyU&Oh*a+h{| zJHy1fQQtagiQB`9PGUv*>i!^xHa?k-B9siRejgx)CtR;1l4^3$K>nv|kR4O(E~2J~ zP;2?@S%h*E@(^&6in`t|d=ai?h6qbktKqm49cy@MeszxStt4?%NY z(?w_4m7y+5GGc*Ltf_H8=IpN^PV68hrBbZ6;Mn($sfeKVapfn2ey|c?Y}*p3o60 ze2UrcFZl#F^1R&HiQ0kM=Vg5;|2iCrdVoY;S(Nr2J6nqk3)f+*&K0o#VSW7CoP8}v z0I<#ep!5$C!ryuXP#>8=259rtt~#TyTTdnh*fyVf{O!IC#2>cm?>D`r4X{VW(hH9K z`zNPB`vVh*gG%2U{kKhJU~n;BdAg9mi$mY7#y@^iM+#Vr9;>O>f8Uwkx9@wy`5BPE z;pn@6kuLz>W1_}XGxQ>#*7A@4_1iD-4M3N)wH(fUd+=?%|KdpCKLJjRTuQn9AC2DM zwNy(Im@CDL$Nx7;{gtoM2UfwV z0ylqo``;4%&x(FO0RFN%ezjNe|5?%hiwAvofX&J4e?69D&JP1b^P5!PiKL0{sL%CL zE2H(MFa7$uJNgE1%sWS>H|Oe|^t9EXdtQ70dUR+i1q^BF$;dgkg);J$mhjIX zO+y7_we1Gfb^NCy-a9;Y3JnjP0V_M+FjDELkWrcocv4lKx*x1C7oE}X(dF}$u#!@d zRkmX^lafhC!ipj_Gk3muY_o7(?Q>Q3K@84LmzFy@`OTCJVSfjo7b zVH58tHAaPGu;5N@3%O!sk+4yircTLXJ%_UeU}~|8@fMvb~zQ+zCt_Uy~L# zPU?Y}c|Age#X31n#d&^P~gIwR0< z4YXC+Iqi^-QdfJ>f~e>UsFP)wU(z;i@^s3{9nHLl=qHA09sZPlM1eK~Z86A%KWG`8 z7)wPxls+M3=br#!|E$i35@QktKN561>N3LONmW7GomFt7l0%iQ{vQ7R{+HJo@T0+f z0kA81HxH37AfDQn*okBhf0#{9Z4V^T(WwJqA;J@r1|QqlYE-R6@1-#bA>$t7S5&vFmD0x{C!dEF<^#a?)l*sAU1ea9NDHW1yxH9P;uwB+2bUvIb=oF25xqQ4a?dp-vzGLaH z=$ZlfV$-$gs>{WHO;gFLYj6X`(f2Ir9P6-p{Pa7NaObjyv%X+ zqM%9Qqb$`bpY#UgQ6 zIW(vzr-T&_4z1pud>L1O*kue&yiYpIII9usswpM_Iw_yVSX0)P=RhIu} zgA%~QB<4RHG2^I?8vwN9Oz41WU?~%@#B%_*P~i!uciye}N{U5ueVQB$z6shVB5=&^ zDL(8kfBWK=DUq4K9yXZ}rXRegszIO=V^yHr%oJ21QG4K1f|yIwW>#HT_=Gtv@io_% zW^>-mQP|`M<4ltwjLZ7c1HbU>Ncq(u+sh|WztiAnV}V9EV8}tWpj(W^6Ob+6(E*|(rK~8#OD}jRzU<< z( zu1q0Bw$kCv+UZIh?rIT*$;A;9gXLnlH@F8SC+J~X9teE;Hst?vI&jKm=XVHkrZ){l z%5|Xj_RRNykP$>{^jE&<+1NuDuJkPKLH!3G0@RkOTmYBD85;^(1T@X?WI&P9>N&+7 zK=%JgdfB*=g9N`3n)Byns-PB70UVw}S$enpe;w@FFBWqd>WrHe{_KqF&6(^4JEvBi&AvXcy`8_x4iVbsyu6H08Am3pbJ-lIZ)xJy<9S2OSRsOvA#^hB`8 zhLL;x81wE{+e>D~x&DL-0|rr(m{T0^<8 z2*Q8D`^dF`@G~Qkw5FqBZcU@$SzB*ORQaJ+7URSM1yG3T3?C)mvr13$xu!90>Ha6d zNyZEqZ(<*b6#qLU14l*@O912961j=?FUte)XQR}{8Ii&V{-5Vwa7tmT>@}vH{p8sb zmk@xgRN0;#S@NfK0G(V0P@=G3KicYY?17;83Yeo-j%UyR0>E9T#L7Z1t{LQV)`pPe zow41EAMtjV24$ZsZh%Q~NaH0O&eG+RW|c6nvtVFM^J>_B*!W$VsHAzdZtQu&!TIK9 z;hqt5`F64_q3Y#qt<$%b07UA-spQIMlu(NqMs3ae3`mgM?+lQ=ED8aKJG-P;Tvr#D z#7mpjH0R<~(iJcEs}TbFz-lSfqPG*2_JE4u=1!Z_nE@i?Y^pgH>nPXg)-?_9nqZz8 zTx*~PAl}G$>Dwb%vNS|4KTEY%yJ|NV74)_B)N2HKlRWR@ia?kjA{0I_S4pNlPP@-M zYwJUE7iYnOQhN#QYJ9iGadBN*b5})b~Fo0U#TyU^ms?e7Hya>0(6*ruDVBgwkkxhG1ks>dc&#u-pEcQ#E8t zL6kfmv5KCr>6Q;0N{|xa*HZ0BTS?t>apk{$xj-r9I&ryo53DEs^yT8M&_3=@im%f@ zy&X)g1&C_s)Rnkbsbamv?M4pX`e%$sxz4mH!gOoB$2OBbC^`enCQNzgsvwUtl7Y$_KN^EIvOXMbKSLm=sVb(Fu8*)(J>|>~`bWBH zob;^IVOMOs0(shM@@-uEvxDehu)ZG|2I6qDU6W)yKV%!G5gx9AV@hS!-l(;A z2i3ed%u!CMnpRma6Kpmy9+hP-A!p3ykdGk+@l{J%_Da_k)WdqO;2Tlvq9m+fIH$$-1B34J(k=PF)I!~PAb z*Yd_Zr5f4B?2?ZLl zp^CG;D;&r@s$rtRrH6O`J5|2NxEKX&e)=xc28wp}xIW8x7tGC&J;K*j=B<_>01&Qy zyyNiXfTRbJqiV!-8X)L8u9eVY&P#vZ2ByE{U{)Iy>|dS?K%-PPid0DvfIEfxo`sWh zzoavMy9FR^z#E2o0Kk4x^K!S4*stz6K0tV`UaZ;+RG>(6cdu7*2WC*)&%BE!pp!%Z z)QC{Hm-#5K77+DA{ZM6QGg>tS^qzt{=KL~pAiOqok@ajg+K5x5&{l1>D3cq7)}K|m zdg&Y`;=&cwnX1&Gg&x?&k>S&9#P6GMPZX=rYol7@z}h+S7p@I1EUhK)(t;nUvy zA3RH*SYS2&sw>g@%f8nf8v5iSaU#hrs5Wb_gg<%Pz( zb4FT7lK6_AAj_7X5dutVemp31e#0Ych2GZA_=L|aUMp$4G%*l{_wP_SUQQCPpmLC! zgae<>j`y^3L0SUabd+R@P5S&U{sNPeYtc=pnco$!^96Rdo-pS={85%&^_$omxKK0*{3Q`E5iDMKLuhRmwf9P0FJr9K|MM}k=vvDYoSmwRq?&rJ%qC|qf9Wp7{uu^Z_s>|w$b z3;>XM-8P`=@=+x0SAjP=OIe|IBg?0%6r;J?PX>r<_QqII`=q8=Y54O+6ET^&pYIY z%Fn#DyMR=80(dQW{8mPSM5Jrk&HVe15uW=ClnZo@CuSELr_Q)R?WIKAv;_L~I4mc> zZQl&1glc^NjlqVHkdL^yjv`^!xFytUtVJxAYcR{y`XkgZ97yU&LBuD;nd@oas1UZ- zW}h(ayI`$!!%V-Ldu0=Y(~}xy(WQP8xDP2c zgVIBiYYckOF-P*%&)DSe*+Jpc@nML@Y*wH{aP0P)xc6)Au6x6kcJ2<)LjBDWLFc~6 z&u?8(+1t~m$@)dS)6^QfJWZx>iBu0I)s+om5&*ew%L-kdKQo9W+AIklBqs*AId~`g@abrLgo2BFt$ioYpw|-qj7wmT zD+iQ$=-;}>-qG-pD_M-i7FyMw-W2CPE;hjfeVh+;cUDwgb<=|M&^+Bd9XvmI_Ep$6 zR!s)aM9$ZACEgOh8u880fv4c2m_OI^(%p(W%BIn<;44N>@Cxv-+(@ZxzkTt?|X!jZ%S9q_Kw8ytI%UF8*X=9H)nmDet{FS#*9kaXVwZ+_19_N(g zQWuOg*iL)_s2Kc|(6K%nG8=o6aYc$Qy1OhoFVNx8$McIPpXV?Qpnr_+X`t)9G>Eyg zy{D~u)>%Gs?qqiy0Oiy)VFF^!W^};Q9H~ysaQ&dAnZ5~-Z(I^pFIDV`9S?ChZhzxx zKU^SBbvE%d6wsLd%4wsmwwD+vkTRRz$2s~OC5IpHs67moPi3Ie8lVU&vHeF>L zIe)7xiJwYV4`UN9=?e?QT#lFR2_^5(+P`9PdOnc^wI%EG*Wp?(~7sqFvJd~2Uw)g8@)%}pxT?R1Z<>Iq*&5^S$_{8;EU+AcL+wEAb2!FJ%q5rLiK z!H>)T7+w!cemcjdi&s38Itv|4iFvy(_HKUS7(t;u?h8jj9Kg&|%-k0OXxyc|{oqRy zxYRMZj-W*L8_(dLcujb<#Oia88u+lBPVvPsd{i2~${ zn(n6*Xf!vM`YUYmw8O>6G;1^8w$#VEase3tP_G)~ye-Jb;*VbDKY1551*d# zO;P>vat!JOz56B6$=%{=>{YSsOwJ)S36@|x3>&w@%@cU6DOU~9f;gAi;}-}9^pF~R zG~y>rcS{eM>TayyU3JX^r^kEXnZ*vXDmPzuRWZy@UpQX|dU)kDZv1xENdIH!@UvN? zIEqsSGYsddljPf2Gd>~87f>w2dnCdO-t|MX?H0#ay1ySQ2+;_9-WeY7wMRr4_kQcb3^M%yw5#H9?L$P zI`DliM+F)yHT`Fh_iG>aJEh)`JCK%0w-I^L%c0hBV0-C zFZ7=LcB_-jQ$yzeBff|L-djUd7WEGv*JrM?x+eWI}fNa0gjTy}s!G~5uTt!lhY(q64gJj&|6aaC|dNqDAKea>c{x5nt zy44P6tW)ltApAPf!`*#6JTVX+>-7AJM&}&Bdl^Y4aK);njA34>FH1zY z1N3>B?V@cv`KRuEG+<5+)vtdRL}JAS9!h!E{bv5Rm{>d)y;Mx1O6R;*fi~6ULo~;i zVdGm`kf~wYGd3#0!K6(72FO*tF+N7w`3E0-&D$InIee{aQ|H@+cM7;!&8zKhW0ca= z{^yql%dEU?wA@^?8g@o&YmWc=FjP|=7ksz=xUuzLvM2kya>I1aJJu`p9gn(vXe8}x zaz#qo0(SPK`50`zE=$!>P29cyd8iR0`TP6JqiZT=QN`PccQR;;cab&7`a%u=#&xR$ z4w1J`xhwFmXwt(R495)Q=Y2M7z0B3qLSLrI*L-c={F*Fj#rWFIO!b;-tgI4Gu51}< zI$eYwu|J4YVS5yLyiXzOOeHgqhXZO}@mk^vR9?KFa6;Tg#{bTfO$pug^sqjc2+p5{ zMqF6okN9t`9l^tEPJ`1$X`kN%o}j5BT!{_$tY^#(`rZglREQnc&eb&&s5 zL}I!4&ZQEzYvNud)@seg@m}~P{=lv8%KM&!N;e>YS`T;wea>ifZQVV=qT&h3V4$CD~ncJVtEg}yfzUoCw)#_bx8aPXHFdigO+QHB&Yp)Zb(e^bt3 zEdKk0%x~Uy-lEJa$yB;`gqvfWMGp9}ok!$-&0-bMnrORMMlUJAdmuvsbG8l>e#p#m z%)aqcV~Y1dz~N~0vDxPL`uCIS#&SN^(Yuz%DX_34?-Sp46h#@PGs`(?j4&0fB9!<);1?&p^S7#V|&3U^Cnor+ZkL339L3kvzJJ%SWPg6BH%5FLAqNF2ydrJ0TYD zaaeQpNnB-I(PqZaDQ(|eI`6xcUtV}f3-DzxpAUTTxwTMLg55zEpuvf5UDuS$4CYw{ zlA6st0mK#&gjB5BL1Zn*_YJ^!+)67QfZnBMb^sHj)dmZegk#~i97%nC$4 zaHkh~qqKS=dn9k)DBrqeW(OzT(%?)M)AZBT2(Y8wyfa1-3la6Ux1Nrha-iAwT9FGq zHjDhvH-9^AFi60U2xFt2{DYr-rp4gfzVnmITE1ev`npcKIo7r0j#55%A&Wk2#D_*% zg2V$6ndbKCb57|vb;;p{l;I#0vCU-3c7_+i-M{_5hZsce4TO-WL8k+L%(A@*Qf7=E z@bp^`)63L^YvqsJ-bJa?(6Z64-%B-)fL4odkQ1*pG+mge$QCnS{Ib%}W<_zawn}$# zfY+#{XB|jip113F)jAEMHrYW@t~l56D^L2E6!kiNUxGzbL4RPA#sI-Yf&Y)xJEIXm z*0p}q{BNX1hSV3y0qN>iMO}gjkSr^xr=KjEex<0%*nDRw_X?m&&#!p?6t3)>&*VyO z;Vn?aaorO%?qm6e(&T!$ZSIK{zTk2S{Gsrjqd#?CKm=msWF#mu9RcLM-I6mh1D=kT z*e!0@>7M3wG1qbSZL`WSgX#&J>!fI3nk|-lIt&QK%8LZH&P1`g!UMRn>Y_Pb>}djV z6iDPexmTYv3mLBmrm_$jrNXq|Le74{50%8c6q*-mQ6DhordrBdO@PbJDTv0$$wJsvUr8j+>X=-G@cBTgQ;L@o201T?F_xKo{lweB75M@cm9H*oQ%omv){lcf2O5{`EO22Tk?Oap7=cO zXd}FPFIQ6GgmkRSbf#t*h*sWQ|Hj9ncrl_+k!vaU9)%dF6VeRIo2=&KG~;RHe=c>M`L2|BoGK zmOH_G5f!jo>4$%7_{3J!jM#;&N)bcp*rnW?m_?ikcNL9K5Bv(554#N}Wbel&7pH>h z6`+*LB)tb_ufMdq^1Lw492IYM=qd^C|Ds~jA^7owRr2eJ$^I5pQ&On?g>)tqW{mk` z{>dl=f=akR=6~;neDSnrH`m?axt1L?={36NuA;j!sr4e}t=@6oRGwQai;lY3mCtT? zJ;N`CP6nSdQ*?@D3hk=fnBa#c>3|@Zwl2SD z)W+ON0rOmDXycXGg9UPPp75MEnO9OHffSdA0bE&RygL2D*PhqLeHea@Tua#p)iWLj*{SLj$gs)v)SW%S?ybu^ zeBy>rGJ=@pW21M&TDUGHRYG5f`Ku7OFXwHOl|AJC8drGsqjQ?YyPAD18bd)xL->_U zGF)yBnh0?vdd=?%S8(F%rhQ4zZi7A!G>gedvHFgkY8voT=eml*_b>6+ zUM*GhgUkdAWfJ%)Q|}YklDL!ZwiaULkR`gs@?QUP~1d5H1XYa4( ze$|{e`>yqGOAlGlSFc||TFT;+^eOEt)vztLW(U?8W*nN2CeaLTeU6WJ2vgwxB8othZfmw4D-0fU{eWMpHV%dP5%@b9>T@9n$NPWkgBdDbCT^WnPyX z6d;qyY_?fDUt8<4qaL4fL&ejuQyA9?9~|?9@`h^?V>mT|zJh@EG{i=jJC5C#s>HRo zdYN1M4%`;{llKj%bGYwT8y(Rap9f+tmLT^* z-|9$Rdghn_NY%`lke~$#!8SgYPA(jrY{1$%??08M#4y6+-q!t~PK&4ev@3X<0rf@h zcQj*NE+uv7uAkcO)~f4Ym)XReFS!ZK?Rkk@!i%EBGD2tMSOS$yz{~KWNVUcwX|v@ci8KxmuQcC~_I?T2h+F{ct?)gjnWp zP&?TlkPTcqzajqF{Rw@~68o#Ru3+@iGtr75fEX=cY&34@i4KQeHoRtN`(Ovqg>s18 zWzD4Q+ce$zY5K$dYj(n?_3wuANkiR++Q*q=vuC2PfCe$Ytj> zXE`N_2&wjw+1BI5RfAWR97jAT9)N*W=yu?3 zv_hcmj0`y?Os%T2u}%w~7U+&ZGyCc5ld#BA)H-}UnU*7snW=ZK8$~l}b5U!N%G>_J zl8)g{-&wb!19HMX)?LPF_=5!?$IGjQ`60E{n~xS58=h9XkXeUs+Y_|xIz+h6TKcMp zG^7h*Idg~}*%N?Ipa-O0UiZYuU(5yzVg|M+gw6Bnw6)VGOf)_S<6yN^t?_aYrJ7`n z>#LbS2IU?X0I}5cYHB1P{&c?(FgSo!-T$ z?6;hJ8%rpN7dZprabLkWB+pMJ8WdC4mXG;|+|(S)h}QZis&++KnUU&(c21 z0iuzdIluW+dWvTfe~7>7j)U`V{b&Z{HoNq}PlMS#CQSuQBRN(Qg^A6?IC1P=izPd~ zc$D!bdoWW^Gtgx6rC7TnsVC#@00-8$Gij*L{*eAh*s5XxR8PAuPdk_-!+UD^m!0lP z75 zF&m8&{4F2k-~;|yVbQal78h#6&RdcR8P&(sF{Y7x$ zY@Ta>of49n(QWlZcM`bnlE=8ecJKtxcbL1TKJ4m;X^JS!TSau zzv-JlwG|OZv!ViBLid0+_eEm+U7=iRf&@dM5Mjkw8Hm!5N{5Md95Ndg#Ct>WL)zUY zK-O$tjdng>m?uS(xQvPWuqSW}6!;B7*^TfshO>7ZLw~O5X|KE$;4}JYENNhN^NqpB ztvwBr3ueSECF6w>IT89+Lv^I=jr%e{=|6_c)QbX`Or{GY;m+RfkAm|qD89?Q+s9Eo za%U<0$14e4m^CJd8^e=e*KIca9+Dd@P+yBAXkV z;B#vOz1<$~b8GvV`KuQfu3b>Fy{&5dPPD^DSIcke0sCyg4EN+%ySy_mZOzSgTc4Bx z-5yB_$0%KyuNg@F2EpW^wpYiMK2^)%wA?*sEir~HSF#-RShlO5xy178FIC~E4A3JN zU2E_xMedA-qScSq#Lh|8)@0@yA`+bO05d2Dy#X2S%O=#`qfs1F?kyBPvAu+13>>0V zQP51XTF%d?SCPiywRQ^$@Kj!9pwKbi%div3XterlMo_LKP1&O1#7R(O$ibE!V!%f$y$p>|Z~J-@n?8 zkmn?h*CLMnTAfU#jtreWkmDR!`nmeZALv-gE26RY2|Bry-PgGTchmRiOO`M970QW3 zZM^kHGq!jF6ZpP+!%6|9OQL1W?v(4=Ik9n0?lIr>A0ZKQo&zr6!$$CZ1$ZW%GS5m} zN-=v>{HhkP$8lWgofU5CQ)g}X3*eOv?ISpqxh}U9-d+ud)e7HK?TZiKXzMS9e!3t* z9tcRxC8$msSYtXhJC7w7$WR}eJV2{?9T9W9j0$)$6_>;Tn~0k18W3S0_C0YO{Gw{2 z*f|h$Gm@im;@~6SMo4lls#Wy2);8qHO3;PqAF#0d3!pFuf+-5v5;L9~U04+O)BTSq)H&5J>g+n$@|a93DY zc;r;?ziy3~RP&pYpq-s4t!f;XX{f7xgBs%OxL)>=L|3NC)?sw$$bQ$#-1Sjj*oRzS zvyt1I#EcA5Sf&!B@%D61?ezBDj1}|K0iC-ZG>q#-W140GGR->J?d{&c|+&te8$G*A7{tC%0!=oR={WLA;v+m@?NhO)UaU}{%dlKA; z^An{8wa^L|m8yTNM~cn#_f{kVa@MauzJ58N@%}8}@+&gH3dQR;t*~}-8y!GT=DhQQ zu=`SUksd_ve;a@J}r~?_B z{=OJVYuKi}-rkJTLZw|p2!jqHH(MJk7M#EqDJZ0y6bkLH%)#klSX-n}o%#?HaXeeT+98Rtb|Bf_sP6RwkTDr;0m z=A%`YXCn*9=-zoh(Ps|BI~Ly@UX>ovm+LCj@H3KgYaUr$VB}DFK9EQ^%!B1%mG1|d z%|eu?46a!Y7=z<|t2Y0#X?jJnJGR~`H)UVSjtL^|J~=-z=|PPO( zn+_Rcm|&DjC>TqlUaX_mpXnf+gKAb@dV-MUZEgq@N)KjDZ*0C8RcWQdy&dI?AqXmH z!HqyAdnnhPsSa9|rqt)vuOhxYo^N=wK0Si=kC@&F#aG*wFy5|DnD4IaY|?Q*?Tbe( z*YS+gmFVEWNHawF2knn;(?9Ua-&-(a_NEh2gvkZ8dya1-{Bdw(Wh5R)=_X8*Lc!}3 zyIHqG^SmI%M64$+WhD>uSI)p;X+Mesj%sOyyC1e%X~n-)CFfXv*pHRZz>4k!^(<&> z>^AtA2PX=5-TJqAS2*OTjvdh8qqhI)NB`66d*`dq4?ahNFOBi1qkm4ch34(rX66Cm zVz2GgcC2SILKfGcB+dFI?z)YdbcM5MEZ-u;bQpD~wgPNO>#Q%$8ADdc*jkT=udDCE zQo*bC6^^Y@2xAvCIyj)l5G(3id54by873=Oovu7`#%hexfgA-}Hkxigix5dx{K1CI z(@$7b2VAA4Hf<()eKWMWJl~G0^^S`!i#z&4o{5t?<>D^^SVH6oq89(oiuKWd~a`Mr?bulYgY~S(p0m4%xS;k2#u7 zA7?sPRS%`P?XRkq6JErvY)vGwY^Dh|;TW7}U5Z>t7%X#LL9iMUSY3~{?Qu$iJuHJwlpN~WQ|F}-@SNmfadx9an8IX;p+s?xoi0^?mGy@ z2p;+;++w}B%{DcTAr^$W{=Hy^CtEx1R&e!uv1_vs&W-I2^(9|}zi)OWon0!rrxtfL z>yMjwogNo(_l?j&t6*~WLRdWi%tk|8gvmeugkkTPdAz6vmiYIfoyZ)_XL!G;dCEwE zsx$DpeYwYFW~u3fV0RGGS;_z32TDZ5ECnyL4F3BU?sHdU+3kB_tLTXJVFWE2z13YB z%}UA(H3i=IG4E%y7}x+)XCNZ#P!Nhq>Y=taK>vB#FV8vRko@151^;OT-~jOF+nH5a zogUcQ3J7HWycb9wxu+Bz)MV{Ybr4H}86&!2(eMdoI?!2Xv-tEsYve!X3h`+4^Mcbd zycqpx6^&qw3JyL{Q6;<2q3FuZe_lKmcyX=;i;{o4e$1DLTt^Q_@t;nISvh3*M{OY9 zqffMj*M>5FZxZ`|AC7^_J=y7)Ir4iW5qOuA0;jfB__kEgJNs>6I2s<`N}5BUBTp=N zAIH~&8^|CJ$$cWws4^|?~~X-(}v{swH?f=;QBWvt1@Di)?eS9Jo#tKzK|Fc-E!aQEqG4s(NP_ZpdRUg z@#n#!le}l<8c?~wQ$DKXdbq(FF7ejiVuljBp1V8m*agm4+QJUas1N(%;HS3^$5c1u z4vYNriqhvlF}}Q)t^u+Bs}sZ)aIGEs0%(fDH^;1!K|ROi4@bpc^6TN?OlXL50&Jy|#A@XU0Shd_$ zQ=L$_TDWD5fo3cNhG=sg4P18B+zRMOB*<1J^~Lz*e=mBHQ-Bf5(R=** z-vI%{e=O?cxXhbh9W&-7=~DX~ywlU;kWg12A$E>pz1f9K0&!3}0aDk0FMQQ#y?@5! zOI@@ESM@)w{Qg}2N-$5@klMff_1qOcc6)*BzL~hTgalIAYp|5b^c|qL&(=lyI%ccz+hvCaaFuHeQyRGA|rM!<_nP>QrJ(X z4WO}~QvdBkw>UYYB|Zq{aQySCZ0zsl21RYw227cu8ahB5+Fg!4nmW5qO8Z_f`gfDY z`rHQwzDh=7(4VuO6K^aB|E0a(e0~CSLoDsP;dO;dxz_d3mwQ7$o+RhCGWRn|K$t0G}4 zQwjIqh1kMcXt<^`+<6*}%pr3Ba$y2B2snSWak{CnY3BtPy%I32$y%EL#-uKHFE4N* z7_w#SlQRuj*xV!#t&pnbv194(GqDrIF^!;l=leme6OWH0n+IE&D>uTYo`L*)sx&@> z8;+5@p9Mnt7gk5U5g2wR!nVGr$x|vYKctUd;JhpjcZHf+f>DY0o-s^7KwRGseD98% z&vaLbd*kJZ?dH!_!)2@0O)X4n4d=3wa}a5+gE~b?5-IY^rrQhs>hJw>Dj^l&_|J7z zXk7^u=Fvwpq8si;G5XWYH@lV}H0fATeuiM7JxL&cf84|j+;1i{a=EDv?C3Gg@k;N6 zyvl$TuH`bTY2CObE2qVM(r1=mM-4%S`j9Z71>b-zJ85}skYlxw$tT?18H#;_aWa$| zy}7DHRbW-ex7~+PaUNx+jVj?Me8DMou083*g$V*f^|9eho-7HYh3h_#ZO1o9eTQdv zZcX6n*_7E)C=sUQHUWMgg`g&@g1x@urdM`?eyU^E&uMSA{S50>&Y?K7k~0~00gDpJ z@?&)Snas{3)CMfom9|rf-cgU=#`=SUs_c#&If5F6qNtGcZK6iwL`_TNPaA!mDYHoR zMo+b1P_BkeiSf-2AYT`WKfL(CPgd{p@vmgv>Czr;jNS&xz(fc{ztbAkHE znNQZWMpSK!^bbItH_yr?*d-)L&m>jwlVJWc_yz0DDBmEF-zD?(?eOJ^O$g3C{NK@< zjh$Z}$O=QGeg2F`Af@1u6z^sB`U`vFm+=VWr%hBolbk9i$@ba#8J*FH?Nz-jVBYgq z&Ip?Yq<42`br5yO5bSWXg2C?JHMCsMHXB^zd_qr_>2AUySjtW}gzt+iD0)LjYbJu^ z(<9Yti*q+UU>(hJY^pgX=oso%u<5vi^O)R6vlpGhZRJE$h$;{ICShku<#`&DTj<^3 zk6K$LJ7aWoymn1=!(}dgeyNQ}Lf0noTVAf0NchiNtDVd{FB>P;N|BL~s~X7Yn?j4* zg}XaV#DqL8y8;{ewKh^xOV&))z+$+Q)q6%U^XhqZ<};zJln>5`n6Ffn&a1a z=hqZ?we1AWCyDn*vA;?nvztFf#gWx9MAUH9vW%q}t)>TKMwKJ;5h9GS<$%hwWlMA* zE18H`7wUoer@QXbnJ>u5^(arr_pWC@?o-7Ml=7m`bx8H$2tswr)tRlnnlZZFjPc2w zo9oR!>%Pya8bGMv+lj_*QTBA>t}b)|6SMU*z9dUNg7|0^)%BD)Wh>lhuw9y zzA>Yq&VG~QO+N5rQF);4h1*hw@LWQ)$d1E(d)>_51aEk5s#lBBkdf`O>&P-+R278^3PZYt0vb zUtwchOak{P5a8jJX--YP2gm`|$=H_$vCPt<~Pvm{bXFIm(7U@Cbv|qt( zK@kv`#isji3yDm+b)bwdks!gB&1C}%w9SI%=K1G_ENsnhE$Ed<-Lfr<2`Ro&DGPoC z>l=lZ9ae4!v-eqKUaCiwJgv5nyu@Jw@dXvVTfO!?adYB6DF?h*2BB?jVu*SvjO5H~ zRJ|FUiGvZPZT(SrdMpCWO16TmnU;ZjlI0rMf*G(!GHm0FvxvT73lonCX?eMdBM07F zyKjECafVLRsc~9y0 zEy8<`$=75**rM|NvCF~6Za#^}Ef0h+UE0`@7BMAEb(RU;mt{`MohKB>#$}Z9pjn;O zmbdAbKx|KXzWG!YS|mvfPTRAL0&>l+j?QkAhQaU6Hnl{ju&wJ@Mg!^18_l#bwGxW| z$C$?SlCv|+z9AKh{vfsZV5|zQe1NB0B2mkRl&)=PJ7dMRFxLE6+kIz>7~gkyg9G5I zx@^6w5{dHW(D}7to2ZXviRQOiZyk|URF*~2?m|zAmDB`GMG`r`nB!(S=SLsng)CU? zpRwd4h_cZ8(bMaT-p?j_DC$|J_e1P`f@fOlHX9su1}#^2HgzK1hNXTjNK?bHhlp7z zR{GKQO~?n=$*y#SVN4ErQDbppVryrnrF4@N{rIy?a^v<}%EkLQ(Q??nfX?m!d)KDR zVqgQlM@-uL24n;%@TM+C>wFOV{2HVa)4Na zq9sOP17&}z3YA!ZJfdOGDMDC!?%%l`kUF;md04xO_W3_^5Q`%V)z=gXXe{m8YPGxV zgn_6>Wt)rG6p&!8+T36ypKxUT(?ZbwN2yCIub7(7ejOjN$dP9>1nJPCG zB}R-gvX(pz5!xGYEwF0ppbW0@x*1j8*^M!weWZb5nLt)Wcw}ALFy2RRkk5|J?yQ!9 z-^4FY4hz9SEW?bA&ckKqP1#QCjFupk69^wuTPq`aZ|;O1}l@%f|TXB#b4g7}(BjnLdkNFQ}AAd;b9 z`Ce+&FDK#+;3VM_%-4x%!0y1%^Y2#m^`T!j2`jyyzDxAUciJ5CfwQB>Avf;^M{RC3 z*?{<MZ27$y=3nj{CCxGL zrf)*KQ^C=5()xT*2VPjL-Pe!(Gos_WhV%mqa`fq zH&OXjg|>dUp;qd2AYX=DJ=Ptw+jdCmN>vO9OFPjP_+fJ=IJq%4JUR1ILBOS+;q%rt^`MsU|YFK%kuFb(T4<9HPnMZN?(_@>D!n`Xs(XHvp)A8x%rvo4 z8e)cPGZ!!rz`(XmdKK<9$Zml%x8nZ^+%IlNIHToZm>2&n#I=S14miMX4g-4tHsDPODWn>IG3nnurm?Dx0# z#4k{K%~L}&y7?qfA}!_bIz%zBzH0b%@XC(mr%x6p*D-i=pK| z*5CT)e#~F$Zzh!oCg04#c>VCZgPB1B6p1|5QJJ-4=MfXyE3NY!SzMP{EO_+v zb6BG?vg~|}`N`&%jwxHI5p?5k{R;@N2&JI*+7m}Jn*ToJ4u9*W4U>;6V2-myS z{+Uem&3Xxt@XuBiz!3@}C@zdiI-{^d(b2HDzVmIA9_0YKckz@dckWJ8xm4n6s6!o^ z?zRbajA)?i)5D5GNUUIUEt=|RyMHB2OnVm^4=XB!T%hl6RuQ{nB%&U4KEN6u$qYDK z4>)Rjob6GYY08d%y5-jwR6U}Uc1SRY68cBAaCQZ#;6wdA4F6tP?=4J?>c6xLHCpvH zRUQlD`BZ!l9&JFM)nQ3g*YlNln8+jC-8^>TLL~Fw8~5%{6GIERU^?63SkUfTbaYdt z+|=jAw5U99LfoSSJ|nkr{MHlm8=tiJ`n8tEw7~aQQz(KxrrTRjY_-B%pMNbiGR{bQ zv*>NoBYnllGvkwT!CJgd6SAYJj!z$Z2Z6a<;NLN0p(*iKYm<~_pw`7L#3mdJ9@lVm zcFWz)dbC^`*5+TP+OnhpV!L={p!T|XS?IduHCB4?f)|!GByT#l8fyv?-5H4`7XP32 zzC9kwH2gc#VWh*da!S+|OIb>cvtqa8*v3RTCuf6l80Rq(yD2KkVKCW3<1my{3`3L( zGo!?0#u#!Kau^KbFwDGLVoFCAWzqD`<6R>UaF6N z5tr^;<7yjV2+60DxuMh_@AS806`X^z$5sYv&K?{a)O=fIH8j)M*r#V26s8CZ5P5;2 zvdQN(SMJljkn1k?9`P(7&>7g3$P+Bwgm^0ahG{4ACO1a;g-u+enK*f;OlI_tr@D8P zsTDzow53ocNdL*(yC=Q$X5Vfuq-V7sakh$UjC|Ty$1E#5M22$$Gotr; z&}IWgD~oK6UI%UTGTsanx-~H7m5@tBL7dVgO1P2pN8CP(DWvxiKKHn8LO_z3_m6ZP zTTNmN@Z)>Vr+iRCI20d5-i5S3GSqV(n(0nlTcG)bQx zDv;b2lbD%|*aeA7Eky8AKJxgjAiE{Fd>~5KHYX70;>oyyne&ZY4+#RHb09@R?Rj=*@qAIkIvC3hb z;C8G66tDVQy)EQ^Xp}#A=;Bj}ts2g@jn9NqmYsCv=MeF%azwXsRB)a&q0*MSB-uDW zDcPt_#F)KFcZOSPhCXk678?Z0g8%C5A44Lk*7ciddv70-hR(UdJBO=|l(GrdNfn~G z_D;{cuYO96R%;4?_dQ}Gt2$L(ndGgJkvR*^P^Qj+(6&rLyijVY-$iGsRz-9D|PAkQ*7!zri}y z<_#ce@_Wqoq^YQOz6?$DEpTG$fn~0|87$WYOAm%tNX?^i;w(W~DAUn;Dnyhj6^E@v zpDcrGd@4$g9Nfn&yV}CM70`QZqMk5(e&6)LX1YOKFpu=Er;vtoKuI!S0Hi{S@QEo(OoFYVN1;wo|Q* zCxq&M46wQretou!H~N|P>q8T};|x&VvNMo`||rSC2B^=V&MGR!x!Po423;sj9P1;`lpgUom8~H%~EW zzEU(7A2WRyW+htjo5>PxV6^u11MU6G{94!rF0CoeXr*F%f_jkIy zMfh6YK^5R4ftG6&meNFkp9o=CqLi+9%H-82Ge{6}&rwJ$dfYo-@b)h2hYMw4`^QK) z|0|t8HjTJxbaQf?to4i11){pSq=J~aDo*Zo(YT4CO)y7QYsk&(dF4Yul+6dnc{TU? z?8EePRdC}Vdd{V;xFS(b-n}6BjWke^Ly>!_n@z7kGYE5DG}DV1PAf0${#CTS%33zn zUo|CV{=>PqB?q(4X7Ng6b{%KMf>h+t?p&9U$qtsK;9@Am`^( zx}{nMnZNKonwF*UdK%H;m?&o-`sQipt+OM z!KP$9YRd+ga|4{XV8U@VLQEpayr>N9i@ zPZUb_q|?1E!aaw^y-^Ao^xO-Z!ppN;*+6`fl9MRHiChrb=4C^wW{L~<9hz;u(@I+* zPc!xE+hbyH(J(-Zd%42LiKooYRUIoDW8I|-=+E4C*_@R8ummZb>8e4EZ3PX_2$7Oj zhUcIjsR!ak0uS$NYi|rq^zus^ke(=WRNd#t2(2_@-|Evr26=Bu4R!O4`(TzkJ!B42 z6KT+6w>r2^4^7HbRtjQ9q_va4jHL#<0C(Ni1p;_B`=T~d;A+$TzM0pMoFyY^c0A2? z2OM0~g^SE3C?nkBc0`qCzpX9gp9XBvhvw{o6vZJcANi>SXAD9h<9c4~t5DW8#Uj;P z!NAeu6lu6qJ}c^ZeoWsuxZg$bI;vz!btQ7v|3^m`b8n zG9}&`FD_?a%yKRbkak5~%!jw=Ju_R2C^r;%g zaF>6#gtBMGX|xq>a3y$8MBk%r8GwUEt#S337NCNzh%67wlbqu|aArrZUO|#TQs1=V9g7-d{6JhtWDZ4pw_=2qjiZ^Q2{&svP;3VlKcXD(8GW> zaaXKB9Vi5=Knl(--j`qIPOJc*J`^Hzq9P~k2C>^Q%KFNag?&fBhXO5^z@&G%9P^RN z`EM8kAg$=VqllYI@GkM&$!oLhNfSm0fa4vqOZJp_8h*5L_{qBA{zCXk`%n&%=Y0s#`);HC+=_BQ{nQ1h!X zRTH8Q>z>BNn~Q%eyfCS2txiXwVt+@6nDwPZYl#++TJC@D(otpYfCoL^sjd3>8b97j zxjq|Rw_j1kB6re|k?CESfMR#12QQ4r##H|#%rE~Yvb3>9;12pRfe6s%5_j6XJ-zg} zb6{heI9)3Q6L+6b{n&!se`ie6R0g+T2RT4eyXQ31yDg0GD)-nmm&P;tk@n1O++jSv zDTsNJe6Rf&2~yzF;g0T^M7@u5WY2BJ%PdQQ)#_R3&2@X`mTPO_$wAC&i9Tty53G8o zOmFWp70!Mz%&8jp-P~F9Jt}ra;-GfQkY;e>aQOg@Ycc7=spBpr4iBgu4Fn&4gZF7jMj( z?L<4U&4a?1is8mv0+-~7OJ+vPmv@>(8|sj{9DMdR6-OZy}M@e=t`O?m+05Z&bUtzG^2zxaRPW zEddsmib!KT#mj?iwU}Guhu)hne9Y3|ot0}ZBqe_yqEU6#ca`l zzkX+r9pZyj;U`v2!7gd5MP%?H@izZwQu+ISfFjRc_cA{B!2g*3#q9oT@Yxj+(IO~x ze~5=g7CpPNMziS``Px=Z9qxEHs~U&a(!F@VCNI6<4>QO_yng7zov(#&m1tS{!_by7 zP2dL|ge==Gh_Rb~eqolfmDKT?P5c*D{ABzJ@2L*@FRSku6;bRBB_;xvagD0b z6mV=vxI2dG&GcLEEo6w11v_Ffpt<9wK{5D!s@b73WzZnK?n#dVlR|QEdwE%0oVn;# zf_`TQird-*-4Y}w-mFO?vh|r7!5C|A{L&Tgl6rYkza zTsD0GMtY&D7C4jhnFQ{%=)!YE&J!lGplr78ZU%HdIa<9*MY;I<;=F?SJi+@6Ou;Z7 zL$?!?(9-D~q#XHx*V@4Z-Ek*RslNzT%=9ZBI|SbQSW=7BYY>@#-YkpGUq7K60JX`G z+HpCxr#%=H(<^|hUOYf6ytV00&Pz*$+H*AIxT^Eg&Y(v> z7t~sQheFEF>>Cl<21M7>@kvptDJ^PNft452pV_nO(w(~!!V6wuZ;ttD^ZG(|wEzm` zQ*qJR^)&S+06=9F#IW%GIQ)9Q=DVJ7?xdu8u!XH>w_ZsV|HIhxRTpxdV|oN0fyN&! zUBj)21|Qa0>U%wpqCdFVAVkytQQXw#K~U5sKL2bsn^5q?^iE~>{q`{>wV!9N3BTFd z(Ghe@zz*%u>(e3!ePhRW&EO5V-o--dneKFxq}y};YN0Jz!BN8&yDK2~R^pA=!Xt;% zOr?(ZKn+Sd@(F&g-Cj>RK5$N?T|B^sLUNIxNu1GKEps5naBeAyR!?YN6i5JZg$3nQ zsE$!cT~oCjH-m8@Ql@)_Z)VhoUDMRUNwbD@6|muE2D5p%Rl{tectc($TVr(|rEs}eNmBLJv6t2lEjA6N} zMZjXXuv$M%sL33qS5VY36utB~W)Q$1U1ax?by#)DYU4AbmDki>b3-Aav}-`kuQY>7 zVZjJLh~hoZ@Gt8)YLLRSAyoa^YjJwSskZ9V>R7@|8@=b~^mvCm8Gt3e#S4Jk%D6g7 zV8|f4(R|NJ$j+x(?iMnI&L8SmDqQfBx1sQ2(oD-8pCL z9Wwq(-J^bjFadpaHO?14j+G~?580$2zaNNMVN?7=&^w8KwV~lqYYL#T=VVq`zpM96 zGFp9787*%0BIYS31*2tkQ&q04Z-5p6op>0?LmyR_;sua6&1?}SFaOc_On-^y;G?&w zO#=Isw7e8bK*}DyQ4Uhr-MOcQwlwpO6O1t)y|u!hN0nygL}HScD*{)v5oZMR!Rgyif@N9v|ElJvv= zSX>fIdH{o}Eu2uFd=`n4RfVMcp(~+1eiw`!Ex-Zm{zNs*%-x70!`?_eJ66s>MsHbx-3w)WmfIeEOcJvr+E3o zWu7kZ{~=1hH1E#UM>d$CKr4YRwEQ6|qb z+>PP0;2J2QqVpyC0mlcL>=Zh1-&^nX*NjHYUQ4A;P za7;Gbp2jHHYT<-(epbI!{R1A13oKuW3Vh+mt-`^5`ig!Iy5O5EjjgL# ziT0HMrIOYZfuVf19`_Y$pC^aNU7UKw7(Y&GQz@3v0*fY~&8d!%6m*=~p8K+jITmrY z=0Pq7dCNOgJJTc@)tj2+Hud^wS)F>9pmzVN;>z)IXxs-~ha7K%M?z{nW)#IXWTD`j zZTrd8@q(PVq%KukOSN>tMj%&mG+Vdcse)1)niJC^;7c#4LvO`Ty(a3bIuh^dQuMeL zw#SG|btSA6da0XHufP?w6TY+-ea93+Zx-y*(GGSDeQcod!YR(pTtzZfCqNDGOm8oq zfsr$1%k_nj6fot&Gr3Jvd!n`UiNnhgTw+;miK}%gW-QGGmh`NloXcrjFAd-akW>9S%lv$ofY zFJkpfMghA<^}01h>_6B>~-wwNmz zPT`aUe7s0H7l$)%sOHvm2XjH)9m-FQo@BTjI+0|XXU7Fq`aKyt>>SxeR87J%tg~}7 z8Lv(wd%Nnm!;(gGEa_@OtD2z~Jv;;XUE;n=Pv|?XA<)P(BJW|AI2!t>c^c~GXDbuN z6Xy!zg&(C8?AVK=OZt?dFuclp>i3k{UkJ*+qo_3Zk|A5f3 zx@jx`e@(6NA@-OucXJY?D0jjsl~A?7Ia5tym)c$A#W4NU8jCRzS^uCdiTgAinwY3U z+7SvV5>?_`xNj8{3?Kp{0X#w{W3v+A68;8+ln#6%tMT!>`~V>EkeK)9_~{_K9sP{v z(}#~5Ke@k0l@IUM87);co!#)Gz|8U|9X}YZ5zi5v-65?F!GLl^tQ^MG#mKZ~;*4p3 zY?h{ZBR;~hMmB7qCKTnbML&nEc;R0#Hij!U$rj#E?6UC#rK--(z5)!B@p2d?Q84>R zo7qF{v&mDidtn{bdqzOp;r4%mS)Bs-n)Li8FR$Y`SE=_oct^#vJs=Exk$MpL>XK0i z)+S{n^>}U#>%*s9Xn+FSVkB(1?N$5}P#p1s(Q;URPv$%B@Jm$O0!8|8K#(nAHE-9#N0etVT?%EI@*2oz;nQRe1cKXT`Ge*Q8^_^b@7oUu>AoxzK;OthUKc~{4!wOm7LTW;L_HcGZKTYFZ5z@Vr zwi6Vw3qF+I6IgnNTXX$qOs?V*lvRms$`7^Q6tPnslDxi*wZ43Cxe#h> z@Y;fZSXl72N??bvMqXI);`$eA}i^)q^KP<+|F94hk(GmWeR=@?+mBr~u3biMs)d0Yq;lbb@ zE!sZqu-c0@HeL@>36SZM85+9oT&4y>VecEp+wSgk!LTZIHjClmTNmjaFx8xepQK`u z#kN(I{eDsL8Q)mF-LwEm6rK<73gxjnRet5SpF$?LL^RT(!)hrD3Z+f_D;ASUMr$H#rjBH1kUDQcA;rW*^hxbZ@pG6fzB91AKz zj<+0K7ZR5vfS#scI{eok3FMhQ+@W~B;(=ggEu$b>#3xfX96+{-aDqFU-M7MkTY^`E ze*!hMB+dLu*kGcxHhEJBa1A?DJTs_fu7-5>xc^V<+T|dC+?M85T78mYMn>;$Jhykc z>;DL8kz(6;J2zKy=HgWN?fJan?_^buA|_#%S+p$;iz{iUNtj#LsACB{%4XsjPxa6v z0M?&)p7L~^c|gTMIzQ+~^{oxv5JiCK!LmvDR&0=}-$5WQRlYsY+1G&$7v{Kq)}v|A zqDJ)BDU>^TazUFfYvg;L&eC=vV)xoV!Cs7h7un_M6G2m2jdKCj1RuxeFB8gad+S)r z$e*{-zXje^sDPRtorJsdsOg3@(4pE918SRJguYw;qiSGC@tTwH5hPHgr$4(@V_kb7 zz7yOIKl9tfxpk@lpr0^*Ou~^I4;cUhkPuBv?|9!qNM3tKmcMRWcIjVE6~t4~JwCUf zBu@>X=4kH}`|6v9;BV9bK$s`Xb;C73U+0;ntp6xKf1(L^9hU!R_h~2iQtFet9uasB zHl9uRl}H47wYI{wO52l1c6fXLQ=`e50qphE{T%T>f8u$PW(-&nR>9b0IbJ>Z_d%WB z164j7gnePl2FKPn%Z7}7+bJ8na$SLJsEhT3_y3E!NdBqR^}R*=;uix2(F$am9kP+% zj71mu(pNHPnlZ!^Jcco1$BqRU;YMV{mpoAiP{@^q(}Oktxpy1B7o6pu8tkbKFpK(P z;;yZo_!-2|(9*o=3Y@{Y0IN=Pk@5Ocr6ptm940!p;cKUaogx3?b)%IJGDdsF#E?Tn zL*7rI8D9$E*AA%!kvH|Od-sZkfy-I6p|Gn++dqNxra(X$_6hqDv{q^o#&7$1_YV*z zB~vT1hGX;Ww;O9`?W*Gi%J->15e1(28xBMz_wL{rAKcc2jiH4h4YnEm1cfW zgvcyGxs7C2bA*>W{JVmKXoc8q6`l2eHUtaY-PkWwO}syQ`d8Gz*pE-Tx5qq;Ku+}Qe|ZHhXXJsm#W*1ZI7>mP2< zF;t8BwPT-7h|3Dw^}-Ni)_xb^iy-`D0F(!QXLMl=-+im>Bup&Ap~{y^-dfi>msvC* zp9og2o4v*yS0#34&6?n6s)ty+6$T7x;ZDVt?V@a;(!rX#(3s+asXr+i87^* zy)@J~#bbJ5LJ{g+_8=IWE8Ri;K&B3c;ZeVB{UY9fw=WUiryjC5pPk>9Tz+;WTxs@} zIuB{3=_lv?(jvO>uo7gk-=785X>Nddc48hE@U_%C?}F2SjIlZnbxB;FcZt-L`)JCf z2r*CDRmR)>0=xxz3G?_$WkcupQ`?dY(TtBgJ7R5QOl?D33N2T6Z9lHd*;e(vJwGOm+WbQk zUNg)8#uhg{?hWM=@WoVkXQpO=TM((S4xs+-Fb~i_P4%3P1 zyLF~c1^^%A0|x{IkOBwP){I`Bjm0Zr9S2Ku?@=+)Rd78zYChirg+V3b+pg_gTz)gZ z-;;xcFYHFH-T;hGP{utcJfWPeQel998q;I)KoxoW`$n?$1zA2nQ5Gxec>PR=^w7tr zkMO`<=$$^Hz;_r3N&Z)(2$ z-v;rmWWe9e3^TF)cluVx+31Xi+Z#ON6}S!2*bt3>(J>pMu^}28qOoxZf3-MsR_zOKUNk~kpI$ytUzWx z-w$hf@wKQ9ud)Gh8p+Yjc~2$#{|*7{;V00dzZ3Zjw(Rejv%a$pi|q0T7#`yPVaV-# zbian*{(H2kLw(DUmrShx#eDo~QN%_w!A>v#d$bT?e~w;pE^q1bKfGYjuqdVSe~Fdo z0GHySy56V!i=z5E(*u3WJH?Ovoil5K{U_nsz^YhykN$Vy39-kYv-K7aX5ydvv;bBm zzao(5wxGX`^kt<_Zr6ZsK5hCBzpPIMAy^; z_s3ng)|%C;x~HqFp4z*6*RJP@P*RXWLncIqf`USmkrr2hf`ZeAg8Cqd2>0jtC93NXF{Q%v(%ML$B2ncD1XTt zCi)|4pPhdK03GRndvGcd@mAU={i z%l8hs)9jvlqU7j^Fq%XN+PLcxy~xxwy7A0(SjO+>a23Zq+lk_6-=wc$&b&n-9>_ZN z?cZ^vN-N2E^#FhV@_0LA(q!#~XTG;bshKv&fE6V{-x%?BcI=)mt1~GPUS*NFDXaj2 z`i&LA!5D&XsDe2dDW-?J4fjK}pfaRf=Mr>}(?{B=d`}$6+1(ZF{~~vXjTHSg3qG_% zxuO``gCG5l{{> z1|P!3gg zFCY*Id0LvYEBNh;6Dmn)KxE`MahGR~|1i4=Gm1~P0vlCLga`h`c+j_j_TNS+o?c&>1Lifyf=%ISHkNrV zSLziv4ogS}qk;sxM^uoyz75$M7?wUscTd*@^9~v1Vx>lPoo!{m z&kNTj6tlUHPO9qo@#!g!aBBH=d_ySnD61ODjTcIaK8?R@+h1Kb$~it_)6KaP5&HHSK3gPnM|nbggtOa__`mw zn0BVe?NdKnH3NN&|Cyhs*d08$oBpIRdrRr?~6U9r+pNHW}^SgE1B4c zvg!P)VrSg4Y=e|h=f_6Om?3ZPtd5z!!yI|l%}26zRw z#d`i>FpG6oSn5^F;p2}P%G#C`Onhj}9Dy_W@|vv{@HDTiXruGClB`=l2G6AuCn;M8 zt3P7P{e-F1(Pnb)tr7jgFf!N%k!5o}QX9+UKwy}+7XeBaIRQ2muX;YN&u@m4D|I2s zeyZ*dy>({uyAiJ_t59}zrzkPRbFs(>xeAp3QUR?pdt!(&7CD{<_V~(ezZN(yQB=cU zHYDempYK4KGLap5UNY8wCI5-A$qp)qK=g7CqS<6c(o}k*Gh($N|1C@r_!-M4IZ1fW z7^1^wpRkh=_rgTYx>_c!=yrT7IwLKta^CV$+;Y>bG0vLReZXWatsUw((h4(He8a(e z^SW&_-YucQiXCQGv&o0+TjYY#OllvSu`9G(mc8?hP~JxhxC~`YZD@b5Pd*A?4P6u3 zK&PU}$oK(n*^~|;7<~AQ&$wdpmtKt8UGO?h zHj*MTaG7tMg-=Fbmg_#Dn7{oPR^89b9SEZtuiI3^})9C09LSPp4$p;b{Kxc~$>u#yr(Dh=&{A%gFV`)|%|K zB&49i!laPaT{Q1Dqkx>$JF0k9Nz4~hJja|qcXpxt`lSF+%a_*N!j8Bq(t~nuL%DU< zjb~L^WS@F_V9fMtL3m{7D@6ry$M=IZeEkuyDVNVTOgQZh|JWJ$qeYO&TsZa?(rGrB z{5re1TV6cGXKyFi^I-74uZDNV7Ii(_MRI zc}^=2-3GhPxh^5;S472_OJNCBk6{QFV#brh+tQ*6#aeMtla;!A@0_e3(P4aAW@c~_ z0&&3-gV=uRcUUnHN1VRKgpEaa#+VX2s9?ahiEz5!~?0@cnOUom?f z8pEdxYcma|@<}kfdQd+$M$BMvmIWMe={!#X5=5Q($!tK1&b!O6>$#f@0J(EKP=QJo z7LU;&iyw*hx3A-bdQuHgdv;ohlqi`#?q5(9*ya>CUJ>kX_SVOWT+4y!*Zb@8Ft%Ep zNe3iTacZU2c1>nQBvW-xrC^y9J4tfDZ-~4mnqS_|kU07FNX3nqTZkHdcUGehc;4=B zR`I=sB?vJ}na+u-*N?J!OFdt2)2<7>feHRo0uPT?tZJX2u4+X+;({P&-ooJ0f$IHdc%9D?8A0Lvja=X zTExuj{;#>Sv^Kl(qP;waLlD(>2^YQRAyLyv0Db-ZK zulp#4A|-u5Y$G1B+Yx)NvYV?Y@6VK2-lC3pSZvY^$WJ+Zer_B6DXtyH0q?KPYv;jE zG(JwT;$%!0Nxwr>lQ^`-Z8*q(w3jucNHrs)2$>tucRAb>tN0QvQ6E^^aN?SdB}R47 zd#K3W+ltW6y4@+-@u&btUtqQDFo*IYZ{p5QaL`QcAd9$gK|%uLq^&$YdDFVRS-Zb zA!`-V-Ypi%nh#e`HJabS!sqm$DrQ{y5x>J=df;`ER>G*ka@khMWfABnz(+|}L$L18 zhaho<5SIh$V~Mx--`_DYo+?)?@SHW{T}!E9+G$%TBbi zCUnC}-#!nMj)Ylo(D*%Z+O_Z6MeC$hzvCO9x5Iu8NQ5L^3^8eJr#$EUPWyALY)W`h zWRfqU4`WjJ@Ewk!_Tic3qW@H5`z~y)2NYRzHcc26ti*I1k7!QfB&uCZqFGUabiih2 zdkF?<(xAGMSLg~NDXuv%2xhn7CSyZ1=s++DOE=gAcqx9sWB;QcGO&8??oERYmCph3 zT78GYmyt3L>!%u<^I_S)gIhB&Q=-BPQ)P-!G(H(_O=&nzqG@ccElB09Bvv1na~8vD zFo{zXPgoOK`rjI=J(D7aV#ZYe1j|Vv<83sySM_o6tOvvmjEO3Lwpmal)G4a}@KKZ1 zFx={T)M0j2(dcMNr7`ctR-{rfe4qB&7$9epeg}8fwyhkkTLUN3NN*;A1;SaO`Nt6q zWLATutbfqx%{ZK)-A=W#)qJ<13+>ViL|PAvpJOL5Ur&z-x_2%prU(r^opE?W`wDmr z$F~A8r4{!JFv8CHu$l}q+`P7?vjtgs#)Onok8Zo4S_$IT%p%N{pPB5kZaB#ji!{|6 z7*D6IaVIDk@m)fAt7~?!;_Ht0O4bIOc_2-6m9K#FyC=Z*4Xz0+gxj!8xPz3QCzT`c zyckw_*CF@OPjIe$e^DI?7|Jmjwzk^A%80{|5>n&kifb&$JorFPoz^lW&bjui-t|>i z2LWjJ#bz*#D#Kz?pH$_!fDe{IyQl zq^B1HIwFJx5{)!hmqUC2R)eb*N=ls=2d-EGWQq(1A$SqjOd>pW0fmyQj<@4Hn`g2L z!oJoV195MJL1D4Kqaj=ej$@A=7qO#`(t}UDcBb8Gg9Y%A09F$dn5+n5mI!Fj)dvvs zv;!uAl|eQ55T4%wf;7ZXEgAz#!UY?DyqhEAaQWeN?vj>v^*EZ=QuyK1inJ^AwV6+h zD}>;{UCH0&dhm}XI#*(X zR#hbQB6AnCYdclY_22ys$hVgQlq1*Ji3QNp27i=If%@9%pj2(f$`Dm!>I{pPVP0Tn zjYYrPJ(yX#-oS_cwL^%v(JD3@fi#5j*;S$qp;YS`CY$J`61}iZ?UiAnvbWIlcw@{q zO3>H4z0d9^A@5Hhi@`E4N+^Q(q9RiiAS{P$=2u zPW!gnpCchffgAouAJl`NWh_23+Yo}W!6=^0sQs?&xTBgf!43t^GdDy9{%giehaHiF z_>2JIKa#jW3CuF)-h49izCX{J#Pc*LX1Ul5+`wF5MltJ1l#(t%wEv0DcDO3KRP&wf zbkVaPU~8yvy1PVS(1Bdg`we|X=z_tfN*xawkT6?;pa9r)$zKQ{*aPvN?G6^&X_vUH zqZC##x)Y?_LJYDV*%eNk)XD$HAD^C=X7gZ7qCV>$_*$XIp25kzm10(dwIhnIVbb`@ z;DIuBE~nce=B~IOlhIuO6d$vA+XK>Bkw-HT5sVyYy{EV1sZ5^bex{T?JK?adqVKpU zN;a$8^?#FJ&6uQl&dvJ)o_|Sv-?$94_Bg*y7QCo;(0Fa z&B0+1gGqkHRIq8<7iNvyaGs=1rS{r6@n>jDi-cX_KNWe8B%}-0lg&(*Z{}v(-NnuNpi_mD>Li-^F2$eH~SbQ8)}{{ zQ?=KJEhi^_7j`f3?`;pt(Z9Z8sCH%jxIFGXn675g=3`*Bzv8TLE~cQD`5ZB87A!+5y} zKhMi25SI6+T;(pge~rX$tXmfTP?Ew&GMIHurt3W77jE~0uA%2lyGD2?P%QT=nw(5A z_)h~ZI$s0PQlZ`NRO3(GF7r~&+0S|2L_#CqqHbI1Nbq0Bm$(16{+UHLMp)9A*k!Q? zkgsT7_%&#;rU_r!AJKF-V5!c1a1xEA#`X+@a=S>f#_d)USG;|5_`YiZuTOB$Tr6}W zYLoJErc)!=w22J;Hln!#nK4K3(iM_^ubS1jiTCWdM+Q}3GamP>|-9V&sW@8(5-(~k}a74 z=E9yz87}AJ6)zqys@X0kP^S9rdwzmF7C+95nii$CTYPoG=p;P%5hOJ56~LyH^o=nL zs+K}A7tb=e3?9jb?K91s`&d9Wpqj%XBFyY{B)W7`L&W-UY|r)(GI)8=7iY9lVz3#t zKqm1XDg$EbbWpGE=5X%}qNZjmY&?p>L+A>@5PBlkAesJ1+8O7RHrZV+CiHu1QfRQ9 zMIe;)7jrNZ9<66zq;#ma^$`%FREhKGaEek_CvPEh6q33g#hZ~g=ywWWo_FJ z2`sL^(eh0RKD)KR9GB`lu!Q+=TD#Mg;Zp^JNY3@ypn2cm#xa(G@m$NM$6?oOJYj54 zBJb~6od3yfO|!(4eiww9AVxa*y%F8-Vy{Hf&dMl9q8@E-zaEVtDe3sYZ3dYFIZ!hzHdczEu?k0<5AuGXpM zs+#C<_OZ3)G@DrWa{Z}g8!mZ$8_jW_A;$5R%W??#*w|V~s=!B!CR2+)vrMy{DRu2| zhGYj@0IFE(4oGMFkj6@fYSK1!ro@s@@84IJPCXp*DJwBPf5~h%-)hVNh6>`oJ;ryu zy%gqD>)!;b0Yy(UBE8>#r(C%;5?d)8X*u*qyIkKV+KN_9+)(j^@Ui1)2+bk#=>7^^ z`H4?~g@E2tBWULjBCl%uN+R!U91hRapnhoQ$BpsM%l7ft)%YRU!=dl+;xK!}VW>H& z91HQ6!=vsZ|2ff$XWw|sX(PF&g_g9ykx|Fx3CzPeBTUUU5EDMn?ZWvJS34^FTBwUJ;dKmvoiK$C4t96?}JkInG6Y z5*`I7Ud1e`spSccVb7q11TGRIA4f&pM9P5{Fv~!Ofq7r#Trc|a5Org`w$B#eHygc$SrRMu|=Olfy{Xn z>&5B5qg6G{#UMo~k~pT@!{(gGhCs=Cq;frWP!4gR(__N`@sNcxfYkR&pZF&c#8wRl zu>eF9xhJI`No3yv_3UaB#{7Ig*pt<1ioH&ac=p@q7cs8iDQ6#vih~R zQLKhL_g^$D3@bQj}JT7gn;G3t#$XE+!)2(@);RornHpc zVj1{>F3lhJYfMspY*VK{y%xb42vPc9`lZg33ziIXZ5%(Ywff<#k$ws=7|2fM9Ux$X zu^t3|SB-&*S*9tdWPoq&!h{>H`dsR?sm6A!dDbz?rIR7rh&ifqJVKnl5zkM7)^&?3&c>V&c+ z@q0=}Ct)w@Fb|P&RQ$`9c&U>>F$>)f4n86QbQN!`=)ZAwDN=fPoMx`EmpW@MIKaS$ zw`T7(^>Rv<%((n1Q~cU|dpgQ)0LFey6ew*A_SLkGdqoOR_x$-Wex>Cr`q2V3`fZsr zK+mCd#evtzfrdx;-cIYHr7!@Jr*TYaHDjm&d3gJY+8`|-BHNW;r4R`e>WISA_avH4 zsSt6UgRa)u-M!1V%*Y0Gy!%-|zTnXbR-dIXO>5H)nl565e2WiaF&=1JB^AiE%>r@* ztNKdNH-4x(e5Z8XOsK^oRsaAyZ*kt;5y#%RL72%hU1*>7sj z#DgB%`>Q8EeWuiB7pXbX8d+?w^K%gsXH0`mo#=@5x$j5bI+t&FkS|DOH&!qaWIMY> zxz>EN^FA8EsX5Gp(Pa?)H%X+f9MVv*82uC3USKpko#%55YnN9MW{$6Bfa7`c_m>q! zVszT2U5^cYoZcf>(I&6kUTwT5eh(QDJx0pzsZI7Fb zWj)bopE?c&8|0lSN}^C=GWakx$%2zNB^PvQ6PMejJE{>j^AWF7Lop$bvhm`0*9*p_ z&ZfJ%9XGv14<<8CCT?GeHP$_d^u0HcI$pqhj<3IArs#NN29K!bDaF1H#bZuOe|owD z;Of=OF=nw7PjW9H&4BYjwpHwVPv%sKX zA_#Vycbgv&X~oq|ZQRbgMB%BT7_fEFH6-l@f>(~wY4~t1hviZ6R7yRZd{9wD|pe z%%kd5hpKF0YteGO6>L=P%f+O0!gz(=S0f$ix-w|fuRqSbbm$69^aQz6LR_Bhr0CPqgMWI_9f{#j z(suo~*+dkVre`SWVa<7U04~5lf zRau|{SqN~D`$$dW-a`#Vv`D!k6Bv|Eh0%5^CutWGv4`-GkWAWl#X_F|UUh)sM&jbK z-VimbTZ*$Gn`kqD+*S^F+>D0;4!>ipFvFm+>t3j(YhKvmljgw4x3x^=CF8YPW!%nw zizjpX+#V&hyDd>NAZ#dt7&TuWU8Fzb;V;3fVD{Ne-FTvq<+A$~V{3+?YVcICGwSfz zda86;q~$36*zs6mkU|kXd`Y9TRjzbA-EY|Wj?SmILm@bTHmqWHG?_6WjgHbxy zsaE88a>qjfS*&w|j_hTxstUOp`TGWd|NfvlEpG}^DC1Q_E|<%SDrQ#l5|?dtv%6A- zXoXGU?f zegk;t!c4&T-@1o@t*vE;_uqpQ!^iVzL{)Tu??buR#=yDUrM2IlD4!4qD=rA*9m~I(5?3$GEDa`c7~@U5*kjsdNl{ ztW&&eE#EUu?)+1oFQf!A?M;D`Jx_%Z)Nn2=L& zknlFz>Q0>03@d2;8w#YHuoP^85grYd5*R>~}is&iGr&vHp`? z=nA^%yi;gW&hs6qK}k}od7oBFtB-Wof3ATIag)=- zL*#x=Fb%>d)3jRCJ1swMI!a!=A{dV8*^@Ua(-Y1qiZ+c@d)R#(0X|E6`a=Na#KdK7 zd~^i2bu$5#k7*p<@Ph9TzPjGiaDYotfTpdP@jE4kc(p>6?VywyKRO^O>#0HVrV|$KaSrUt&{(N?@p+UTRVZjy zug9fi)ooOQM0epN6kTkr}tz2d6_nUQI`5tFKRBkn&#QU%^`Qzwb zJs_mL>@u|MCSE)A8oo|f0Xa-e%|3Jescw%fS42utBo6k+03c2J3(ES(OoFO>5eS2!BmGusPWRSevlU9td14%HRN)jN*mQ;4h#c2R`K} zWCkX+Fym5f{SYZdy%1UW(l*j&!Ug?WtT_F4Bt`Tp;RvE37DVGU>|7BYp{JW0sN?br z`Lc*!OT)tE+l`CuPFA1}OFFTHv`|Ht0&OFhFbv1xZ?Y`k`tnX^a^s9Ly{8D=d8$-R z&ZyslEV}?a+@$ZIqxaqNDCOpEQqOmBBsU7h8P_2Rw@D>p`0WMYk0bi4(qVvdu%Ju`G^vL)F))VMb|U~c*f=KH12TQ^YJ(9}#LTmR zW%eiK&vr?pkLkO}mC{C5$wZ$+$JF*#DC>|@^({Q{SUx{hL~D5a#9L}1i52@e^>`qA zxp7^+9mBKUn_=G(x}W1uim~b{puk&*QkPgLTN5x+iNf~Kd0*pWEzcj;DV!thL; z04frES#)n}8^lKPZ*K7P3rn3825#mw4WZiK!d#b`e{K7{-^_+`7kL}Uj8nT65p=oi;! z5JDGZ`Z%86HeD)(tbiXMz0%;pn{2;X_pRa&YJ(6XN(t$4jw$ydeUjH$KdEl>Bx znhsk3a0;&7Sks43kKt8}DOICUiL{sc(Mv_wVrqnX6Q0kJ#BK4n@FJ@5-WIDUIuAO3 zcO11?FEh&}8~sr#(@n_;o~KC;FOb%jv#uvV zG1w<&McBj`_qYT;A$?Eun*aN48e#5$_*)yH8gG`x^hAV%2v>@_Bv!(Y?bzfOhJ;Wy zCfm{P7~I_gyIML|uf_ti?!6XBuPE zBAl$JoPZ1#0UVfEKJey)fDq`nbTa)+PwBrr}ih+UosQR(#VY! z`H0(+vAOM>W-Gq45ks+i#&d&|HB*}b%S%6)0Vo={VU8VazQeRYPS zx(#2iYx>+9=G&)~K9s(aDqebfq?Q3>dLf+O#xqe?vVV8{(O3rvgSfn+U&mmf!4l@6;+JQ-G%kR)a?O7vDQrP z<*SN}_QfW9c0pO(szTz1vlO)E*)@>EHIruH&vqJE0(1GjD);ks`l{Tp+!H)eAM zt$*XPMmt&2o_oR`nftMX;K`=3lFUL0g_-tGR%*<@_R7)(@RVDh1 zGL%Ut@JmHg{46bkJO3Kg;Muvz=8;wOGk5gPlYXY7Ueyve2JNl8ktxAO3VJLE)c_D& zjgb1?vNk}F)_gmqglMw~!D)Kj__NBVAfe%@EOJ@(`R_YnA4_GfH($K39G;zH9A;m? z0!qOM(~aa6I_01fHP;lc5?+`68u5yr3qBVM%3+4>TEfK!&hX#Xj3x~-1D9<}$Ut;X+mpa@s%SK;=Wy}nEfEY)O!Y(qZnxg@tGGRci{I@*bx!sD^^NUmvbw%sqw{M-M$4N2ohZ4^&ls#OsEZs&rg=h(4t zJ2ej;*Hx2Pf%b(NkC<-wuKCUVJHB#7h9I(H*9CJi-jl;(S?WfD6j>jG;(8cg6#$1M z=^N`ymd53tyYrl2sZWeg^sgI%`JVvCIfD0|+gQEKad+*_rn%-s`WIkL!#y2wy&RcOV6^*-2vUrryY`0S<^9E+l@u7{W)r3zGvFiBzQV;`Y&00ZZC>!?olc zZhj<9ch-&!85)i^7(s1fh$Lq!C@=VHsG#&ogC()(SD# z24xSAJG@xJOcf~;?pQtt$d9r>=#8YdH}LQdyz1UYwGggv*b@04ChAtk`Or3CXF3@9OHGwW}!=1UrcM*$xwJdJf%s zba>Gg^n5rz{aiGb>tE42@Vt7&pQ2NBUv@X$>E<*2+@*`9RHVIF*Z3jEJ0~<~$^0`e za(U8_s9Kh^;M_)i$$7u8V%Oi4zi$Lf7?aexe^wm&SLPwrS^hI98vi>i8pbvJ_W@yh zUAKLmV@v+)`FuC#+pM00QB>?v@-AY0TpM*DM#Avji%e%+SF~)|8eOX zMQX=TmURXRPVD7djTQd@pZd8?Zlzkfzz`0r8bP7R@1H|Q62DxfBCsCTtN3uY5RW$F zU$h#3S;6j&q$XDj4FEA2R-|Kfr^H}YWRi4)8nM)X>6*Na$dqd=zcH?NdNjDwz?{)e z5x*+buTjLlFf?P9vDJFnQ44xjeuzp5Wwn>YEZ5L!GdF$%L4BG89)2^C{(zE!SMKGb z8%chyoZXs%ckx6slf(E77EM;h97yyOv0qE(za`)88O=mDlvLt?kEOq3Z_m;a${5o9VLQJ&ENi~GU7 zA4AdvZQ;#Wv}3q{BEciFHI{wsa`?}1`kuRbs2L5&Y+*RHBNR5et@t=y83EMC^q3r0 ztmZ2Y(dl)tvZ*Y;qsxT0Vl?zcBEVSaXX{Ay;G96ZdW}A;FM}XYXI9T6BO6BKBldA= z{0yF5uXKqBLs9q^scIDYHN3Ps51FC@J$NMODAudk|2noh1ciVwfTmP_S7EtYXy$S zqq0hs%*183Pg|$eG{(Xxknm~zl?lvj{%V-BcYXt*-7b;lKDL+T+JkK35TsN)sYAL$ z&QaE_R%gc^7#vJ>vc$sq=j}3$^7O z-}4K=5`9nrFd{5v-&06-Iuo|QORgp)8iu&OTwAk<%?8QNc>8DU^CjJm$Y%I(YN6<<+W-xL3HFgoV{tgv2z z(%;9*&UW8@`>kNhE7yq&lYFQ?n@TW=%XOzRZd-oapbz~XL*Hi&POUbT?WZ7afC8fk zhJ`4>wxMGiBf=S7&=7^gQX?C8n}SY(D(;EU&EF^jzN<3T=)xzypa)yYt=4lCkJK8W zQ!v}yVXhWzO{2o&dwQao4O zFqe?aeIp4k%6+JQoLmkqOq{+}%BIMWVgZFLVLZE&H6YVvDa#mJ>I}d?hMsAuE~2W> zhY4xHPl`t+>CkT`CEx7xK%%?VBbT78SgpIe(1wr^oh@O%Xs70Cz4-vvx0Bfvz&%nSTFZ^B^QTNn-1lYbEj7srM^x1rO2=w z(h5>-8bG;SJw2`1nuI{y9M!=NqlC}&FvpOV?r{Gz ziGhElcJ)=MJT*rOOiUX|kh3B$wAQeG<4`|{41RMdYI4wYVJ+C3v;~1j-;s^E?TFN; zK3CWlGl->tNkQO{v0)+t<7zX!XFZpV*Uc8K`Rs_Kuk8<|!}WVsY!a|*fBl(o9Uhu|(1Bp1gUvD;EHc&(8W`j?@Jwy*2PV)iiv z0yihBJ*wYw_7pW;l4k%J5WbxU;@=Fp0`4>G9kYMB-f6WQ#p2aEI49dh?!ad`_V_dR z8QMC{Nyx`4<||{{;u<7s%KZ~{doyC0JGKyCc%o@0;EVR8o#`FP)CE;wo5s6fCppl5 z-HgzRXQ}vRFCP&z!s}lr7N>r2Tjt{fpLyi_EnN(O%9WrNKhr7;l>;ArcwvX+!kbw7 zo7++KpseZV7` zhqX3)`_by0+H>r7mrZh;%Y;A z85=u;<*Kp&C;K7mL*)$XQ6EXfQFY=m%tz#WI|D7tz)}JcwVWO{STXX~#+$4%pZvOB zakVSe2$Q-DE#E~|qOBY2^WN1|;t)o6RCUhaK!`J|*&+h|!wdsH`xYPLB+IPg3x7r9+!-I`C<3-$vu1W~mW!lYy+=>v(? zf68y^6N;+jlsoO)b3rr+-03UWsq4>FRs4B4FGnL3o|GyviTRaZ7#YQr>&cm0c9mD0 zbfp?~dFRVJ`mhA%L<2J!r_&I^bX|Bz!Q0XQ)kMKI|NmDqNwNA@aE1CNL$sA+4)=$==v@}EA2Nj zOWo;J&0l?I{wg>vEso&-)$Jdx(DYi~`K#;Hh#wGT2YfnQ=iwk51wPOW(Wa^P(${Zp z4{5%hb-uL4u{;ID?v&vzFAr?p#y3Ztp5SFwHyV2gUn!3s70d4!=s=b}xXCXRDUkAg zt5{Ie=WSkMZ-Vn^B#8v+?2B_zRWd5tT)7v(fMyiX!_d`6(U+eIh31bsVFgVS?RhmS zeg)B*@u~HZ)00eTG!2^)q$RU;on#Dku)0! zq!neQ^p7V1oBgU&6nYdJN@zxgk8{eJz%vPLD`ah#qYzaE0fMh~mWb`;RjfwJHd>EN zG|aVAxqbq3_KUbuBs@^3&a*Dt(#9=`PSf`XvyMxfSy=RIkyor6*VKoXSSqvZ@yjh} zv3!4NAA~QA69VGd?8WRF%Q6BxkRLc@F??Hds&SIO&XmZJ@>J%g1%90-Edr+wHYj#FMfIH?s$Ge%rqDV#-X5%DrEC|1>M?S*YPc|GKG0yhKA%JhDIv18hv?gFAg9 zj^$9~$2@a@Zc0Jeye|1nO$}#xNMJG7fx_H*?aBY%4LMlN&(>?JN?OwFJi3%fJjy#K zm&%ugfstMKNKVIu@<;2?!JJF71SW0(>$LuKqjolK#jVqE&(pj>Pa8HPl77R*ds9&X zc={{!yl{DCj5_H^EGQ&;3+$L`kOz?jQy!1Nr5ZIBAX!2M`|55^P~HRllsZawJaK8$E_O#0ixL$S9SIe67Rg);m^brj*rNx8jGL@p+A%k9MrE>49%h0u2RAm;DY;EF z6#YcY6~j@O(V|C0E>ozB1d@eP8F-4nlriCxr$&@2dU<$09g1Lnrl_u2rqHk0slEmh zjCS>J?aqHxcTM&&1viLiLCSR?eUb3WHAVP_$zih@0W__2yp{ZEvhNU)RF>i9-Mo4w z>m7yDZ=`{oD$!(V5ej$Wh43AJv!J1cpGVl}odwwv$WjF0GO2t_Q|6 zMSmU-jjQim7i|9#wcbpAzMljS;#c0>f8PA*YaTtnE<(XwXj2~6@#Z^u-6<$p&RNJ= zP7q6hpEx{M%{x^L^TVy1NyXiFacdo+DV;OLweWJLp45Q z0TGReTe2@xt|hlg^^rC(Fye-tLFmL&%kJ=03=~}hQl&CVEeWcq)9<9YlPI22gx3nm z0;4y9+|7K*dg7;k9Jk z))K_yx%8{j@gn#OZ%y|pFWZK?MgX`fcTMc4{$51Myr6jmCcK$?qCCgGP>Wmz;#6Lh zt6b)Gfudj!f+OG&BZryV)#|+Z%(2G)ySd-uzv5qu^N2r=;L~lP%Z+KFsdH?L5cmrt)FSk}2IgP)BKb>=rc`Z*-&!yEkN4X3&UndWtQM@7HF2#} z7_c9yoBjYHCyXX!&8JdEemcMIgr4R3Z9AT=^ZDCf#JvY*2dLL%1aM4kQs1lSCI5+C z#BX@6+hMieZLr76`Cj#Gmj@pLJNI&?v;Vy=4o(G29?_c8bKH&6{d! z->G$~$(7-uLtjAA+hFUO{*(j}emYN&=;|cR1&}{NyHC>x0Lag*A?A^fv4#Ci?DhUOyq zJbUgg)FSEc>(+hS45#7#6Oby-XjVq|7J5hc)#_f++wU*0PC{voUV zJv>$ZzZc2>Kbi^uUnw+2zCizfhJ%GQO=|Stz{A5WFxdXnSBr}`g#CZ=IFn#Xbw)wO z|IA$+98lX>6C9wPug5wE)?|c#G{;95`0siH!vLOvPtO6?v?3y`6($#S4hvFk+DC)` zH0KQh1-ZFD{?F~~e?=G}7M$?@D#%7`sw|ZMBDIu&g&sy=LH&e;ZGk4mNJU#xEA^ku z`jx7WQ~s|k-cJ+={79jULPuv=!}z~4d5ZWp zwC?6V+_11tC3Arv$|E+cjJnR)DJb&6^-JsCm-qjS)b-UU*LCo_m7yVdu|ig4dV2Z; zHsAPq;1b5@&$YIQ=9E?M1wUDFaew$$?sDr|%XF_NF)%Q1q&6zD=f_X$GL6?1Fwy_K z1TFZ4h%Dq+hG+sSiFoY#H4J=1s=;rB#skqJT3TAR>EI8~`dW7L1xJ#4Yqls9=PhK* z;8j08Q6JglqAYVx5Dn6Ymyo64aEoga z&)3V=^PUa%lc-ejeW##4@_z!H$o zD^^NdTl=`yC;du^i?nvyYTR^f+f1mY>Xp@;!hm^Ta^8cVf>cwHet8Zzy20-+JqIb| zvARt@b+&c(t2-4xFM`A_>gQ<&J8D!+vn>GkNAV^aT3To-WSiUDoSMl)CNlLYHhvZL zRYOWSEveJUbsQ9*d^3a6J|!0{I~0gUD)8>F2Ts<=yvpAQYh7riK_ooX{^JVa8*IXr z14gfzFsu=hmMpU2x#@XPhbX++iZBQCcI=`4nFFs$VgdSEfk#(fcaS1E=iSjsA>FdFGN{uc3;VIPiz0ome*_S)zJYSu zwfAX$I7MWuBb(->Qk@frzV8Xws3zlsiP7)EZudXod4pI>XgFR!-4q*Qt!VqGM9VYS zamJUuFj!i*zb;?wi^%D>nu%b>5idd{=KX9r~jQx$G0idQaZA z9=j##i9dSkx7mcsR6)2|(V-8$WT?5dGiYv9&FPvs(rwc;w6NuS+r<04=`Vbe2R6&V zKiIsxw@2r{3gy{$+$yss6_#cd8g>TJ|7QP)Twm7@V`N}rf;8?J9`hw4*(@gB+pM(W zVTPKtK`;32R|UN z46c>1|Gdf53#5aJJ*gZrCAtCiq2Itu*G~lW9W}lyP|qyGlo8xS7Uf+iDfXnkS?Q7E zqg$x18;ygukUi2#%N@5jyBlNrHTiez6JK;iVOI(k!E?jHS*Bi+d4umdImD6qC9Rz! zKz`jQ$>OCBQU1n;hN(4&DR*;(+Tj>w=7)@*F9nxMiDI_qdmpQ=J=;i!Sf7X$&A|}U5sDL>wMMoX-_b``1mDbS z>N#7`oT=>3Kd`vt#vPRh{cDxqBTxTWdorij1B{bXMayFsFOB59H}-3PvH+@C?j%Of z(^bn7Pj}9MH3(_<_*7e07oVM7nL{sGPwGb9sTY-(;NmA+z>1y{ zv;xoYLs_fsUWItqqw9?WFjmstYm6Xl=s7zBmMNrVp_p-UI9?`%v#B=+ZKsQmLO1pcutZJvUVGoJiWdS8B3&`2T{v}`0!^t1(Wz{P+yg85Jzkp8l!M6` zj>}U@hd8Li#7!J{P19OCuq0+*15Ge-H%icY56XWpp@+UjmwM~WyYVCARGjW!ZB_tZ zg6*xU&hTxBf}R;Oln&m#`Sqv(CvNU&i|44eLg*&;9cC!>ZsXj&N#NP9VyzZq5|Du2 zOEquYLS9-HGoT!-T(ul)9>OFV+RO5*j#W6~GFAvx$cy4Tbu2%+d<}AJoNS(%lP6Qa@j;>z9Se_!tVEbqI=bO!&mfMFMnGMaW(Z` zPdSjwncjFXH1K?KqKeIAgCR)Qa?n~yu_3KK3)E?+r0@36Zu4Z(;IEE`isqA8wp*;2 zQyEx}hleMCtaX&IQ>!0Pb5ULH2|YZJd0ck&BlK!|he$gO_~o2q(+@srN6I@eso`p4 z#k43p1lgA#iyTeFCKoIrpNkw_v7SLQ3*jj;eixlugmEwjp^le9$g`gNi-b%NJFUpU zRi1A_{{kmaFaV=9SE?<9Z;L_VLglR zQH(I_pbLo<;r+zkd5=`&q{p+JgGPB@*|P^y9V3YCxB$iBNGCDAZY|y-g}5vK zTJ(&)t;2KF_F?wxVGBc-Sm1MKrDu=-+-y?SK7}r&N=(6ecEmKF`1rW zLx`26uQJv7=+J#o48|BFA6Dr%1EwF~N)943QQbR=q6)o|g9_FGl^r?-fvx({Bp3Xv zcQy#GXU(}uG4dUbaUKardrIlEU#wlkyKl~+obTk%^8R_QlnVXvfy$vvr2%PP-wRh# zK_|HA0jo>&*lGQWHy*G_$h~9=eG*S>V1Bc16@DZb4PkAuv3v zW8Dm_>V&t&(HULzou}5b1$7Qk#0WZn>U4iLZNHdA`hi3pmMZ$rMl%X1N)aP;htBEv z&UkyoZL8larz;LSvBu%tTP{nGyg)Ll|3cH6bgGyufs`G}c$@=6fk#j9pL{^%iSWml zg-Fw!>>d~2VC!Xl3uT+d2$H}Q`^8%19G`0^xh=j(NVpXue*+PklOpHSgrbR+mD4pewihe1V+70M$?deq%MGRMHP( zMy3tZWbezTd}p8P-)#^6E|Vc-vDk_Hc!Fvc>xnTByHP`0%KUy**^J6O0v>2c(T!Bp z5La8u_@Kj$#$(`%xT=>H;#>*FMB!rYuH#vb;8D{vJ`8F1-r*EW53MJ&4W@zZ7#j&0hnZm`8^BYJcl#y0)hQ{^s7U-5Qewvt-5XmG?cCQfxrS z2TXi|(VCWCrfi5v*1;TpA-Zj4FI8zAKsFi&R=Z-?(EA(@`7`5}5ZyY3UtO*>V+l?F zSyQ&R9{|-Ym)FB)o5Y#e&#(CnSW!~gONgk?ze*@=rJw9`>_1RVI>P|+rRNW}2S!9}hUsDdo-r`JTJv@1MQ(;z!zox zLTa@aPin{LD4>)O;D?ugA<*s6bu~9IIS+`A)$hRF!zBEkapLttBYOf@W(;GY*@5^A zsh!%XU;~B6+2HBBP)L<3RG1#6^INXPA_5bZc)aTZ_`Hi&Do?F$j`ukK$niOvU~4-O zE3}{$L7B+N?8fis-w^3k1VtOSTWO?rqS{C-(|L?-yb(qZZDQ)H#;$v-+E&}f zQ*`|_K+$!f@-1^(`el(EQS|-FjnqR?X>0V3b(V+iwb+fBuv}J~jM~&sV!yq{)$Dga zg3aVJdXF6Uz1QU>BCmz8wK>sPJ8y_O?;N==OgwIH8s<0i5i|0On%}-D#>>|a@xNP( z>JP)FW^?MXQRPKv((ZUG8%Z{3GlNhu-Dr3wKw)&7il*6|_lhjG1AYGS$f8g-o*h^Y zyt~Tya}q9bg=Jb{fZ}|2aVvlr@_7ES6py9zh)eKtos4&HkQ}ulJD@4Y3*Bwmf%fS# z$NGF!3Rme}^?IC0QETN$VO8N_=;KqZ?|CaR{ZeTx$VlCIa`TranZoA`SCo8>x_h=> z<)GeIU#FZV*r>@AN;7Osf@*xP(aRY>N-?Fz#*%|cQ*^!2SUPWwb-fQvZ;iG1q6Q_I z3{;R*VzWTLD|DsS?w529ZKSBd@|vsfI4v??$C99C&>p%K=@FE=Pg``CCinVy*$6+Qx=>V#&qEcW`Fj=CX{l3F6gUdPuepbx~9?dm$7(X-N?EN5d zE#sg_q-PQ-X+<~axI-fMxJXR+$Msepmfn_-sJFbjJpKI|+$#F`S*=T)Ud zK^umTWylK6>z;y_!x`?d+4(bYsQtiX7Du)By|kdufN3*uo$!bFwx_j0IG2!#--zK- zPfl@FcQ>)k$HkzyC1is@n_Hhlx70@?n;|yU6r}NR6F8%FG1USZrUPj=4SN!(-eFFQ z7YG+`BwLS*^@5PycVmvubDke5o}7Q)lbwwUXp+l)Rwx4K$Bf1QjZY1ipcZ%>U=s&b z&+0D|S7FpKUA9dtMa4Sy9cnk8Fk0Z{lL@VzzJEZH^LZ}>;a0bd&1xZqP}qsL^KsLf zsl@Sp`ZHqxxE>gmb6J2kN(LT}rU6E~c(qH9 z*@R_FVRZrB1cO8=d?Tb-0QhFV=)4~;NKzZyx94@){E|DzO4ppp?_xT=9ca54My!sh z{0{6u+;YQ~AsIQ|L{;sN4EnxzT+n-BeV=3I_NRN2=G`EcL+$cfIJSe?@-*y8f{D2L zqlourcaPn7l(5}%Eop&u++V98#Ato1X>*~MrR(fhlIK41^Ao&Oh-FvYlzkdB9QGQzEn(WmN9#Q7c6w-|?w=8j$}?`b`bW#Z z0}9BOpLDNIooUp^QvH#StgkSt#a6QHwdx2X8-EnI6&HaBaaTDJvFp(D!jR!IL^PVg z705eb;w$ywbcB&yws;);+0BM0ps ziy9Uwt}LtW0(`8Uz+!tOAcvxmpChmNym;*E)EEYXdNaLszq zyBdpkM&eguV>{4`?d^a4K5XVp1EtlBscVor3kCA!qdr1W6qi?7u z?tl1g-0Cy0N8C+pZToF?6-p3ZT|^S{TM0^H`cYJMUIW_u@ z?FmY%c0!tflxH;GB7ya1euF?#KK^!b2*)_%SV;)CqMB4ir#ovuBt$Z!+-^#aAt z{)FhCVTWs?_y~A+n$_+vxyx=?G~kU--}cM$eP&bEGqx! z)p#xeimJsR-%MOaF#6fDMeyw;rj52F2mkd+bfp%TX2ZIUTxJI;rCJDHMR)p7=jz(r z7l&E*^lQdv1;2e!a(x2PQx9)Ot8ZQz-R*u6FThr_LoG9l>RZPOF;USnys66nO4M?q z0~dpuMU|jp)1{;9^uQehz?cNDR^7>zpmfE#mPai66D>b673^6mK5I7U*~b0VQhiby zdq}!{be*d*h}{`UDI?(qUJ~a(>MaB5kb;$7yS9_giQ>4(Q)bIq!=H$`p`BEriq}HpysvFZ z+?Crsx$z0+1{{kif;=x)6dN3m$xA&ntXMpui&!3G6{+l|R7K3%;mrQuNS)^V99F|& z@hNn@2z{!pA^Q`ZTvR&A>r3H@?AEqu+SkJ51Te1`+B=1!o%?BXxyZG8NvRxnUZc7# z$WZOmP?&ZxNb&*(HJ8sQalSHj6_6{BTv{x`V z+%J>zNK#BONA8<);TVaxlfZ&kJk_t&_9OFj=%+Jd(;Nk+Huyfe28KJ&vgA`3sJ5pWFcdV%2BXQF}bCE z$(#a(zDc1B(avPUKC9|)7b%2XK-%;ZH*^L5R*Hljrwufdv2~4eF-N#CD7TTNCD9Zy zR5CIOA&Qh6VNEeBV)hq~gMRF3NM|foNQ{K9sfw=0fGsb`2Os@zI8e9kxac1p?R-EO zcH+J=S$GrR@hs5yOGjMI#W()z1(V4pdjla>tbSrXCz>Mp40RIeFETRSrN!A1m}LC> zH-4VqWsW1S%pxS2d9xIFGcg|+GruxJ8S*rZKt9T7>#B^@MoDv9jTB$0gtVEvjvFZs z8*J?hLrb%weec2P>;=j#_8}V%Jv&Z^P!Mm@*T%$RX`NQv-z8Ci{qM3BF8jqz(kxbA zp+D&5GeB}4smaqjQ)1}S<18srEyc-NAap&&hAbOAm8E{w&IIt)Rl+gwPNAW%`bO%I za%UJ(Q!XjZhI;FGxN_;3vZL;sjh0&SJM}jGS<#(>PZPk$y?EEM^74AGdD`OA>!hle z&!3h8EbJKp=kA5=XE>R*+LUwz`Ynwf7&d8qug4!x`J%EpaLXF!_D7UQkHrG}$sG2z zc(yi{6r`vDZyQL@_)SuuCSkWX^5ceDj&EcBn4EP7QS#OmkTBBud|$HndfQuE6-~nx61jSW4Co^RdF88x1Nm5z=ClhyiP56 zxA3Tyu8;#0c}sIrE8V~hlp{hb@bs6hB1U)nEQu1H8eYAi#nP$t<65-aX06ISRe@Ew z=W!@ck?Gddz^l!>ve=+JUjjn)m#biy@$$vJW<6})hmikFfBTD{7LY85=MR3S+lol} z0&&pfl><5{JL&U0!*>~qj(}nVPXd#@s_Cu9eo}o-3kZh!+7r?V*wD}2WNJ^nQl(w} zZ&72?mwST2Uo{@Jp4@qqT>x1do*>mH@lFsq`dFMs}?FitiTCN^86KB%#?C-ZwdLz6aJxpo^SSB&Km|8%QY-Vrh}koy^I7CXjm2K z*5-eK5y=kR^)6o`{%oe8a2tr*N~p2?!euu>?q`0uGBO2B-kYT9+rR2j^B5v zwZ&!!Vck>uEcC6wB zgI{byeFCr9Gp(#Wt6zD7{fqr0e{ELak5EFoPKn%48sFq>vm_C^LM-Q%lc?w4b(DIt zVpS$Y(`4C{?Or|PK(IP=k3%twhxr?_3gf}OG96KnD%*cJj7bXHVv(}W@M#|JYYaWT zTEQB4+(>y}mf)NUrwITdSFI^8@{r!RnW3;9J$1@FRxaY9{eZ~O0=N!-USBtO>>tmT zA+bW2$Sxv_8&n3SzX;JtgAmg_B`S_D)Llnem5XzYK*prp(ED-*DKh|^s97Fi+uloiw{0mChSES!i z^X(4!=e1A6|AGnfeGt6r{#IrUi2nbA9&tum|AsjPO3KTFEME={!Qlzq5Tm~N|DZ0| zwkCZ)ZUwQAMGz_`EzpNbEvx1JH(e1`q0__xw*f9yJnEy&M`;CxU{kICnYA#diphstfR7`0$Ivf;z}7k{)TneNu4*j{m?M`2d5J2jFVi^oe0E{HlXeCickMZtWJA zCer_WXZ5E>xk;`laQpuI%Hp|P=lUVCF~3xe?mK+{>NVzf$gdoZtaL6H3y{V@y!>8i zS-Qay8hEL?poRybBH^_0{ZZqKvXO)D(+4vnHto58X{lqqrIT*?X>rwn7goa94yM(A z-^d8=QgJDo#Bb(0&F)gHs}#yoK%d9 z?O%Oe{~Atf7>s!96D-@M==aA`|EE$)?Kn;mBaZ!AV%??HWqb}k65=4`U#k%J+ALR1 z|5(KO-N&I$h_}b&UrpG1XPY*26oxV@m)zN%S^-J4)w*fcMf_xVl>bAw>!%cBVEJF< z!%w({HDzd{dcZpA!8OettN_M`TgwmO!Pu74Z0P;c-g{E&^mmvAVEA4Y@atEKgQIfZ{`0xvm`Ug{c?fMCPD>6ykO7}b zGk2h1L9ev5bbk#DNawOv&sYNla~4`DX`aK9EpOnGi!;~DfYRe@38z2TbG_BuM<|mP z@8YEiwbCp-iDG&Fnx!+Zq#50=357fs1v7Muf?z9ut%!Rf9reZU8~_D{?=5A|Mz!y= z&Np-Otr&rm3Hr@WC!9l=3Qz{=v*~Ic$ZY&c0jQexi$;-AKUuq8z+;I*8?9$?poi@b z<^Wg&YH>4o4qsRQ+_w8Uq5kUk%#9@cA`0p98Qhd_QTK6&j$KckoLY3-GQVX_ABe+Y zq>IbTn^Ih*Ln=}A>4^N+*4G;)fSp8|EEp25I{pEwB~^7JZiDV~ z9aCzNX>nvRmd20V_F7_4NbO&z0{?aG_^*)^poy$tI#oJ=H4i$j1S9A3D=Ju$3D!ro2?2VC03=R^?_G`kv=R-W;sY8r#HT@{4Ap z`YkWjT3cwUwZp^VJueU0FeIHGSFis7fY_6rwoMcvwEo~upNGvKDhj1p3j7B&nQ-c1 zaAYL17&0LJ;@yRs@0&>a=&lqBpYV8GvpjxMwUMhY0%?|1IMIiB$Z{&3b7ab=@?Iq` zv)6dX2S}&syu?#6S#@W)cHt6vNl$=Cc@2Ne2z!Bu4nzLGSOTgs+Fr{!iHLhUR ze~FzR%MvK?x;cS^1fkjRif=GH8h%etPoHhImfss)TbzfNdbT21{|7?yE7IIp!sA5< zX4seaDzFk*dMBQrJX3;5>Am?vw>DZiWMrpU2)_)8+tgc~vRjdCcLupE*cD-AdS1T> zztog{1OvPj4orU2>EcnP-Y>ZCu}jtrea4gunO=RBjHY5vMMB4&YzP_!5to{Lb!#Yh z>nk*`#iafpJL~VZ8-$NrGpd(&fz--esz#B}NFk!19~$cG-!W=b_Von6u`d28n__$n zX+V7y=$WaG)@f#D*6)1#N#^V;LLB?Mr!#i_`*zg5l}ie7GoMIiq7DbcHXE`>&L~3e z7$4jep--4;9xS7z+^DRb{BNnj2C>^k6_eHauQM627~zq}Vj}x?2haJ56ot`fpVo(n zqC7`N*WTzFgBnR!&tiA?nX~*FF{tQ)BmV1K z{SfEI(?W4Hs9mg*V!{>mg9rwQ7Ea?7&SWQeRAYhxG4M7Ql+8e_&i

^Ib_R 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 T$&RZBy&q~D-ACSg^x}U3(a_N^ diff --git a/docs/securityGuide.md b/docs/securityGuide.md index 166a9e2..e8a72e2 100644 --- a/docs/securityGuide.md +++ b/docs/securityGuide.md @@ -88,11 +88,11 @@ VPC Configuration: **Security Groups:** -| Name | ID | Rules | -|---------------|-----------|-------------------------------------------------| -| Lambda-SG | sg-1234 | Allow outbound: 5432 (RDS Proxy) | -| RDS-Proxy-SG | sg-5678 | Allow inbound: 5432 from Lambda-SG | -| Default-SG | sg-default| Block all inbound, allow outbound | +| Name | Rules | +|---------------|-------------------------------------------------| +| Lambda-SG | Allow outbound: 5432 (RDS Proxy) | +| RDS-Proxy-SG | Allow inbound: 5432 from Lambda-SG | +| Default-SG | Block all inbound, allow outbound | **NACLs:** - Default NACLs in use From db2b6c69c97b47d90b5bd5fb8d98cec21888f766 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 25 Feb 2025 13:44:54 -0800 Subject: [PATCH 078/111] added chat logs feat to userGuide --- docs/images/instructor-chat-history.png | Bin 0 -> 129209 bytes docs/userGuide.md | 6 ++++++ 2 files changed, 6 insertions(+) create mode 100644 docs/images/instructor-chat-history.png diff --git a/docs/images/instructor-chat-history.png b/docs/images/instructor-chat-history.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9381c6bdc79ba2a57b0115cf23ad8b0d29c070 GIT binary patch literal 129209 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䅿S8m@Ky79dzaM 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 literal 0 HcmV?d00001 diff --git a/docs/userGuide.md b/docs/userGuide.md index ca941b4..10a4620 100644 --- a/docs/userGuide.md +++ b/docs/userGuide.md @@ -78,6 +78,12 @@ Clicking the "View Students" tab leads to a page where the instructor can view a The instructor can then click on a student which takes them to that student's chat logs for every module in the course. Each tab represents a different module. Different conversations with the LLM are rendered as different drop downs: ![image](./images/instructor-view-student-logs.png) + + +Clicking the "Chat History" tab directs the instructor to a dedicated page where they can request a document containing the chat logs for all course sessions. Once the chat log file has been successfully generated, it will be displayed on this page, complete with the generation timestamp and a download option, allowing the instructor to easily access and save the chat logs locally if desired. If the user navigates to another screen while the request is processing, they will receive a notification once the file is ready, indicating that the chat logs are available for download: +![image](./images/instructor-chat-history.png) + + ## Student View Upon logging in as an student, they see the following home page: ![image](./images/student-home-page.png) From 998050557c55e53993d4e04c169f5179a2b0c407 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Tue, 25 Feb 2025 19:12:28 -0800 Subject: [PATCH 079/111] s3 workflow diagram included in securityGuide --- docs/images/s3-workflow.png | Bin 0 -> 170852 bytes docs/securityGuide.md | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 docs/images/s3-workflow.png diff --git a/docs/images/s3-workflow.png b/docs/images/s3-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..7168dfdc8a0d69d386d2f20d30da0d897b392e7d GIT binary patch literal 170852 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 Thvn*R3_#%N>gTe~DWM4fkCByQ literal 0 HcmV?d00001 diff --git a/docs/securityGuide.md b/docs/securityGuide.md index e8a72e2..99ae075 100644 --- a/docs/securityGuide.md +++ b/docs/securityGuide.md @@ -56,6 +56,29 @@ VPC Configuration: - Accessed via NAT Gateway through Lambda functions - No internet routing through NAT Gateway + Explanation of S3 Usage: + + ![S3 Workflow Diagram](images/s3-workflow.png) + + The above diagram illustrates the use of S3 pre-signed URLs in our architecture. The process works as follows: + + 1. Client Request: The client first requests a pre-signed URL by making an API call to the Amazon API Gateway + + 2. Pre-Signed URL Generation: The API Gateway invokes an AWS Lambda function, which is responsible for generating the pre-signed URL. The Lambda function checks for the appropriate permissions (PutObject action) for the requested S3 bucket + + 3. Permission Validation: If permissions are validated, the Lambda function returns the generated pre-signed URL to the client + + 4. File Upload: The client uses this pre-signed URL to upload files directly to S3, bypassing the need for the server to handle large file uploads. This approach ensures: + + - Secure, time-limited access to the S3 bucket without exposing long-term credentials + + - Offloading file transfer workload from backend servers, reducing latency and cost + +Additional security measures: +- All data is encrypted at rest using SSE-S3 (AES-256) +- Public access is blocked for all S3 buckets +- SSL connections are enforced for secure data transfer + - **API Gateway:** - Deployed in AWS public cloud space - Protected by regional security controls From a56f10347a8a374aa771a9543e5c157d6cf86c00 Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 26 Feb 2025 11:17:32 -0800 Subject: [PATCH 080/111] updated WAF metricName --- cdk/lib/api-gateway-stack.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk/lib/api-gateway-stack.ts b/cdk/lib/api-gateway-stack.ts index b8573c0..9cf34bd 100644 --- a/cdk/lib/api-gateway-stack.ts +++ b/cdk/lib/api-gateway-stack.ts @@ -1628,7 +1628,7 @@ export class ApiGatewayStack extends cdk.Stack { visibilityConfig: { sampledRequestsEnabled: true, cloudWatchMetricsEnabled: true, - metricName: "digitalstrategyassistant-firewall", + metricName: "ailearningassistant-firewall", }, rules: [ { From e7b60da0a31fa89d93f281c4c1aadb41707fd52d Mon Sep 17 00:00:00 2001 From: Nikhil Sinclair Date: Wed, 26 Feb 2025 16:18:10 -0800 Subject: [PATCH 081/111] updated securityGuide --- docs/images/NetworkDiagram.png | Bin 70552 -> 176965 bytes docs/securityGuide.md | 123 +++++++++++++++++++-------------- 2 files changed, 72 insertions(+), 51 deletions(-) diff --git a/docs/images/NetworkDiagram.png b/docs/images/NetworkDiagram.png index a9911283e2429d879c6f961a541ca710951c0a8f..39536d9cb403a48c50275ced628e5e23f44ba2d0 100644 GIT binary patch literal 176965 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 TD#hf5zks5pepjtj1sd`%IDWDv diff --git a/docs/images/instructor-edit-concept.png b/docs/images/instructor-edit-concept.png index 45265047375aca5b12c4fee9b5a7ff3d1fa2ce77..8a5275f9ad4d380a347e3efccfe2fbb689c559d8 100644 GIT binary patch literal 120055 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Ï17us4y-k@UZRhoZycGBn;hPWo( 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Ð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�y*7kYD+*PG}{c#IkcaMX^mxs=Qf&WOidtQ1S^ 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 literal 74537 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 z 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 diff --git a/docs/images/instructor-edit-modules.png b/docs/images/instructor-edit-modules.png index ed19ff95018365b6240e83fd09dc92278f98c569..c64efcb552312111717c1f435895caca143236cc 100644 GIT binary patch literal 130242 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 z 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 z�L_EK|N+t?L$PH0cN}ZO6Wm#nK^UQ8e>v8q+w$TqFfP@>*icwA@(vNtdBY64Ddb z9=p~=%Ym%mfXsGMPejzpvXF;0@+({xnX)PX`(v-?0cQT%;3@IT2KW8yJ(~f9Oio&w zvCc~6V2%nc_yf7}kGRsB5^5UDy^1~cKEs1N{!?-_KC>IpA#+OUwS9aWmz4eMcG&*0 zLS~s9X#UB3n>3}qA%P+ZH@27>kBP^M9>>uaWwM5RGy^IS(q#vs=!qqo*Fl=YZyjpW zZ67YA7wRpRYyUY29wk2-e`=*Tv}BN0`napJ{-b{zSP7CR>$zb1P+7u+Z8aA$l1%+hm3!JK@OU}Ane<1n<)G?PHxKW`HTcqGo=rof;wTAwcfPYJ)TgZ+2-G5P=!3syQO z4ZwX>#{1i3p$gM4MD}m~c+kPBqX%_s;wb7I8yb3{G!U2OEH6{vKB4WXQ}{5swj?#o z{zEpOP1@@|%8SygV)n}q+EqiPg((NEkdq03i$RV}YmSoSPSaHTFM?I9!|yKCs6J%1 ztcMT+Nq%ls?(dtxwX5NwL6g_`!Z^D_^}MI|uM0^fY{M#YfxJ?sXmNAP-b&sgt^OK7 zi7rKlAy|KACq#@(a&}Par|LRgwrmWV^v0D+-rVRAHfJs~g3}M%CMX=7#mvP(aD#I_ zkuy7Ta`pqbqobxC+AUCJeo@xT<(ydgOS4qJJHJseUFYlYK-xY){{`!KE2?37xO zstji8=|Qpg;@Y*A9wJ*GuK}0Y8|AOHJlrQrf`$T$UXiOdNjB~r?6$aW@Brusl9r-r<(yt*)#CuuTIKXMT7lsmLYPgbbRBuG>*!bIkLNx$F1B zU+1>wDUZ}Bx6O`DZQ536bqLxw&JL}6%9qWFb+W2ZsCqklE%T^{Zdf3Zn>u|Ae-hO% zIjk$h6eE$)o2ygKF2-rLY??(ziQFpVch^kEQ|o7Ye0Asbr}xw_ zx$j(L_fkMuWhm2dA&?`hsYL(gmthKQ{>qAm2A8IBS@Q0pT(UhL!M6p$&WN#S=%OQO zS^Ry5u=+jl4*wWss8~op_FhhZkk?&MZIunIQ@3I=e~Ri7d9mQGRm@H~&S)RXucoZ# zu4xslO^)cIh%dI@>?&$&D~SB~ehrmOGtTbhlu_=gr9BDj7dBtGJ&lr^eHCe4Zw;NS z{(M+xTlPux5}!U{0I+kw7W5V7`MVO10|jG8+N;&1MVvssdvjF<4IC9NRaqNrgj^YRU_!r_~n7j%~RGlfI5*d?3C*5aYgcLFnE3BpKNaB@!k9Tesc}F|LI- zMY9AG3rof*8LdA;(`_xWRaIt3?4Tby5%Ht1>F{{z0=!IgN65S@^{S{x;w8mlWC)XO}XS*S3r&_zY(U0@8TG z@5OUhjGLae$JpN;<*;E-l*^g<^~y@u`%AR^^oOIM0