diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Collab_Reposit.iml b/.idea/Collab_Reposit.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/Collab_Reposit.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml new file mode 100644 index 0000000..de89dad --- /dev/null +++ b/.idea/caches/deviceStreaming.xml @@ -0,0 +1,1077 @@ + + + + + + \ No newline at end of file diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..c61ea33 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..cf90582 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..123909b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/exportToHTML/.gitignore.html b/exportToHTML/.gitignore.html new file mode 100644 index 0000000..d5a1b08 --- /dev/null +++ b/exportToHTML/.gitignore.html @@ -0,0 +1,21 @@ + + +.gitignore + + + + + +
+ +.gitignore +
+
# Default ignored files
+/shelf/
+/workspace.xml
+
+ + \ No newline at end of file diff --git a/exportToHTML/Collab_Reposit.iml.html b/exportToHTML/Collab_Reposit.iml.html new file mode 100644 index 0000000..179637a --- /dev/null +++ b/exportToHTML/Collab_Reposit.iml.html @@ -0,0 +1,28 @@ + + +Collab_Reposit.iml + + + + + +
+ +Collab_Reposit.iml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+ + \ No newline at end of file diff --git a/exportToHTML/README.md.html b/exportToHTML/README.md.html new file mode 100644 index 0000000..aa79748 --- /dev/null +++ b/exportToHTML/README.md.html @@ -0,0 +1,21 @@ + + +README.md + + + + + +
+ +README.md +
+
# Collab_Reposit
+The place to discuss plans and share ideas for the game.
+
+ + \ No newline at end of file diff --git a/exportToHTML/aws.yml.html b/exportToHTML/aws.yml.html new file mode 100644 index 0000000..3114100 --- /dev/null +++ b/exportToHTML/aws.yml.html @@ -0,0 +1,116 @@ + + +aws.yml + + + + + +
+ +aws.yml +
+
# This workflow will build and push a new container image to Amazon ECR,
+# and then will deploy a new task definition to Amazon ECS, when there is a push to the "master" branch.
+#
+# To use this workflow, you will need to complete the following set-up steps:
+#
+# 1. Create an ECR repository to store your images.
+#    For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`.
+#    Replace the value of the `ECR_REPOSITORY` environment variable in the workflow below with your repository's name.
+#    Replace the value of the `AWS_REGION` environment variable in the workflow below with your repository's region.
+#
+# 2. Create an ECS task definition, an ECS cluster, and an ECS service.
+#    For example, follow the Getting Started guide on the ECS console:
+#      https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun
+#    Replace the value of the `ECS_SERVICE` environment variable in the workflow below with the name you set for the Amazon ECS service.
+#    Replace the value of the `ECS_CLUSTER` environment variable in the workflow below with the name you set for the cluster.
+#
+# 3. Store your ECS task definition as a JSON file in your repository.
+#    The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`.
+#    Replace the value of the `ECS_TASK_DEFINITION` environment variable in the workflow below with the path to the JSON file.
+#    Replace the value of the `CONTAINER_NAME` environment variable in the workflow below with the name of the container
+#    in the `containerDefinitions` section of the task definition.
+#
+# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.
+#    See the documentation for each action used below for the recommended IAM policies for this IAM user,
+#    and best practices on handling the access key credentials.
+
+name: Deploy to Amazon ECS
+
+on:
+  push:
+    branches: [ "master" ]
+
+env:
+  AWS_REGION: MY_AWS_REGION                   # set this to your preferred AWS region, e.g. us-west-1
+  ECR_REPOSITORY: MY_ECR_REPOSITORY           # set this to your Amazon ECR repository name
+  ECS_SERVICE: MY_ECS_SERVICE                 # set this to your Amazon ECS service name
+  ECS_CLUSTER: MY_ECS_CLUSTER                 # set this to your Amazon ECS cluster name
+  ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition
+                                               # file, e.g. .aws/task-definition.json
+  CONTAINER_NAME: MY_CONTAINER_NAME           # set this to the name of the container in the
+                                               # containerDefinitions section of your task definition
+
+permissions:
+  contents: read
+
+jobs:
+  deploy:
+    name: Deploy
+    runs-on: ubuntu-latest
+    environment: production
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v4
+
+    - name: Configure AWS credentials
+      uses: aws-actions/configure-aws-credentials@v1
+      with:
+        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+        aws-region: ${{ env.AWS_REGION }}
+
+    - name: Login to Amazon ECR
+      id: login-ecr
+      uses: aws-actions/amazon-ecr-login@v1
+
+    - name: Build, tag, and push image to Amazon ECR
+      id: build-image
+      env:
+        ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
+        IMAGE_TAG: ${{ github.sha }}
+      run: |
+        # Build a docker container and
+        # push it to ECR so that it can
+        # be deployed to ECS.
+        docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
+        docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
+        echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
+
+    - name: Fill in the new image ID in the Amazon ECS task definition
+      id: task-def
+      uses: aws-actions/amazon-ecs-render-task-definition@v1
+      with:
+        task-definition: ${{ env.ECS_TASK_DEFINITION }}
+        container-name: ${{ env.CONTAINER_NAME }}
+        image: ${{ steps.build-image.outputs.image }}
+
+    - name: Deploy Amazon ECS task definition
+      uses: aws-actions/amazon-ecs-deploy-task-definition@v1
+      with:
+        task-definition: ${{ steps.task-def.outputs.task-definition }}
+        service: ${{ env.ECS_SERVICE }}
+        cluster: ${{ env.ECS_CLUSTER }}
+        wait-for-service-stability: true
+
+ + \ No newline at end of file diff --git a/exportToHTML/deviceStreaming.xml.html b/exportToHTML/deviceStreaming.xml.html new file mode 100644 index 0000000..01c9a88 --- /dev/null +++ b/exportToHTML/deviceStreaming.xml.html @@ -0,0 +1,1096 @@ + + +deviceStreaming.xml + + + + + +
+ +deviceStreaming.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DeviceStreaming">
+    <option name="deviceSelectionList">
+      <list>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="Sony" />
+          <option name="codename" value="A402SO" />
+          <option name="id" value="A402SO" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Sony" />
+          <option name="name" value="Xperia 10" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2520" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="27" />
+          <option name="brand" value="DOCOMO" />
+          <option name="codename" value="F01L" />
+          <option name="id" value="F01L" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="FUJITSU" />
+          <option name="name" value="F-01L" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1280" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="OnePlus" />
+          <option name="codename" value="OP535DL1" />
+          <option name="id" value="OP535DL1" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="OnePlus" />
+          <option name="name" value="CPH2409" />
+          <option name="screenDensity" value="401" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2412" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="OnePlus" />
+          <option name="codename" value="OP5552L1" />
+          <option name="id" value="OP5552L1" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="OnePlus" />
+          <option name="name" value="CPH2415" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2412" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="OnePlus" />
+          <option name="codename" value="OP5552L1" />
+          <option name="id" value="OP5552L1" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="OnePlus" />
+          <option name="name" value="CPH2415" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2412" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="OPPO" />
+          <option name="codename" value="OP573DL1" />
+          <option name="id" value="OP573DL1" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="OPPO" />
+          <option name="name" value="CPH2557" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="28" />
+          <option name="brand" value="DOCOMO" />
+          <option name="codename" value="SH-01L" />
+          <option name="id" value="SH-01L" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="SHARP" />
+          <option name="name" value="AQUOS sense2 SH-01L" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2160" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="Lenovo" />
+          <option name="codename" value="TB330FU" />
+          <option name="formFactor" value="Tablet" />
+          <option name="id" value="TB330FU" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Lenovo" />
+          <option name="name" value="Tab M11" />
+          <option name="screenDensity" value="240" />
+          <option name="screenX" value="1200" />
+          <option name="screenY" value="1920" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a05s" />
+          <option name="id" value="a05s" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A05s" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a06" />
+          <option name="id" value="a06" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy A06" />
+          <option name="screenDensity" value="300" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a14m" />
+          <option name="id" value="a14m" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-A145R" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2408" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a15" />
+          <option name="id" value="a15" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A15" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a15x" />
+          <option name="id" value="a15x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A15 5G" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a16" />
+          <option name="id" value="a16" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-A165M" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a16x" />
+          <option name="id" value="a16x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A16 5G" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a26x" />
+          <option name="id" value="a26x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-A266B" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a35x" />
+          <option name="id" value="a35x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A35" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a35x" />
+          <option name="id" value="a35x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="A35" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a36xq" />
+          <option name="id" value="a36xq" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-A366E" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="a56x" />
+          <option name="id" value="a56x" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-A566E" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="akita" />
+          <option name="id" value="akita" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 8a" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="akita" />
+          <option name="id" value="akita" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 8a" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="arcfox" />
+          <option name="id" value="arcfox" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="razr plus 2024" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="1272" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="austin" />
+          <option name="id" value="austin" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g 5G (2022)" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="b0q" />
+          <option name="id" value="b0q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S22 Ultra" />
+          <option name="screenDensity" value="600" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3088" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="b6q" />
+          <option name="id" value="b6q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Flip 6" />
+          <option name="screenDensity" value="340" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2640" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="google" />
+          <option name="codename" value="blazer" />
+          <option name="id" value="blazer" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 10 Pro" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2410" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="32" />
+          <option name="brand" value="google" />
+          <option name="codename" value="bluejay" />
+          <option name="id" value="bluejay" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 6a" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="caiman" />
+          <option name="id" value="caiman" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="960" />
+          <option name="screenY" value="2142" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="caiman" />
+          <option name="id" value="caiman" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="960" />
+          <option name="screenY" value="2142" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="comet" />
+          <option name="default" value="true" />
+          <option name="id" value="comet" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro Fold" />
+          <option name="screenDensity" value="390" />
+          <option name="screenX" value="2076" />
+          <option name="screenY" value="2152" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="comet" />
+          <option name="default" value="true" />
+          <option name="id" value="comet" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro Fold" />
+          <option name="screenDensity" value="390" />
+          <option name="screenX" value="2076" />
+          <option name="screenY" value="2152" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="29" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="crownqlteue" />
+          <option name="id" value="crownqlteue" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Note9" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="2220" />
+          <option name="screenY" value="1080" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="dm1q" />
+          <option name="id" value="dm1q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="S23" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="dm2q" />
+          <option name="id" value="dm2q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="S23 Plus" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="dm3q" />
+          <option name="id" value="dm3q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S23 Ultra" />
+          <option name="screenDensity" value="600" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3088" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="dubai" />
+          <option name="id" value="dubai" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="edge 30" />
+          <option name="screenDensity" value="405" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="e1q" />
+          <option name="default" value="true" />
+          <option name="id" value="e1q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S24" />
+          <option name="screenDensity" value="480" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="e3q" />
+          <option name="id" value="e3q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S24 Ultra" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3120" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="e3q" />
+          <option name="id" value="e3q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S24 Ultra" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3120" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="eos" />
+          <option name="id" value="eos" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Eos" />
+          <option name="screenDensity" value="320" />
+          <option name="screenX" value="384" />
+          <option name="screenY" value="384" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="felix" />
+          <option name="id" value="felix" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel Fold" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="2208" />
+          <option name="screenY" value="1840" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="felix" />
+          <option name="id" value="felix" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel Fold" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="2208" />
+          <option name="screenY" value="1840" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="felix_camera" />
+          <option name="id" value="felix_camera" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel Fold (Camera-enabled)" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="2208" />
+          <option name="screenY" value="1840" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="fogona" />
+          <option name="id" value="fogona" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g play - 2024" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="fogos" />
+          <option name="id" value="fogos" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g34 5G" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="google" />
+          <option name="codename" value="frankel" />
+          <option name="id" value="frankel" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 10" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2424" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="g0q" />
+          <option name="id" value="g0q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-S906U1" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gta9pwifi" />
+          <option name="id" value="gta9pwifi" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-X210" />
+          <option name="screenDensity" value="240" />
+          <option name="screenX" value="1200" />
+          <option name="screenY" value="1920" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts7lwifi" />
+          <option name="id" value="gts7lwifi" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-T870" />
+          <option name="screenDensity" value="340" />
+          <option name="screenX" value="1600" />
+          <option name="screenY" value="2560" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts7xllite" />
+          <option name="id" value="gts7xllite" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-T738U" />
+          <option name="screenDensity" value="340" />
+          <option name="screenX" value="1600" />
+          <option name="screenY" value="2560" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts8uwifi" />
+          <option name="formFactor" value="Tablet" />
+          <option name="id" value="gts8uwifi" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Tab S8 Ultra" />
+          <option name="screenDensity" value="320" />
+          <option name="screenX" value="1848" />
+          <option name="screenY" value="2960" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts8wifi" />
+          <option name="formFactor" value="Tablet" />
+          <option name="id" value="gts8wifi" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Tab S8" />
+          <option name="screenDensity" value="274" />
+          <option name="screenX" value="1600" />
+          <option name="screenY" value="2560" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts9fe" />
+          <option name="id" value="gts9fe" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Tab S9 FE 5G" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="2304" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="gts9wifi" />
+          <option name="id" value="gts9wifi" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-X710" />
+          <option name="screenDensity" value="340" />
+          <option name="screenX" value="1600" />
+          <option name="screenY" value="2560" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="husky" />
+          <option name="id" value="husky" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 8 Pro" />
+          <option name="screenDensity" value="390" />
+          <option name="screenX" value="1008" />
+          <option name="screenY" value="2244" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="30" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="java" />
+          <option name="id" value="java" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="G20" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="kansas" />
+          <option name="id" value="kansas" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g - 2025" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1604" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="komodo" />
+          <option name="id" value="komodo" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro XL" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="1008" />
+          <option name="screenY" value="2244" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="komodo" />
+          <option name="id" value="komodo" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9 Pro XL" />
+          <option name="screenDensity" value="360" />
+          <option name="screenX" value="1008" />
+          <option name="screenY" value="2244" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="lamul" />
+          <option name="id" value="lamul" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g05" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1604" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="lion" />
+          <option name="id" value="lion" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g04" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1612" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="lynx" />
+          <option name="id" value="lynx" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 7a" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="lyriq" />
+          <option name="id" value="lyriq" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="edge 40" />
+          <option name="screenDensity" value="400" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="manaus" />
+          <option name="id" value="manaus" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="edge 40 neo" />
+          <option name="screenDensity" value="400" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="motorola" />
+          <option name="codename" value="maui" />
+          <option name="id" value="maui" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Motorola" />
+          <option name="name" value="moto g play - 2023" />
+          <option name="screenDensity" value="280" />
+          <option name="screenX" value="720" />
+          <option name="screenY" value="1600" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="google" />
+          <option name="codename" value="mustang" />
+          <option name="id" value="mustang" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 10 Pro XL" />
+          <option name="screenDensity" value="390" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2404" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="o1q" />
+          <option name="id" value="o1q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S21" />
+          <option name="screenDensity" value="421" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="31" />
+          <option name="brand" value="google" />
+          <option name="codename" value="oriole" />
+          <option name="id" value="oriole" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 6" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="pa2q" />
+          <option name="id" value="pa2q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="S25+" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="pa3q" />
+          <option name="id" value="pa3q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S25 Ultra" />
+          <option name="screenDensity" value="600" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3120" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="pa3q" />
+          <option name="id" value="pa3q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S25 Ultra" />
+          <option name="screenDensity" value="600" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3120" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="panther" />
+          <option name="id" value="panther" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 7" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="psq" />
+          <option name="id" value="psq" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S25 Edge" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1440" />
+          <option name="screenY" value="3120" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="q5q" />
+          <option name="id" value="q5q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Z Fold5" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1812" />
+          <option name="screenY" value="2176" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="q6q" />
+          <option name="id" value="q6q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy Z Fold6" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1856" />
+          <option name="screenY" value="2160" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="30" />
+          <option name="brand" value="google" />
+          <option name="codename" value="r11" />
+          <option name="formFactor" value="Wear OS" />
+          <option name="id" value="r11" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel Watch" />
+          <option name="screenDensity" value="320" />
+          <option name="screenX" value="384" />
+          <option name="screenY" value="384" />
+          <option name="type" value="WEAR_OS" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="r11q" />
+          <option name="id" value="r11q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-S711U" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="google" />
+          <option name="codename" value="rango" />
+          <option name="id" value="rango" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 10 Pro Fold" />
+          <option name="screenDensity" value="390" />
+          <option name="screenX" value="2076" />
+          <option name="screenY" value="2152" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="30" />
+          <option name="brand" value="google" />
+          <option name="codename" value="redfin" />
+          <option name="id" value="redfin" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 5" />
+          <option name="screenDensity" value="440" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2340" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="shiba" />
+          <option name="id" value="shiba" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 8" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="t2q" />
+          <option name="id" value="t2q" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="Galaxy S21 Plus" />
+          <option name="screenDensity" value="394" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2400" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="33" />
+          <option name="brand" value="google" />
+          <option name="codename" value="tangorpro" />
+          <option name="formFactor" value="Tablet" />
+          <option name="id" value="tangorpro" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel Tablet" />
+          <option name="screenDensity" value="320" />
+          <option name="screenX" value="1600" />
+          <option name="screenY" value="2560" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="tegu" />
+          <option name="id" value="tegu" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9a" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2424" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="google" />
+          <option name="codename" value="tokay" />
+          <option name="default" value="true" />
+          <option name="id" value="tokay" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2424" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="35" />
+          <option name="brand" value="google" />
+          <option name="codename" value="tokay" />
+          <option name="default" value="true" />
+          <option name="id" value="tokay" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2424" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="36" />
+          <option name="brand" value="google" />
+          <option name="codename" value="tokay" />
+          <option name="default" value="true" />
+          <option name="id" value="tokay" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Google" />
+          <option name="name" value="Pixel 9" />
+          <option name="screenDensity" value="420" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2424" />
+        </PersistentDeviceSelectionData>
+        <PersistentDeviceSelectionData>
+          <option name="api" value="34" />
+          <option name="brand" value="samsung" />
+          <option name="codename" value="xcover7" />
+          <option name="id" value="xcover7" />
+          <option name="labId" value="google" />
+          <option name="manufacturer" value="Samsung" />
+          <option name="name" value="SM-G556B" />
+          <option name="screenDensity" value="450" />
+          <option name="screenX" value="1080" />
+          <option name="screenY" value="2408" />
+        </PersistentDeviceSelectionData>
+      </list>
+    </option>
+  </component>
+</project>
+ + \ No newline at end of file diff --git a/exportToHTML/halo (3).js.html b/exportToHTML/halo (3).js.html new file mode 100644 index 0000000..b395f16 --- /dev/null +++ b/exportToHTML/halo (3).js.html @@ -0,0 +1,209 @@ + + +halo (3).js + + + + + +
+ +halo (3).js +
+
// HALO Meta-Oracle skeleton script.
+// This script defines the HALO core engine (dice roll), plugin hooks, and local storage.
+// The detailed symbol definitions (Tarot cards, runes, I Ching, etc.) and deeper synthesis logic
+// should be filled in later.
+
+(function() {
+  const STORAGE_KEY_PROFILE = 'halo_profile_v1';
+  const STORAGE_KEY_READINGS = 'halo_meta_readings_v1';
+  // Replace the placeholder with your actual API Gateway invoke URL once deployed.
+  const API_URL = 'https://YOUR_API_ID.execute-api.YOUR_REGION.amazonaws.com/readings';
+
+  // Axis definitions
+  const AXES = ['Body & Hardware','Mind & Narrative','Heart & Relationships','Domain & Magic'];
+  const VECTORS = ['Ingress','Grow','Stabilize','Release','Transmute','Witness'];
+  const TIMELINES = [
+    'Right now','Today','This week','This month','This season','This year',
+    '1–3 years','3–7 years','7–20 years','Lifetime','Generational','Meta'
+  ];
+  const ARCHETYPES = [
+    'The Fool','The Magician','The Healer','The Warrior','The Shield','The Hermit','The Lover',
+    'The Trickster','The Phoenix','The Architect','The Bridge','The Teacher','The Explorer',
+    'The Mirror','The Guardian','The Key','The Storm','The Weaver','The Sovereign'
+  ];
+
+  // Basic utility to roll a die
+  function rollDie(sides) {
+    return Math.floor(Math.random() * sides) + 1;
+  }
+
+  // Load/save profile
+  function loadProfile() {
+    try {
+      return JSON.parse(localStorage.getItem(STORAGE_KEY_PROFILE)) || {};
+    } catch (err) {
+      return {};
+    }
+  }
+
+  function saveProfile(profile) {
+    localStorage.setItem(STORAGE_KEY_PROFILE, JSON.stringify(profile));
+  }
+
+  // Load/save readings
+  function loadReadings() {
+    try {
+      return JSON.parse(localStorage.getItem(STORAGE_KEY_READINGS)) || [];
+    } catch (err) {
+      return [];
+    }
+  }
+
+  function saveReadings(readings) {
+    localStorage.setItem(STORAGE_KEY_READINGS, JSON.stringify(readings));
+  }
+
+  // Fire-and-forget sync to server if API_URL is set.
+  async function syncReadingToServer(reading) {
+    if (!API_URL || API_URL.includes('YOUR_API_ID')) {
+      return;
+    }
+    try {
+      const payload = {
+        userId: reading.user?.name || 'anonymous',
+        reading
+      };
+      await fetch(API_URL, {
+        method: 'POST',
+        headers: { 'Content-Type': 'application/json' },
+        body: JSON.stringify(payload)
+      });
+    } catch (err) {
+      console.warn('Sync failed', err);
+    }
+  }
+
+  // Create a new reading
+  function createReading(question, profile) {
+    const timestamp = new Date().toISOString();
+    const d4 = rollDie(4);
+    const d6 = rollDie(6);
+    const d12 = rollDie(12);
+    const d20 = rollDie(20);
+
+    const reading = {
+      id: `${Date.now().toString(36)}-${Math.random().toString(16).slice(2,8)}`,
+      question: question || '',
+      created_at: timestamp,
+      halo: {
+        axis: d4,
+        vector: d6,
+        timeline: d12,
+        archetype: d20,
+        dice: { d4, d6, d12, d20 }
+      },
+      user: profile,
+      // plugin results can be added here in the future
+    };
+
+    const readings = loadReadings();
+    readings.push(reading);
+    saveReadings(readings);
+    syncReadingToServer(reading);
+    return reading;
+  }
+
+  // Render functions
+  function renderHistory() {
+    const historyEl = document.getElementById('history');
+    const readings = loadReadings();
+    if (!readings.length) {
+      historyEl.innerHTML = '<p>No readings yet.</p>';
+      return;
+    }
+    const rows = readings.slice().reverse().map(reading => {
+      const date = new Date(reading.created_at).toLocaleString();
+      const axis = AXES[(reading.halo.axis - 1) % AXES.length];
+      const vector = VECTORS[(reading.halo.vector - 1) % VECTORS.length];
+      const timeline = TIMELINES[(reading.halo.timeline - 1) % TIMELINES.length];
+      const archetype = ARCHETYPES[(reading.halo.archetype - 1) % ARCHETYPES.length];
+      return `
+        <tr>
+          <td>${date}</td>
+          <td>${axis}</td>
+          <td>${vector}</td>
+          <td>${timeline}</td>
+          <td>${archetype}</td>
+        </tr>
+      `;
+    }).join('');
+    historyEl.innerHTML = `
+      <table>
+        <thead>
+          <tr><th>When</th><th>Axis</th><th>Vector</th><th>Timeline</th><th>Archetype</th></tr>
+        </thead>
+        <tbody>${rows}</tbody>
+      </table>
+    `;
+  }
+
+  function renderCurrentReading(reading) {
+    const container = document.getElementById('current-reading');
+    if (!reading) {
+      container.innerHTML = '';
+      return;
+    }
+    const halo = reading.halo;
+    container.innerHTML = `
+      <h3>HALO Roll</h3>
+      <p><strong>Axis:</strong> ${AXES[(halo.axis - 1) % AXES.length]} (${halo.dice.d4})</p>
+      <p><strong>Vector:</strong> ${VECTORS[(halo.vector - 1) % VECTORS.length]} (${halo.dice.d6})</p>
+      <p><strong>Timeline:</strong> ${TIMELINES[(halo.timeline - 1) % TIMELINES.length]} (${halo.dice.d12})</p>
+      <p><strong>Archetype:</strong> ${ARCHETYPES[(halo.archetype - 1) % ARCHETYPES.length]} (${halo.dice.d20})</p>
+      <p><em>This is a bare-bones skeleton. Interpretations and plugin hooks go here.</em></p>
+    `;
+  }
+
+  // Initialize UI
+  function init() {
+    const profile = loadProfile();
+    document.getElementById('profile-name').value = profile.name || '';
+    document.getElementById('profile-sun').value = profile.sun || '';
+    document.getElementById('profile-moon').value = profile.moon || '';
+    document.getElementById('profile-rising').value = profile.rising || '';
+
+    document.getElementById('save-profile').addEventListener('click', () => {
+      const p = {
+        name: document.getElementById('profile-name').value.trim(),
+        sun: document.getElementById('profile-sun').value.trim(),
+        moon: document.getElementById('profile-moon').value.trim(),
+        rising: document.getElementById('profile-rising').value.trim()
+      };
+      saveProfile(p);
+    });
+
+    document.getElementById('roll-btn').addEventListener('click', () => {
+      const q = document.getElementById('question').value.trim();
+      const p = loadProfile();
+      const r = createReading(q, p);
+      renderCurrentReading(r);
+      renderHistory();
+    });
+
+    renderHistory();
+  }
+
+  // run
+  init();
+})();
+
+ + \ No newline at end of file diff --git a/exportToHTML/halo.js.html b/exportToHTML/halo.js.html new file mode 100644 index 0000000..1d2872c --- /dev/null +++ b/exportToHTML/halo.js.html @@ -0,0 +1,209 @@ + + +halo.js + + + + + +
+ +halo.js +
+
// HALO Meta-Oracle skeleton script.
+// This script defines the HALO core engine (dice roll), plugin hooks, and local storage.
+// The detailed symbol definitions (Tarot cards, runes, I Ching, etc.) and deeper synthesis logic
+// should be filled in later.
+
+(function() {
+  const STORAGE_KEY_PROFILE = 'halo_profile_v1';
+  const STORAGE_KEY_READINGS = 'halo_meta_readings_v1';
+  // Replace the placeholder with your actual API Gateway invoke URL once deployed.
+  const API_URL = 'https://YOUR_API_ID.execute-api.YOUR_REGION.amazonaws.com/readings';
+
+  // Axis definitions
+  const AXES = ['Body & Hardware','Mind & Narrative','Heart & Relationships','Domain & Magic'];
+  const VECTORS = ['Ingress','Grow','Stabilize','Release','Transmute','Witness'];
+  const TIMELINES = [
+    'Right now','Today','This week','This month','This season','This year',
+    '1–3 years','3–7 years','7–20 years','Lifetime','Generational','Meta'
+  ];
+  const ARCHETYPES = [
+    'The Fool','The Magician','The Healer','The Warrior','The Shield','The Hermit','The Lover',
+    'The Trickster','The Phoenix','The Architect','The Bridge','The Teacher','The Explorer',
+    'The Mirror','The Guardian','The Key','The Storm','The Weaver','The Sovereign'
+  ];
+
+  // Basic utility to roll a die
+  function rollDie(sides) {
+    return Math.floor(Math.random() * sides) + 1;
+  }
+
+  // Load/save profile
+  function loadProfile() {
+    try {
+      return JSON.parse(localStorage.getItem(STORAGE_KEY_PROFILE)) || {};
+    } catch (err) {
+      return {};
+    }
+  }
+
+  function saveProfile(profile) {
+    localStorage.setItem(STORAGE_KEY_PROFILE, JSON.stringify(profile));
+  }
+
+  // Load/save readings
+  function loadReadings() {
+    try {
+      return JSON.parse(localStorage.getItem(STORAGE_KEY_READINGS)) || [];
+    } catch (err) {
+      return [];
+    }
+  }
+
+  function saveReadings(readings) {
+    localStorage.setItem(STORAGE_KEY_READINGS, JSON.stringify(readings));
+  }
+
+  // Fire-and-forget sync to server if API_URL is set.
+  async function syncReadingToServer(reading) {
+    if (!API_URL || API_URL.includes('YOUR_API_ID')) {
+      return;
+    }
+    try {
+      const payload = {
+        userId: reading.user?.name || 'anonymous',
+        reading
+      };
+      await fetch(API_URL, {
+        method: 'POST',
+        headers: { 'Content-Type': 'application/json' },
+        body: JSON.stringify(payload)
+      });
+    } catch (err) {
+      console.warn('Sync failed', err);
+    }
+  }
+
+  // Create a new reading
+  function createReading(question, profile) {
+    const timestamp = new Date().toISOString();
+    const d4 = rollDie(4);
+    const d6 = rollDie(6);
+    const d12 = rollDie(12);
+    const d20 = rollDie(20);
+
+    const reading = {
+      id: `${Date.now().toString(36)}-${Math.random().toString(16).slice(2,8)}`,
+      question: question || '',
+      created_at: timestamp,
+      halo: {
+        axis: d4,
+        vector: d6,
+        timeline: d12,
+        archetype: d20,
+        dice: { d4, d6, d12, d20 }
+      },
+      user: profile,
+      // plugin results can be added here in the future
+    };
+
+    const readings = loadReadings();
+    readings.push(reading);
+    saveReadings(readings);
+    syncReadingToServer(reading);
+    return reading;
+  }
+
+  // Render functions
+  function renderHistory() {
+    const historyEl = document.getElementById('history');
+    const readings = loadReadings();
+    if (!readings.length) {
+      historyEl.innerHTML = '<p>No readings yet.</p>';
+      return;
+    }
+    const rows = readings.slice().reverse().map(reading => {
+      const date = new Date(reading.created_at).toLocaleString();
+      const axis = AXES[(reading.halo.axis - 1) % AXES.length];
+      const vector = VECTORS[(reading.halo.vector - 1) % VECTORS.length];
+      const timeline = TIMELINES[(reading.halo.timeline - 1) % TIMELINES.length];
+      const archetype = ARCHETYPES[(reading.halo.archetype - 1) % ARCHETYPES.length];
+      return `
+        <tr>
+          <td>${date}</td>
+          <td>${axis}</td>
+          <td>${vector}</td>
+          <td>${timeline}</td>
+          <td>${archetype}</td>
+        </tr>
+      `;
+    }).join('');
+    historyEl.innerHTML = `
+      <table>
+        <thead>
+          <tr><th>When</th><th>Axis</th><th>Vector</th><th>Timeline</th><th>Archetype</th></tr>
+        </thead>
+        <tbody>${rows}</tbody>
+      </table>
+    `;
+  }
+
+  function renderCurrentReading(reading) {
+    const container = document.getElementById('current-reading');
+    if (!reading) {
+      container.innerHTML = '';
+      return;
+    }
+    const halo = reading.halo;
+    container.innerHTML = `
+      <h3>HALO Roll</h3>
+      <p><strong>Axis:</strong> ${AXES[(halo.axis - 1) % AXES.length]} (${halo.dice.d4})</p>
+      <p><strong>Vector:</strong> ${VECTORS[(halo.vector - 1) % VECTORS.length]} (${halo.dice.d6})</p>
+      <p><strong>Timeline:</strong> ${TIMELINES[(halo.timeline - 1) % TIMELINES.length]} (${halo.dice.d12})</p>
+      <p><strong>Archetype:</strong> ${ARCHETYPES[(halo.archetype - 1) % ARCHETYPES.length]} (${halo.dice.d20})</p>
+      <p><em>This is a bare-bones skeleton. Interpretations and plugin hooks go here.</em></p>
+    `;
+  }
+
+  // Initialize UI
+  function init() {
+    const profile = loadProfile();
+    document.getElementById('profile-name').value = profile.name || '';
+    document.getElementById('profile-sun').value = profile.sun || '';
+    document.getElementById('profile-moon').value = profile.moon || '';
+    document.getElementById('profile-rising').value = profile.rising || '';
+
+    document.getElementById('save-profile').addEventListener('click', () => {
+      const p = {
+        name: document.getElementById('profile-name').value.trim(),
+        sun: document.getElementById('profile-sun').value.trim(),
+        moon: document.getElementById('profile-moon').value.trim(),
+        rising: document.getElementById('profile-rising').value.trim()
+      };
+      saveProfile(p);
+    });
+
+    document.getElementById('roll-btn').addEventListener('click', () => {
+      const q = document.getElementById('question').value.trim();
+      const p = loadProfile();
+      const r = createReading(q, p);
+      renderCurrentReading(r);
+      renderHistory();
+    });
+
+    renderHistory();
+  }
+
+  // run
+  init();
+})();
+
+ + \ No newline at end of file diff --git a/exportToHTML/index (3) (1).html.html b/exportToHTML/index (3) (1).html.html new file mode 100644 index 0000000..d49faa1 --- /dev/null +++ b/exportToHTML/index (3) (1).html.html @@ -0,0 +1,287 @@ + + +index (3) (1).html + + + + + +
+ +index (3) (1).html +
+
<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>HALO Meta-Oracle – Local Prototype</title>
+  <style>
+    body {
+      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
+        sans-serif;
+      margin: 0;
+      padding: 0;
+      background: #02030a;
+      color: #dde3ff;
+    }
+
+    .app-shell {
+      max-width: 960px;
+      margin: 0 auto;
+      padding: 1.25rem;
+    }
+
+    h1 {
+      font-size: 1.6rem;
+      margin: 0 0 0.75rem;
+    }
+
+    h2 {
+      font-size: 1.2rem;
+      margin-top: 1.5rem;
+      margin-bottom: 0.5rem;
+    }
+
+    .card {
+      background: rgba(6, 10, 30, 0.98);
+      border-radius: 0.9rem;
+      padding: 1rem 1.1rem;
+      margin-bottom: 1rem;
+      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.6);
+      border: 1px solid rgba(60, 100, 180, 0.35);
+    }
+
+    label {
+      display: block;
+      font-size: 0.85rem;
+      margin-bottom: 0.15rem;
+      opacity: 0.9;
+    }
+
+    input[type="text"],
+    textarea,
+    select {
+      width: 100%;
+      box-sizing: border-box;
+      border-radius: 0.6rem;
+      border: 1px solid rgba(132, 183, 255, 0.4);
+      padding: 0.55rem 0.65rem;
+      font-size: 0.95rem;
+      background: rgba(4, 9, 29, 0.96);
+      color: #f7fbff;
+      outline: none;
+    }
+
+    textarea {
+      min-height: 70px;
+      resize: vertical;
+    }
+
+    input::placeholder,
+    textarea::placeholder {
+      color: rgba(199, 214, 255, 0.6);
+    }
+
+    .row {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 0.75rem;
+    }
+
+    .row > .col {
+      flex: 1 1 150px;
+    }
+
+    button {
+      border-radius: 999px;
+      border: none;
+      padding: 0.55rem 1.2rem;
+      font-size: 0.95rem;
+      font-weight: 600;
+      letter-spacing: 0.02em;
+      background: linear-gradient(120deg, #355a9f, #5c4fa8, #8a4f9a);
+      color: #f3f3ff;
+      cursor: pointer;
+      margin-top: 0.5rem;
+    }
+
+    button:disabled {
+      opacity: 0.5;
+      cursor: default;
+    }
+
+    small {
+      opacity: 0.85;
+      font-size: 0.78rem;
+    }
+
+    .pill {
+      display: inline-flex;
+      align-items: center;
+      padding: 0.15rem 0.65rem;
+      border-radius: 999px;
+      border: 1px solid rgba(171, 208, 255, 0.4);
+      font-size: 0.72rem;
+      margin-right: 0.35rem;
+      margin-bottom: 0.2rem;
+      text-transform: uppercase;
+      letter-spacing: 0.06em;
+    }
+
+    .reading-grid {
+      display: grid;
+      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+      gap: 0.75rem;
+      margin-top: 0.7rem;
+    }
+
+    .reading-block {
+      border-radius: 0.75rem;
+      border: 1px dashed rgba(152, 196, 255, 0.5);
+      padding: 0.6rem 0.7rem;
+      background: rgba(9, 20, 52, 0.8);
+      font-size: 0.86rem;
+    }
+
+    .reading-block h3 {
+      font-size: 0.9rem;
+      margin: 0 0 0.3rem;
+      text-transform: uppercase;
+      letter-spacing: 0.08em;
+      opacity: 0.9;
+    }
+
+    .mono {
+      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
+        "Liberation Mono", "Courier New", monospace;
+      font-size: 0.8rem;
+    }
+
+    details {
+      margin-top: 0.4rem;
+    }
+
+    details summary {
+      cursor: pointer;
+      font-size: 0.82rem;
+      opacity: 0.95;
+    }
+
+    table {
+      width: 100%;
+      border-collapse: collapse;
+      font-size: 0.8rem;
+      margin-top: 0.5rem;
+    }
+
+    th,
+    td {
+      border-bottom: 1px solid rgba(106, 151, 230, 0.35);
+      padding: 0.35rem 0.25rem;
+      text-align: left;
+    }
+
+    th {
+      font-weight: 600;
+      opacity: 0.9;
+    }
+
+    .muted {
+      opacity: 0.7;
+      font-size: 0.8rem;
+    }
+
+    .timestamp {
+      font-size: 0.78rem;
+      opacity: 0.7;
+    }
+
+    @media (max-width: 640px) {
+      .app-shell {
+        padding: 0.8rem;
+      }
+    }
+  </style>
+</head>
+<body>
+  <div class="app-shell">
+    <h1>HALO Meta-Oracle – Local Prototype</h1>
+
+    <div class="card">
+      <h2>1. Profile</h2>
+      <p class="muted">Optional but helpful—used for tags and flavor text.</p>
+      <div class="row">
+        <div class="col">
+          <label for="profile-name">Name / handle</label>
+          <input id="profile-name" type="text" placeholder="Player Zero, Apocky, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-sun">Sun sign</label>
+          <input id="profile-sun" type="text" placeholder="Taurus, Leo, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-moon">Moon sign</label>
+          <input id="profile-moon" type="text" placeholder="Gemini, Pisces, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-rising">Rising / Ascendant</label>
+          <input id="profile-rising" type="text" placeholder="Scorpio Rising, etc." />
+        </div>
+      </div>
+      <button id="save-profile">Save profile locally</button>
+      <small class="muted">Stored only in this browser using localStorage.</small>
+    </div>
+
+    <div class="card">
+      <h2>2. Ask HALO</h2>
+      <label for="question">Question or focus</label>
+      <textarea id="question" placeholder="What do I most need to understand about…?"></textarea>
+      <button id="roll-btn">Roll the Meta-Oracle</button>
+      <div id="current-reading" style="margin-top:0.75rem;"></div>
+    </div>
+
+    <div class="card">
+      <h2>3. Past Readings (this device)</h2>
+      <p class="muted">
+        Local Spiritual Blockchain prototype – readings are chained with simple hashes.
+      </p>
+      <div id="history"></div>
+    </div>
+
+    <!-- Co‑op Session card: allows generating shareable sessions -->
+    <div class="card">
+      <h2>4. Co‑op Session</h2>
+      <p class="muted">Share your Labyrinth session with a friend.</p>
+      <button id="start-coop">Start Co‑op Session</button>
+      <button id="copy-coop" style="display:none;">Copy Link</button>
+      <input
+        id="coop-link"
+        type="text"
+        readonly
+        placeholder="Your co‑op link will appear here"
+        style="width:100%;box-sizing:border-box;margin-top:0.5rem;"
+      />
+    </div>
+
+    <!-- Support card: optional tip jar for those who wish to support the project -->
+    <div class="card">
+      <h2>5. Support the Oracle</h2>
+      <p class="muted">Optional – helps keep the project going.</p>
+      <button id="support-button">☕ Support the Oracle</button>
+      <span id="support-badge" class="pill" style="display:none; margin-left:0.5rem;">★ Supporter Mode</span>
+    </div>
+  </div>
+
+  <script src="halo.js"></script>
+</body>
+</html>
+
+ + \ No newline at end of file diff --git a/exportToHTML/index (3).html.html b/exportToHTML/index (3).html.html new file mode 100644 index 0000000..0160ccf --- /dev/null +++ b/exportToHTML/index (3).html.html @@ -0,0 +1,263 @@ + + +index (3).html + + + + + +
+ +index (3).html +
+
<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>HALO Meta-Oracle – Local Prototype</title>
+  <style>
+    body {
+      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
+        sans-serif;
+      margin: 0;
+      padding: 0;
+      background: #02030a;
+      color: #dde3ff;
+    }
+
+    .app-shell {
+      max-width: 960px;
+      margin: 0 auto;
+      padding: 1.25rem;
+    }
+
+    h1 {
+      font-size: 1.6rem;
+      margin: 0 0 0.75rem;
+    }
+
+    h2 {
+      font-size: 1.2rem;
+      margin-top: 1.5rem;
+      margin-bottom: 0.5rem;
+    }
+
+    .card {
+      background: rgba(6, 10, 30, 0.98);
+      border-radius: 0.9rem;
+      padding: 1rem 1.1rem;
+      margin-bottom: 1rem;
+      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.6);
+      border: 1px solid rgba(60, 100, 180, 0.35);
+    }
+
+    label {
+      display: block;
+      font-size: 0.85rem;
+      margin-bottom: 0.15rem;
+      opacity: 0.9;
+    }
+
+    input[type="text"],
+    textarea,
+    select {
+      width: 100%;
+      box-sizing: border-box;
+      border-radius: 0.6rem;
+      border: 1px solid rgba(132, 183, 255, 0.4);
+      padding: 0.55rem 0.65rem;
+      font-size: 0.95rem;
+      background: rgba(4, 9, 29, 0.96);
+      color: #f7fbff;
+      outline: none;
+    }
+
+    textarea {
+      min-height: 70px;
+      resize: vertical;
+    }
+
+    input::placeholder,
+    textarea::placeholder {
+      color: rgba(199, 214, 255, 0.6);
+    }
+
+    .row {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 0.75rem;
+    }
+
+    .row > .col {
+      flex: 1 1 150px;
+    }
+
+    button {
+      border-radius: 999px;
+      border: none;
+      padding: 0.55rem 1.2rem;
+      font-size: 0.95rem;
+      font-weight: 600;
+      letter-spacing: 0.02em;
+      background: linear-gradient(120deg, #355a9f, #5c4fa8, #8a4f9a);
+      color: #f3f3ff;
+      cursor: pointer;
+      margin-top: 0.5rem;
+    }
+
+    button:disabled {
+      opacity: 0.5;
+      cursor: default;
+    }
+
+    small {
+      opacity: 0.85;
+      font-size: 0.78rem;
+    }
+
+    .pill {
+      display: inline-flex;
+      align-items: center;
+      padding: 0.15rem 0.65rem;
+      border-radius: 999px;
+      border: 1px solid rgba(171, 208, 255, 0.4);
+      font-size: 0.72rem;
+      margin-right: 0.35rem;
+      margin-bottom: 0.2rem;
+      text-transform: uppercase;
+      letter-spacing: 0.06em;
+    }
+
+    .reading-grid {
+      display: grid;
+      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+      gap: 0.75rem;
+      margin-top: 0.7rem;
+    }
+
+    .reading-block {
+      border-radius: 0.75rem;
+      border: 1px dashed rgba(152, 196, 255, 0.5);
+      padding: 0.6rem 0.7rem;
+      background: rgba(9, 20, 52, 0.8);
+      font-size: 0.86rem;
+    }
+
+    .reading-block h3 {
+      font-size: 0.9rem;
+      margin: 0 0 0.3rem;
+      text-transform: uppercase;
+      letter-spacing: 0.08em;
+      opacity: 0.9;
+    }
+
+    .mono {
+      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
+        "Liberation Mono", "Courier New", monospace;
+      font-size: 0.8rem;
+    }
+
+    details {
+      margin-top: 0.4rem;
+    }
+
+    details summary {
+      cursor: pointer;
+      font-size: 0.82rem;
+      opacity: 0.95;
+    }
+
+    table {
+      width: 100%;
+      border-collapse: collapse;
+      font-size: 0.8rem;
+      margin-top: 0.5rem;
+    }
+
+    th,
+    td {
+      border-bottom: 1px solid rgba(106, 151, 230, 0.35);
+      padding: 0.35rem 0.25rem;
+      text-align: left;
+    }
+
+    th {
+      font-weight: 600;
+      opacity: 0.9;
+    }
+
+    .muted {
+      opacity: 0.7;
+      font-size: 0.8rem;
+    }
+
+    .timestamp {
+      font-size: 0.78rem;
+      opacity: 0.7;
+    }
+
+    @media (max-width: 640px) {
+      .app-shell {
+        padding: 0.8rem;
+      }
+    }
+  </style>
+</head>
+<body>
+  <div class="app-shell">
+    <h1>HALO Meta-Oracle – Local Prototype</h1>
+
+    <div class="card">
+      <h2>1. Profile</h2>
+      <p class="muted">Optional but helpful—used for tags and flavor text.</p>
+      <div class="row">
+        <div class="col">
+          <label for="profile-name">Name / handle</label>
+          <input id="profile-name" type="text" placeholder="Player Zero, Apocky, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-sun">Sun sign</label>
+          <input id="profile-sun" type="text" placeholder="Taurus, Leo, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-moon">Moon sign</label>
+          <input id="profile-moon" type="text" placeholder="Gemini, Pisces, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-rising">Rising / Ascendant</label>
+          <input id="profile-rising" type="text" placeholder="Scorpio Rising, etc." />
+        </div>
+      </div>
+      <button id="save-profile">Save profile locally</button>
+      <small class="muted">Stored only in this browser using localStorage.</small>
+    </div>
+
+    <div class="card">
+      <h2>2. Ask HALO</h2>
+      <label for="question">Question or focus</label>
+      <textarea id="question" placeholder="What do I most need to understand about…?"></textarea>
+      <button id="roll-btn">Roll the Meta-Oracle</button>
+      <div id="current-reading" style="margin-top:0.75rem;"></div>
+    </div>
+
+    <div class="card">
+      <h2>3. Past Readings (this device)</h2>
+      <p class="muted">
+        Local Spiritual Blockchain prototype – readings are chained with simple hashes.
+      </p>
+      <div id="history"></div>
+    </div>
+  </div>
+
+  <script src="halo.js"></script>
+</body>
+</html>
+
+ + \ No newline at end of file diff --git a/exportToHTML/index.html b/exportToHTML/index.html new file mode 100644 index 0000000..e12b0d7 --- /dev/null +++ b/exportToHTML/index.html @@ -0,0 +1 @@ +C:\Users\Apocky\Documents\GitHub\Collab_Reposit\halo_lambdaindex.js
\ No newline at end of file diff --git a/exportToHTML/index.html.html b/exportToHTML/index.html.html new file mode 100644 index 0000000..6bdc332 --- /dev/null +++ b/exportToHTML/index.html.html @@ -0,0 +1,263 @@ + + +index.html + + + + + +
+ +index.html +
+
<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>HALO Meta-Oracle – Local Prototype</title>
+  <style>
+    body {
+      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
+        sans-serif;
+      margin: 0;
+      padding: 0;
+      background: #02030a;
+      color: #dde3ff;
+    }
+
+    .app-shell {
+      max-width: 960px;
+      margin: 0 auto;
+      padding: 1.25rem;
+    }
+
+    h1 {
+      font-size: 1.6rem;
+      margin: 0 0 0.75rem;
+    }
+
+    h2 {
+      font-size: 1.2rem;
+      margin-top: 1.5rem;
+      margin-bottom: 0.5rem;
+    }
+
+    .card {
+      background: rgba(6, 10, 30, 0.98);
+      border-radius: 0.9rem;
+      padding: 1rem 1.1rem;
+      margin-bottom: 1rem;
+      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.6);
+      border: 1px solid rgba(60, 100, 180, 0.35);
+    }
+
+    label {
+      display: block;
+      font-size: 0.85rem;
+      margin-bottom: 0.15rem;
+      opacity: 0.9;
+    }
+
+    input[type="text"],
+    textarea,
+    select {
+      width: 100%;
+      box-sizing: border-box;
+      border-radius: 0.6rem;
+      border: 1px solid rgba(132, 183, 255, 0.4);
+      padding: 0.55rem 0.65rem;
+      font-size: 0.95rem;
+      background: rgba(4, 9, 29, 0.96);
+      color: #f7fbff;
+      outline: none;
+    }
+
+    textarea {
+      min-height: 70px;
+      resize: vertical;
+    }
+
+    input::placeholder,
+    textarea::placeholder {
+      color: rgba(199, 214, 255, 0.6);
+    }
+
+    .row {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 0.75rem;
+    }
+
+    .row > .col {
+      flex: 1 1 150px;
+    }
+
+    button {
+      border-radius: 999px;
+      border: none;
+      padding: 0.55rem 1.2rem;
+      font-size: 0.95rem;
+      font-weight: 600;
+      letter-spacing: 0.02em;
+      background: linear-gradient(120deg, #355a9f, #5c4fa8, #8a4f9a);
+      color: #f3f3ff;
+      cursor: pointer;
+      margin-top: 0.5rem;
+    }
+
+    button:disabled {
+      opacity: 0.5;
+      cursor: default;
+    }
+
+    small {
+      opacity: 0.85;
+      font-size: 0.78rem;
+    }
+
+    .pill {
+      display: inline-flex;
+      align-items: center;
+      padding: 0.15rem 0.65rem;
+      border-radius: 999px;
+      border: 1px solid rgba(171, 208, 255, 0.4);
+      font-size: 0.72rem;
+      margin-right: 0.35rem;
+      margin-bottom: 0.2rem;
+      text-transform: uppercase;
+      letter-spacing: 0.06em;
+    }
+
+    .reading-grid {
+      display: grid;
+      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+      gap: 0.75rem;
+      margin-top: 0.7rem;
+    }
+
+    .reading-block {
+      border-radius: 0.75rem;
+      border: 1px dashed rgba(152, 196, 255, 0.5);
+      padding: 0.6rem 0.7rem;
+      background: rgba(9, 20, 52, 0.8);
+      font-size: 0.86rem;
+    }
+
+    .reading-block h3 {
+      font-size: 0.9rem;
+      margin: 0 0 0.3rem;
+      text-transform: uppercase;
+      letter-spacing: 0.08em;
+      opacity: 0.9;
+    }
+
+    .mono {
+      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
+        "Liberation Mono", "Courier New", monospace;
+      font-size: 0.8rem;
+    }
+
+    details {
+      margin-top: 0.4rem;
+    }
+
+    details summary {
+      cursor: pointer;
+      font-size: 0.82rem;
+      opacity: 0.95;
+    }
+
+    table {
+      width: 100%;
+      border-collapse: collapse;
+      font-size: 0.8rem;
+      margin-top: 0.5rem;
+    }
+
+    th,
+    td {
+      border-bottom: 1px solid rgba(106, 151, 230, 0.35);
+      padding: 0.35rem 0.25rem;
+      text-align: left;
+    }
+
+    th {
+      font-weight: 600;
+      opacity: 0.9;
+    }
+
+    .muted {
+      opacity: 0.7;
+      font-size: 0.8rem;
+    }
+
+    .timestamp {
+      font-size: 0.78rem;
+      opacity: 0.7;
+    }
+
+    @media (max-width: 640px) {
+      .app-shell {
+        padding: 0.8rem;
+      }
+    }
+  </style>
+</head>
+<body>
+  <div class="app-shell">
+    <h1>HALO Meta-Oracle – Local Prototype</h1>
+
+    <div class="card">
+      <h2>1. Profile</h2>
+      <p class="muted">Optional but helpful—used for tags and flavor text.</p>
+      <div class="row">
+        <div class="col">
+          <label for="profile-name">Name / handle</label>
+          <input id="profile-name" type="text" placeholder="Player Zero, Apocky, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-sun">Sun sign</label>
+          <input id="profile-sun" type="text" placeholder="Taurus, Leo, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-moon">Moon sign</label>
+          <input id="profile-moon" type="text" placeholder="Gemini, Pisces, etc." />
+        </div>
+        <div class="col">
+          <label for="profile-rising">Rising / Ascendant</label>
+          <input id="profile-rising" type="text" placeholder="Scorpio Rising, etc." />
+        </div>
+      </div>
+      <button id="save-profile">Save profile locally</button>
+      <small class="muted">Stored only in this browser using localStorage.</small>
+    </div>
+
+    <div class="card">
+      <h2>2. Ask HALO</h2>
+      <label for="question">Question or focus</label>
+      <textarea id="question" placeholder="What do I most need to understand about…?"></textarea>
+      <button id="roll-btn">Roll the Meta-Oracle</button>
+      <div id="current-reading" style="margin-top:0.75rem;"></div>
+    </div>
+
+    <div class="card">
+      <h2>3. Past Readings (this device)</h2>
+      <p class="muted">
+        Local Spiritual Blockchain prototype – readings are chained with simple hashes.
+      </p>
+      <div id="history"></div>
+    </div>
+  </div>
+
+  <script src="halo.js"></script>
+</body>
+</html>
+
+ + \ No newline at end of file diff --git a/exportToHTML/index.js.html b/exportToHTML/index.js.html new file mode 100644 index 0000000..66c3bff --- /dev/null +++ b/exportToHTML/index.js.html @@ -0,0 +1,103 @@ + + +index.js + + + + + +
+ +index.js +
+
// HALO Oracle Serverless Lambda handler
+// This Lambda function provides two API methods via API Gateway:
+// - GET  /readings : Returns all reading items from DynamoDB.
+// - POST /readings : Stores a new reading item in DynamoDB.
+
+// The function uses the AWS SDK v3 for DynamoDB with the DocumentClient
+// to handle marshalling between native JavaScript types and DynamoDB item
+// structures automatically. The target DynamoDB table name can be
+// configured via the TABLE_NAME environment variable; otherwise it
+// defaults to "HaloReadings".
+
+const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");
+const {
+  DynamoDBDocumentClient,
+  ScanCommand,
+  PutCommand,
+} = require("@aws-sdk/lib-dynamodb");
+
+// Create low‑level and Document clients. The region and credentials
+// are resolved automatically from the Lambda execution environment.
+const ddbClient = new DynamoDBClient({});
+const ddbDocClient = DynamoDBDocumentClient.from(ddbClient);
+
+exports.handler = async (event) => {
+  const tableName = process.env.TABLE_NAME || "HaloReadings";
+
+  try {
+    // Inspect the HTTP method from the event (when invoked via API Gateway)
+    const method = (event.httpMethod || event.method || "GET").toUpperCase();
+
+    // Handle GET requests to list all readings
+    if (method === "GET") {
+      const data = await ddbDocClient.send(
+        new ScanCommand({ TableName: tableName })
+      );
+      return {
+        statusCode: 200,
+        headers: { "Content-Type": "application/json" },
+        body: JSON.stringify(data.Items || []),
+      };
+    }
+
+    // Handle POST requests to create a new reading entry
+    if (method === "POST") {
+      // Parse the JSON body from the request
+      let item;
+      try {
+        item = JSON.parse(event.body || "{}");
+      } catch (parseErr) {
+        return {
+          statusCode: 400,
+          headers: { "Content-Type": "application/json" },
+          body: JSON.stringify({ message: "Invalid JSON payload" }),
+        };
+      }
+
+      // Write the item to DynamoDB
+      await ddbDocClient.send(
+        new PutCommand({ TableName: tableName, Item: item })
+      );
+      return {
+        statusCode: 201,
+        headers: { "Content-Type": "application/json" },
+        body: JSON.stringify({ message: "Reading stored", item }),
+      };
+    }
+
+    // Method not allowed
+    return {
+      statusCode: 405,
+      headers: { "Content-Type": "application/json" },
+      body: JSON.stringify({ message: "Method not allowed" }),
+    };
+  } catch (err) {
+    console.error("Error handling request", err);
+    return {
+      statusCode: 500,
+      headers: { "Content-Type": "application/json" },
+      body: JSON.stringify({ message: err.message || "Internal server error" }),
+    };
+  }
+};
+
+ + \ No newline at end of file diff --git a/exportToHTML/markdown.xml.html b/exportToHTML/markdown.xml.html new file mode 100644 index 0000000..de454c0 --- /dev/null +++ b/exportToHTML/markdown.xml.html @@ -0,0 +1,27 @@ + + +markdown.xml + + + + + +
+ +markdown.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MarkdownSettings">
+    <option name="previewPanelProviderInfo">
+      <ProviderInfo name="Compose (experimental)" className="com.intellij.markdown.compose.preview.ComposePanelProvider" />
+    </option>
+  </component>
+</project>
+ + \ No newline at end of file diff --git a/exportToHTML/misc.xml.html b/exportToHTML/misc.xml.html new file mode 100644 index 0000000..be7e096 --- /dev/null +++ b/exportToHTML/misc.xml.html @@ -0,0 +1,25 @@ + + +misc.xml + + + + + +
+ +misc.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
+ + \ No newline at end of file diff --git a/exportToHTML/modules.xml.html b/exportToHTML/modules.xml.html new file mode 100644 index 0000000..ccbe0eb --- /dev/null +++ b/exportToHTML/modules.xml.html @@ -0,0 +1,27 @@ + + +modules.xml + + + + + +
+ +modules.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Collab_Reposit.iml" filepath="$PROJECT_DIR$/.idea/Collab_Reposit.iml" />
+    </modules>
+  </component>
+</project>
+ + \ No newline at end of file diff --git a/exportToHTML/vcs.xml.html b/exportToHTML/vcs.xml.html new file mode 100644 index 0000000..6a0414a --- /dev/null +++ b/exportToHTML/vcs.xml.html @@ -0,0 +1,25 @@ + + +vcs.xml + + + + + +
+ +vcs.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
+ + \ No newline at end of file diff --git a/exportToHTML/workspace.xml.html b/exportToHTML/workspace.xml.html new file mode 100644 index 0000000..798a646 --- /dev/null +++ b/exportToHTML/workspace.xml.html @@ -0,0 +1,70 @@ + + +workspace.xml + + + + + +
+ +workspace.xml +
+
<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="NONE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="97a950fa-db8c-4e93-8516-864b9f7aa068" name="Changes" comment="" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ClangdSettings">
+    <option name="formatViaClangd" value="false" />
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="ProjectColorInfo"><![CDATA[{ 
+  "associatedIndex": 0 
+}]]></component>
+  <component name="ProjectId" id="36a2yNK1rKNiJ4Kwcf1mJarKpvq" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{ 
+  "keyToString": { 
+    "ModuleVcsDetector.initialDetectionPerformed": "true", 
+    "RunOnceActivity.ShowReadmeOnStart": "true", 
+    "RunOnceActivity.cidr.known.project.marker": "true", 
+    "RunOnceActivity.git.unshallow": "true", 
+    "RunOnceActivity.readMode.enableVisualFormatting": "true", 
+    "cf.first.check.clang-format": "false", 
+    "cidr.known.project.marker": "true", 
+    "git-widget-placeholder": "master", 
+    "ignore.virus.scanning.warn.message": "true", 
+    "kotlin-language-version-configured": "true" 
+  } 
+}]]></component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="97a950fa-db8c-4e93-8516-864b9f7aa068" name="Changes" comment="" />
+      <created>1765230615534</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1765230615534</updated>
+    </task>
+    <servers />
+  </component>
+</project>
+ + \ No newline at end of file