commit 653cee119d4076406ea4ed6f294a9d01c3bbaa6a
Author: Yanuar Tr <82995911+Greek-Cp@users.noreply.github.com>
Date: Thu Jun 19 20:25:09 2025 +0700
feat: init project
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..c5f9746
Binary files /dev/null and b/.DS_Store differ
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c485074
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# forward_chaining_man_app
+
+A new Flutter project.
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..f9b3034
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1 @@
+include: package:flutter_lints/flutter.yaml
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 0000000..55afd91
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/to/reference-keystore
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 0000000..59db11b
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,47 @@
+plugins {
+ id "com.android.application"
+ // START: FlutterFire Configuration
+ id 'com.google.gms.google-services'
+ // END: FlutterFire Configuration
+ id "kotlin-android"
+ // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+ id "dev.flutter.flutter-gradle-plugin"
+}
+
+android {
+ namespace = "com.example.forward_chaining_man_app"
+ compileSdk = 34
+ ndkVersion = flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_1_8
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId = "com.example.forward_chaining_man_app"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://flutter.dev/to/review-gradle-config.
+ minSdk = 23
+ targetSdk = flutter.targetSdkVersion
+ versionCode = flutter.versionCode
+ versionName = flutter.versionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig = signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source = "../.."
+}
diff --git a/android/app/google-services.json b/android/app/google-services.json
new file mode 100644
index 0000000..00dd5f9
--- /dev/null
+++ b/android/app/google-services.json
@@ -0,0 +1,114 @@
+{
+ "project_info": {
+ "project_number": "1072369607324",
+ "project_id": "sirekomendasi-dc7de",
+ "storage_bucket": "sirekomendasi-dc7de.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1072369607324:android:f76a929d6f6258726f4359",
+ "android_client_info": {
+ "package_name": "com.e"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "1072369607324-pnvpbn64ceilqdub09qfj2h6re5199tj.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.e",
+ "certificate_hash": "54c882833621e66da646ffb2d8ee7237fa7f0a24"
+ }
+ },
+ {
+ "client_id": "1072369607324-t2qd5p0r7lviqemnvjidshbud49es45l.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.e",
+ "certificate_hash": "3bb526cd960a2c584c325eb17221250f321e34d0"
+ }
+ },
+ {
+ "client_id": "1072369607324-ul5feal98a8o8g9fo23ddp7ob886ermd.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBIHdD_rH3YSfuZYcNKFd1YCMTXxYb6gdc"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "1072369607324-ul5feal98a8o8g9fo23ddp7ob886ermd.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "1072369607324-0e0k7pn3nqk6suq97jnegljp3k0161o5.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.example.forwardChainingManApp"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1072369607324:android:ed7767d8870c32e96f4359",
+ "android_client_info": {
+ "package_name": "com.example.forward_chaining_man_app"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "1072369607324-hp2vujt95ipkft4n348a96ndbiocqrdo.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.example.forward_chaining_man_app",
+ "certificate_hash": "54c882833621e66da646ffb2d8ee7237fa7f0a24"
+ }
+ },
+ {
+ "client_id": "1072369607324-pbgftae664k56gli4fb0ftrhot88t8qi.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "com.example.forward_chaining_man_app",
+ "certificate_hash": "3bb526cd960a2c584c325eb17221250f321e34d0"
+ }
+ },
+ {
+ "client_id": "1072369607324-ul5feal98a8o8g9fo23ddp7ob886ermd.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBIHdD_rH3YSfuZYcNKFd1YCMTXxYb6gdc"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "1072369607324-ul5feal98a8o8g9fo23ddp7ob886ermd.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "1072369607324-0e0k7pn3nqk6suq97jnegljp3k0161o5.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.example.forwardChainingManApp"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f4096a9
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/example/forward_chaining_man_app/MainActivity.kt b/android/app/src/main/kotlin/com/example/forward_chaining_man_app/MainActivity.kt
new file mode 100644
index 0000000..8315b35
--- /dev/null
+++ b/android/app/src/main/kotlin/com/example/forward_chaining_man_app/MainActivity.kt
@@ -0,0 +1,5 @@
+package com.example.forward_chaining_man_app
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity()
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..59c534f
Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..6406493
Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..50d5e19
Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..6a7c44f
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..b14eab7
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..cb1ef88
--- /dev/null
+++ b/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 0000000..d2ffbff
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,18 @@
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = "../build"
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(":app")
+}
+
+tasks.register("clean", Delete) {
+ delete rootProject.buildDir
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 0000000..2597170
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..8bc9958
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
new file mode 100644
index 0000000..11a106e
--- /dev/null
+++ b/android/settings.gradle
@@ -0,0 +1,28 @@
+pluginManagement {
+ def flutterSdkPath = {
+ def properties = new Properties()
+ file("local.properties").withInputStream { properties.load(it) }
+ def flutterSdkPath = properties.getProperty("flutter.sdk")
+ assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+ return flutterSdkPath
+ }()
+
+ includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+plugins {
+ id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+ id "com.android.application" version "8.1.0" apply false
+ // START: FlutterFire Configuration
+ id "com.google.gms.google-services" version "4.3.15" apply false
+ // END: FlutterFire Configuration
+ id "org.jetbrains.kotlin.android" version "1.9.24" apply false
+}
+
+include ":app"
diff --git a/assets/biaya_kuliah_d4_ugm.json b/assets/biaya_kuliah_d4_ugm.json
new file mode 100644
index 0000000..ed7e694
--- /dev/null
+++ b/assets/biaya_kuliah_d4_ugm.json
@@ -0,0 +1,279 @@
+
+[
+ {
+ "NO": "",
+ "PROGRAM": "",
+ "NAMA PROGRAM STUDI": "",
+ "BKT PER SEMESTER": "",
+ "UKT_KELOMPOK_1": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_100%",
+ "UKT_KELOMPOK_2": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_100%",
+ "UKT_KELOMPOK_3": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI 75%",
+ "UKT_KELOMPOK_4": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI 50%",
+ "UKT_KELOMPOK_5": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI 25%",
+ "UKT_KELOMPOK_6": "UKT_PENDIDIKAN_UNGGUL"
+ },
+ {
+ "NO": "1",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Perangkat Lunak",
+ "BKT PER SEMESTER": "28.008.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "2",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Mesin",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "3",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Elektro",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "4",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Instrumentasi dan Kontrol",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "5",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Survei dan Pemetaan Dasar",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "6",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Sistem Informasi Geografis",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "7",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Pengembangan Produk Agroindustri",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "8",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknik Pengelolaan dan Perawatan Alat Berat",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "9",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Internet",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "10",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknik Pengelolaan dan Pemeliharaan Infrastruktur Sipil",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "11",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Rekayasa Pelaksanaan Bangunan Sipil",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "12",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Teknologi Veteriner",
+ "BKT PER SEMESTER": "27.128.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "13",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Manajemen Informasi Kesehatan",
+ "BKT PER SEMESTER": "25.038.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "14",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Pengelolaan Hutan",
+ "BKT PER SEMESTER": "23.995.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.325.000",
+ "UKT_KELOMPOK_4": "6.650.000",
+ "UKT_KELOMPOK_5": "9.975.000",
+ "UKT_KELOMPOK_6": "13.300.000"
+ },
+ {
+ "NO": "15",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Bisnis Perjalanan Wisata",
+ "BKT PER SEMESTER": "23.467.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "16",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Manajemen dan Penilaian Properti",
+ "BKT PER SEMESTER": "13.826.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "17",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Pengelolaan Arsip dan Rekaman Informasi",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "18",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Bahasa Inggris",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "19",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Bahasa Jepang untuk Komunikasi Bisnis dan Profesional",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "20",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Akuntansi Sektor Publik",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "21",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Pembangunan Ekonomi Kewilayahan",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ },
+ {
+ "NO": "22",
+ "PROGRAM": "D4",
+ "NAMA PROGRAM STUDI": "Perbankan",
+ "BKT PER SEMESTER": "13.298.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.850.000",
+ "UKT_KELOMPOK_4": "5.700.000",
+ "UKT_KELOMPOK_5": "8.550.000",
+ "UKT_KELOMPOK_6": "11.400.000"
+ }
+]
\ No newline at end of file
diff --git a/assets/biaya_kuliah_s1_ugm.json b/assets/biaya_kuliah_s1_ugm.json
new file mode 100644
index 0000000..f07d881
--- /dev/null
+++ b/assets/biaya_kuliah_s1_ugm.json
@@ -0,0 +1,866 @@
+[
+ {
+ "NO": "",
+ "PROGRAM": "",
+ "NAMA PROGRAM STUDI": "",
+ "BKT PER SEMESTER": "",
+ "UKT_KELOMPOK_1": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_100%",
+ "UKT_KELOMPOK_2": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_100%",
+ "UKT_KELOMPOK_3": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_75%",
+ "UKT_KELOMPOK_4": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_50%",
+ "UKT_KELOMPOK_5": "UKT_PENDIDIKAN_UNGGUL_BERSUBSIDI_25%",
+ "UKT_KELOMPOK_6": "UKT_PENDIDIKAN_UNGGUL"
+ },
+ {
+ "NO": "1",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kedokteran",
+ "BKT PER SEMESTER": "35.145.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "6.175.000",
+ "UKT_KELOMPOK_4": "12.350.000",
+ "UKT_KELOMPOK_5": "18.525.000",
+ "UKT_KELOMPOK_6": "24.700.000"
+ },
+ {
+ "NO": "2",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kedokteran Hewan",
+ "BKT PER SEMESTER": "35.145.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "6.175.000",
+ "UKT_KELOMPOK_4": "12.350.000",
+ "UKT_KELOMPOK_5": "18.525.000",
+ "UKT_KELOMPOK_6": "24.700.000"
+ },
+ {
+ "NO": "3",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kedokteran Gigi",
+ "BKT PER SEMESTER": "33.740.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "6.175.000",
+ "UKT_KELOMPOK_4": "12.350.000",
+ "UKT_KELOMPOK_5": "18.525.000",
+ "UKT_KELOMPOK_6": "24.700.000"
+ },
+ {
+ "NO": "4",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Farmasi",
+ "BKT PER SEMESTER": "27.919.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "4.325.000",
+ "UKT_KELOMPOK_4": "8.650.000",
+ "UKT_KELOMPOK_5": "12.975.000",
+ "UKT_KELOMPOK_6": "17.300.000"
+ },
+ {
+ "NO": "5",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Keperawatan",
+ "BKT PER SEMESTER": "26.802.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "4.325.000",
+ "UKT_KELOMPOK_4": "8.650.000",
+ "UKT_KELOMPOK_5": "12.975.000",
+ "UKT_KELOMPOK_6": "17.300.000"
+ },
+ {
+ "NO": "6",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Mesin",
+ "BKT PER SEMESTER": "20.949.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.375.000",
+ "UKT_KELOMPOK_4": "6.750.000",
+ "UKT_KELOMPOK_5": "10.125.000",
+ "UKT_KELOMPOK_6": "13.500.000"
+ },
+ {
+ "NO": "7",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Nuklir",
+ "BKT PER SEMESTER": "20.949.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "8",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Psikologi",
+ "BKT PER SEMESTER": "20.692.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "9",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Geologi",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "10",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknologi Hasil Perikanan",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "11",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Perencanaan Wilayah dan Kota",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "12",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Arsitektur",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "13",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Geodesi",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "14",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Kimia",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.375.000",
+ "UKT_KELOMPOK_4": "6.750.000",
+ "UKT_KELOMPOK_5": "10.125.000",
+ "UKT_KELOMPOK_6": "13.500.000"
+ },
+ {
+ "NO": "15",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Elektro",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "16",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Industri",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "17",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknologi Industri Pertanian",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "18",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Fisika",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "19",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Sipil",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "20",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Elektronika dan Instrumentasi",
+ "BKT PER SEMESTER": "19.908.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "21",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Gizi",
+ "BKT PER SEMESTER": "19.865.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "22",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Biomedis",
+ "BKT PER SEMESTER": "19.273.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "23",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Pertanian",
+ "BKT PER SEMESTER": "19.112.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "24",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknologi Pangan dan Hasil Pertanian",
+ "BKT PER SEMESTER": "19.112.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "25",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Higiene Gigi",
+ "BKT PER SEMESTER": "19.037.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.375.000",
+ "UKT_KELOMPOK_4": "6.750.000",
+ "UKT_KELOMPOK_5": "10.125.000",
+ "UKT_KELOMPOK_6": "13.500.000"
+ },
+ {
+ "NO": "26",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Biologi",
+ "BKT PER SEMESTER": "18.399.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "27",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kimia",
+ "BKT PER SEMESTER": "18.399.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "28",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Infrastruktur Lingkungan",
+ "BKT PER SEMESTER": "18.315.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "29",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknik Sumber Daya Air",
+ "BKT PER SEMESTER": "18.315.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "30",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Geofisika",
+ "BKT PER SEMESTER": "17.663.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "31",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Fisika",
+ "BKT PER SEMESTER": "17.663.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "32",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Mikrobiologi Pertanian",
+ "BKT PER SEMESTER": "15.335.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "33",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kehutanan",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "34",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu dan Industri Peternakan",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.750.000",
+ "UKT_KELOMPOK_4": "5.500.000",
+ "UKT_KELOMPOK_5": "8.250.000",
+ "UKT_KELOMPOK_6": "11.000.000"
+ },
+ {
+ "NO": "35",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Agronomi",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "36",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Akuakultur",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "37",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ekonomi Pertanian dan Agribisnis",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "38",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Tanah",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "39",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Manajemen Sumberdaya Akuatik",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "40",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Penyuluhan dan Komunikasi Pertanian",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "41",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Proteksi Tanaman",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "42",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Teknologi Informasi",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "3.075.000",
+ "UKT_KELOMPOK_4": "6.150.000",
+ "UKT_KELOMPOK_5": "9.225.000",
+ "UKT_KELOMPOK_6": "12.300.000"
+ },
+ {
+ "NO": "43",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Geografi Lingkungan",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "44",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Kartografi dan Penginderaan Jauh",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "45",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Akuntansi",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "46",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Manajemen",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "47",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Hukum",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "48",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Komputer",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "49",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Ekonomi",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "50",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Manajemen dan Kebijakan Publik",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "51",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Hubungan Internasional",
+ "BKT PER SEMESTER": "14.667.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.200.000",
+ "UKT_KELOMPOK_4": "4.400.000",
+ "UKT_KELOMPOK_5": "6.600.000",
+ "UKT_KELOMPOK_6": "8.800.000"
+ },
+ {
+ "NO": "52",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Komunikasi",
+ "BKT PER SEMESTER": "14.081.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "53",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Pembangunan Sosial dan Kesejahteraan",
+ "BKT PER SEMESTER": "14.081.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.200.000",
+ "UKT_KELOMPOK_4": "4.400.000",
+ "UKT_KELOMPOK_5": "6.600.000",
+ "UKT_KELOMPOK_6": "8.800.000"
+ },
+ {
+ "NO": "54",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Pariwisata",
+ "BKT PER SEMESTER": "14.081.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "55",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Statistika",
+ "BKT PER SEMESTER": "13.360.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "56",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Matematika",
+ "BKT PER SEMESTER": "13.360.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "57",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Ilmu Aktuaria",
+ "BKT PER SEMESTER": "12.292.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.500.000",
+ "UKT_KELOMPOK_4": "5.000.000",
+ "UKT_KELOMPOK_5": "7.500.000",
+ "UKT_KELOMPOK_6": "10.000.000"
+ },
+ {
+ "NO": "58",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Arkeologi",
+ "BKT PER SEMESTER": "9.442.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.300.000",
+ "UKT_KELOMPOK_4": "4.600.000",
+ "UKT_KELOMPOK_5": "6.900.000",
+ "UKT_KELOMPOK_6": "9.200.000"
+ },
+ {
+ "NO": "59",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Pembangunan Wilayah",
+ "BKT PER SEMESTER": "9.025.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.256.000",
+ "UKT_KELOMPOK_4": "4.512.000",
+ "UKT_KELOMPOK_5": "6.768.000",
+ "UKT_KELOMPOK_6": "9.025.000"
+ },
+ {
+ "NO": "60",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Bahasa dan Sastra Prancis",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "61",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Sastra Arab",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "62",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Bahasa dan Sastra Indonesia",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "63",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Bahasa dan Kebudayaan Korea",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "64",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Bahasa dan Kebudayaan Jepang",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "65",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Bahasa, Sastra, dan Budaya Jawa",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.900.000",
+ "UKT_KELOMPOK_4": "3.800.000",
+ "UKT_KELOMPOK_5": "5.700.000",
+ "UKT_KELOMPOK_6": "7.600.000"
+ },
+ {
+ "NO": "66",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Sastra Inggris",
+ "BKT PER SEMESTER": "8.664.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.200.000",
+ "UKT_KELOMPOK_4": "4.400.000",
+ "UKT_KELOMPOK_5": "6.600.000",
+ "UKT_KELOMPOK_6": "8.664.000"
+ },
+ {
+ "NO": "67",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Politik dan Pemerintahan",
+ "BKT PER SEMESTER": "8.214.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.053.000",
+ "UKT_KELOMPOK_4": "4.107.000",
+ "UKT_KELOMPOK_5": "6.160.000",
+ "UKT_KELOMPOK_6": "8.214.000"
+ },
+ {
+ "NO": "68",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Antropologi Budaya",
+ "BKT PER SEMESTER": "7.885.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.053.000",
+ "UKT_KELOMPOK_4": "4.107.000",
+ "UKT_KELOMPOK_5": "6.160.000",
+ "UKT_KELOMPOK_6": "7.885.000"
+ },
+ {
+ "NO": "69",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Sejarah",
+ "BKT PER SEMESTER": "7.885.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "2.053.000",
+ "UKT_KELOMPOK_4": "4.107.000",
+ "UKT_KELOMPOK_5": "6.160.000",
+ "UKT_KELOMPOK_6": "7.885.000"
+ },
+ {
+ "NO": "70",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Sosiologi",
+ "BKT PER SEMESTER": "7.885.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.889.000",
+ "UKT_KELOMPOK_4": "3.778.000",
+ "UKT_KELOMPOK_5": "5.667.000",
+ "UKT_KELOMPOK_6": "7.557.000"
+ },
+ {
+ "NO": "71",
+ "PROGRAM": "S1",
+ "NAMA PROGRAM STUDI": "Filsafat",
+ "BKT PER SEMESTER": "7.885.000",
+ "UKT_KELOMPOK_1": "0",
+ "UKT_KELOMPOK_2": "0",
+ "UKT_KELOMPOK_3": "1.889.000",
+ "UKT_KELOMPOK_4": "3.778.000",
+ "UKT_KELOMPOK_5": "5.667.000",
+ "UKT_KELOMPOK_6": "7.557.000"
+ }
+]
diff --git a/assets/data_beasiswa.json b/assets/data_beasiswa.json
new file mode 100644
index 0000000..da4ec00
--- /dev/null
+++ b/assets/data_beasiswa.json
@@ -0,0 +1,184 @@
+{
+ "beasiswa": [
+ {
+ "nama": "Beasiswa Indonesia Maju (BIM)",
+ "penyelenggara": "Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi",
+ "jenjang": ["S1", "S2"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Beasiswa bergelar (S1 dan S2) serta beasiswa non-gelar (Program Persiapan S1 Luar Negeri).",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi, substansi, dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://bim-pusatprestasinasional.kemdikbud.go.id/"
+ },
+ {
+ "nama": "Beasiswa KIP Kuliah",
+ "penyelenggara": "Kementerian Pendidikan, Kebudayaan, Riset, dan Teknologi",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan biaya pendidikan dan biaya hidup bagi mahasiswa dari keluarga kurang mampu.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki KIP",
+ "Lolos seleksi administrasi"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://kip-kuliah.kemdikbud.go.id/"
+ },
+ {
+ "nama": "Beasiswa LPDP (Lembaga Pengelola Dana Pendidikan)",
+ "penyelenggara": "Kementerian Keuangan RI",
+ "jenjang": ["S1", "S2", "S3"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Beasiswa penuh yang mencakup biaya pendidikan dan biaya hidup untuk pendidikan dalam dan luar negeri.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0 untuk S1, 3.25 untuk S2/S3",
+ "Usia maksimal 21 tahun untuk S1, 35 tahun untuk S2, 40 tahun untuk S3",
+ "Lolos seleksi administrasi, substansi, dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka 2-3 kali setahun",
+ "link": "https://www.lpdp.kemenkeu.go.id"
+ },
+ {
+ "nama": "Beasiswa S1 Glow and Lovely Bintang Beasiswa",
+ "penyelenggara": "Glow and Lovely",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Beasiswa penuh untuk program S1 di bidang yang relevan.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki prestasi akademik yang baik"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://www.glowandlovely.in"
+ },
+ {
+ "nama": "Beasiswa Bank Indonesia",
+ "penyelenggara": "Bank Indonesia",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Ekonomi", "Keuangan", "Pendidikan"],
+ "deskripsi": "Bantuan dana pendidikan bulanan, pelatihan soft skill dan hard skill, serta workshop.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://www.kompas.com/edu/read/2025/01/27/125955371/beasiswa-bank-indonesia-2025-dibuka-cek-syarat-dan-cara-daftar"
+ },
+ {
+ "nama": "Beasiswa Van Deventer-Maas Indonesia (VDMI)",
+ "penyelenggara": "VDMI",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan dana bulanan, bonus lulus tepat waktu, bonus TOEFL, serta pelatihan pengembangan kapasitas pribadi.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki prestasi akademik yang baik",
+ "Lolos seleksi administrasi dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://beasiswapascasarjana.com"
+ },
+ {
+ "nama": "Beasiswa Dataprint",
+ "penyelenggara": "Dataprint",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan dana sebesar Rp500.000 yang diberikan satu kali.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki prestasi akademik yang baik"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-dataprint/"
+ },
+ {
+ "nama": "Beasiswa Pertamina Sobat Bumi",
+ "penyelenggara": "Pertamina",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Dana hidup bulanan dan dana program pengabdian untuk desa.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-pertamina-sobat-bumi/"
+ },
+ {
+ "nama": "Beasiswa Karya Salemba Empat (KSE)",
+ "penyelenggara": "Karya Salemba Empat",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan dana pendidikan dan pengembangan diri.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-karya-salemba-empat/"
+ },
+ {
+ "nama": "Beasiswa Djarum Plus",
+ "penyelenggara": "Djarum Foundation",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan dana bulanan dan program pengembangan diri.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki prestasi akademik yang baik"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-djarum-plus/"
+ },
+ {
+ "nama": "Beasiswa Tanoto Foundation",
+ "penyelenggara": "Tanoto Foundation",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Semua Bidang Studi"],
+ "deskripsi": "Bantuan biaya pendidikan dan biaya hidup.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-tanoto-foundation/"
+ },
+ {
+ "nama": "Beasiswa Bakti BCA",
+ "penyelenggara": "BCA",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Ekonomi", "Pendidikan", "Keuangan"],
+ "deskripsi": "Uang saku bulanan dan bantuan UKT (Uang Kuliah Tunggal).",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0",
+ "Lolos seleksi administrasi dan wawancara"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-bakti-bca/"
+ },
+ {
+ "nama": "Beasiswa BCA Finance",
+ "penyelenggara": "BCA Finance",
+ "jenjang": ["S1"],
+ "bidang_studi": ["Ekonomi", "Keuangan"],
+ "deskripsi": "Bantuan biaya kuliah per semester.",
+ "persyaratan": [
+ "WNI",
+ "Memiliki IPK minimal 3.0"
+ ],
+ "deadline": "Biasanya dibuka setiap tahun",
+ "link": "https://indbeasiswa.com/beasiswa-bca-finance/"
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/assets/data_ekonomi.json b/assets/data_ekonomi.json
new file mode 100644
index 0000000..a852cd3
--- /dev/null
+++ b/assets/data_ekonomi.json
@@ -0,0 +1,20 @@
+{
+ "data_ekonomi": [
+ {
+ "kode": "E01",
+ "deskripsi": "Saya dan keluarga memiliki kondisi ekonomi yang cukup untuk melanjutkan kuliah"
+ },
+ {
+ "kode": "E02",
+ "deskripsi": "Saya perlu mempertimbangkan biaya karena kondisi ekonomi keluarga terbatas"
+ },
+ {
+ "kode": "E03",
+ "deskripsi": "Saya berminat kuliah tapi berencana mencari beasiswa atau bantuan pendanaan"
+ },
+ {
+ "kode": "E04",
+ "deskripsi": "Saya lebih memilih bekerja atau usaha karena kondisi ekonomi saat ini"
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/assets/ic_denis.jpg b/assets/ic_denis.jpg
new file mode 100644
index 0000000..4962e48
Binary files /dev/null and b/assets/ic_denis.jpg differ
diff --git a/assets/ic_google.png b/assets/ic_google.png
new file mode 100644
index 0000000..554ec0d
Binary files /dev/null and b/assets/ic_google.png differ
diff --git a/assets/ipa_sains_kerja.json b/assets/ipa_sains_kerja.json
new file mode 100644
index 0000000..78ee2ab
--- /dev/null
+++ b/assets/ipa_sains_kerja.json
@@ -0,0 +1,734 @@
+{
+ "J01A-Kerja": {
+ "name": "IPA (Sains Murni) - Kerja",
+ "description": "Fokus: Biologi, Kimia, Fisika (pekerjaan di bidang kesehatan, sains, farmasi, laboratorium, lingkungan) tanpa kuliah formal, bisa belajar mandiri melalui kursus, sertifikasi, dan pelatihan.",
+ "categories": [
+ "Kesehatan & Sains",
+ "Penelitian",
+ "Pekerjaan Sains",
+ "Teknis Laboratorium"
+ ],
+ "minat": {
+ "Kedokteran": {
+ "pertanyaan": [
+ "AKER01: Saya tertarik bekerja di rumah sakit atau klinik tanpa kuliah formal [6]",
+ "AKER02: Saya tertarik ingin mempelajari cara dasar merawat pasien atau membantu mereka sembuh [7]",
+ "AKER03: Saya tertarik untuk mendapatkan pengetahuan medis melalui kursus online atau pelatihan [6]",
+ "AKER04: Saya tertarik ingin bekerja sebagai asisten medis atau tenaga medis tanpa harus menjadi dokter [5]",
+ "AKER05: Saya tertarik dengan pekerjaan administrasi di lingkungan rumah sakit atau klinik [5]",
+ "AKER06: Saya tertarik memiliki empati tinggi dan ingin membantu pasien secara langsung [5]"
+ ],
+ "karir": [
+ "AKAR01: Asisten Medis [20]",
+ "AKAR02: Tenaga Kesehatan [20]",
+ "AKAR03: Staf Klinik [20]",
+ "AKAR04: Administrasi Rumah Sakit [20]",
+ "AKAR05: Teknisi Alat Kesehatan [20]",
+ "AKAR06: Customer Service Asuransi Kesehatan [20]"
+ ],
+ "jurusan_terkait": [
+ "D3 Keperawatan",
+ "D3 Teknologi Laboratorium Medik",
+ "D3 Farmasi",
+ "D3 Rekam Medis dan Informasi Kesehatan",
+ "D3 Teknologi Bank Darah",
+ "S1 Kesehatan Masyarakat"
+ ],
+ "rekomendasi_kursus": [
+ "Pelatihan Bantuan Hidup Dasar (BHD)",
+ "Kursus Asisten Perawat Tersertifikasi",
+ "Pelatihan Administrasi Rumah Sakit",
+ "Sertifikasi Teknisi Alat Kesehatan"
+ ]
+ },
+ "Sains": {
+ "pertanyaan": [
+ "AKER07: Saya tertarik ingin menjadi peneliti atau bekerja di laboratorium [7]",
+ "AKER08: Saya tertarik senang melakukan eksperimen ilmiah dan mempelajari data percobaan [6]",
+ "AKER09: Saya tertarik untuk bekerja di bidang riset atau pengembangan produk tanpa kuliah formal [6]",
+ "AKER10: Saya tertarik ingin bekerja dengan tim sains di industri atau lembaga penelitian [6]",
+ "AKER11: Saya tertarik teliti dan mampu mengikuti protokol dengan tepat [5]",
+ "AKER12: Saya tertarik dalam pengolahan dan analisis data penelitian [5]"
+ ],
+ "karir": [
+ "AKAR07: Teknisi Laboratorium [20]",
+ "AKAR08: Teknisi Peralatan Sains [20]",
+ "AKAR09: Staf R&D [20]",
+ "AKAR10: Pengumpul Data Lapangan [20]",
+ "AKAR11: Operator Peralatan Penelitian [20]",
+ "AKAR12: Staf Pengujian Kualitas [20]"
+ ],
+ "jurusan_terkait": [
+ "D3 Analis Kimia",
+ "D3 Teknik Kimia",
+ "S1 Kimia",
+ "S1 Biologi",
+ "S1 Fisika",
+ "D3 MIPA"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Laboratorium",
+ "Pelatihan Good Laboratory Practice (GLP)",
+ "Kursus Pengoperasian Alat Laboratorium",
+ "Pelatihan Analisis Data Dasar",
+ "Sertifikasi K3 Laboratorium"
+ ]
+ },
+ "Farmasi": {
+ "pertanyaan": [
+ "AKER13: Saya tertarik untuk bekerja di apotek atau di industri farmasi tanpa kuliah formal [6]",
+ "AKER14: Saya tertarik ingin mempelajari bagaimana obat bekerja melalui kursus atau pelatihan singkat [6]",
+ "AKER15: Saya tertarik dengan pengujian obat dan kualitas farmasi di industri [6]",
+ "AKER16: Saya tertarik ingin menjadi bagian dari tim yang mengembangkan produk obat [6]",
+ "AKER17: Saya tertarik teliti dalam mengukur dan mencatat informasi penting [6]",
+ "AKER18: Saya tertarik dalam penyimpanan dan pendistribusian obat-obatan [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "C"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "AKAR13: Asisten Apoteker [20]",
+ "AKAR14: Teknisi Farmasi [20]",
+ "AKAR15: Staf Produksi Obat [20]",
+ "AKAR16: Pengujian Kualitas Obat [20]",
+ "AKAR17: Staf Logistik Farmasi [20]",
+ "AKAR18: Sales Representative Produk Farmasi [20]",
+ "AKAR19: Staf Administrasi Apotek [20]"
+ ],
+ "karir_riasec": [
+ "I/C",
+ "I/R",
+ "R/C",
+ "I/C",
+ "C",
+ "E/S",
+ "C"
+ ],
+ "jurusan_terkait": [
+ "D3 Farmasi",
+ "S1 Farmasi",
+ "D3 Teknik Kimia",
+ "D3 Analis Kimia",
+ "S1 Kimia Farmasi"
+ ],
+ "rekomendasi_kursus": [
+ "Pelatihan Asisten Apoteker",
+ "Sertifikasi Good Manufacturing Practice (GMP)",
+ "Kursus Pengelolaan Obat",
+ "Pelatihan Teknik Penjualan Produk Farmasi",
+ "Kursus Komputer untuk Administrasi Apotek"
+ ]
+ },
+ "Laboratorium": {
+ "pertanyaan": [
+ "AKER19: Saya tertarik bekerja dengan peralatan dan instrumen laboratorium [6]",
+ "AKER20: Saya tertarik menyukai pekerjaan yang membutuhkan ketelitian dan konsistensi tinggi [6]",
+ "AKER21: Saya tertarik ingin bekerja di laboratorium klinik, industri, atau penelitian [6]",
+ "AKER22: Saya tertarik untuk mempelajari teknik-teknik analisis laboratorium [6]",
+ "AKER23: Saya tertarik mampu mengikuti protokol dan prosedur standar dengan tepat [6]",
+ "AKER24: Saya tertarik dalam persiapan sampel dan pengujian bahan [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "C"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "C"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "AKAR20: Teknisi Laboratorium Klinik [20]",
+ "AKAR21: Teknisi Laboratorium Industri [20]",
+ "AKAR22: Staf Pengujian Kualitas [20]",
+ "AKAR23: Teknisi Instrumentasi [20]",
+ "AKAR24: Staf Pengambilan Sampel [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "I/R",
+ "I/C",
+ "R/I",
+ "R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknologi Laboratorium Medik",
+ "D3 Analis Kimia",
+ "D3 Analis Kesehatan",
+ "S1 Kimia",
+ "S1 Biologi",
+ "D3 Mikrobiologi"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Laboratorium",
+ "Pelatihan Teknik Dasar Mikrobiologi",
+ "Kursus Instrumentasi Laboratorium",
+ "Pelatihan Sistem Manajemen Mutu Laboratorium",
+ "Kursus Pengambilan dan Penanganan Sampel"
+ ]
+ },
+ "Lingkungan": {
+ "pertanyaan": [
+ "AKER25: Saya tertarik untuk bekerja dalam pemantauan dan pengelolaan lingkungan [6]",
+ "AKER26: Saya tertarik peduli terhadap isu-isu lingkungan dan pelestarian alam [7]",
+ "AKER27: Saya tertarik suka bekerja di lapangan dan mengumpulkan data lingkungan [7]",
+ "AKER28: Saya tertarik untuk mempelajari cara mengukur polusi dan kualitas lingkungan [6]",
+ "AKER29: Saya tertarik ingin bekerja dalam proyek konservasi atau pengelolaan limbah [6]",
+ "AKER30: Saya tertarik dalam pendidikan lingkungan dan kampanye kesadaran [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "A"
+ ],
+ "bobot": [
+ 2,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "AKAR25: Teknisi Pemantauan Lingkungan [20]",
+ "AKAR26: Staf Pengelolaan Limbah [20]",
+ "AKAR27: Asisten Pengambil Sampel Lingkungan [20]",
+ "AKAR28: Operator Pengolahan Air [20]",
+ "AKAR29: Staf Lapangan Konservasi [20]",
+ "AKAR30: Teknisi Pengendalian Polusi [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "R/C",
+ "R/I",
+ "R",
+ "R/S",
+ "I/R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Lingkungan",
+ "S1 Teknik Lingkungan",
+ "S1 Ilmu Lingkungan",
+ "S1 Biologi Lingkungan",
+ "D3 Pengelolaan Sumber Daya Air dan Lingkungan"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Lingkungan",
+ "Pelatihan Pengelolaan Limbah",
+ "Kursus Pengambilan Sampel Lingkungan",
+ "Pelatihan Operator Instalasi Pengolahan Air",
+ "Kursus K3 Lingkungan"
+ ]
+ },
+ "Pangan dan Nutrisi": {
+ "pertanyaan": [
+ "AKER31: Saya tertarik bekerja dalam pengujian dan pengembangan produk pangan [6]",
+ "AKER32: Saya tertarik ingin mempelajari cara menganalisis kualitas dan keamanan makanan [7]",
+ "AKER33: Saya tertarik untuk bekerja di industri pengolahan pangan [5]",
+ "AKER34: Saya tertarik peduli tentang nutrisi dan dampaknya terhadap kesehatan [5]",
+ "AKER35: Saya tertarik dalam produksi dan pengawasan makanan [5]",
+ "AKER36: Saya tertarik ingin membantu orang dengan masalah nutrisi dan diet [4]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "S"
+ ],
+ "bobot": [
+ 4
+ ]
+ }
+ ],
+ "karir": [
+ "AKAR31: Teknisi Pengujian Pangan [20]",
+ "AKAR32: Asisten Quality Control Makanan [20]",
+ "AKAR33: Staf Produksi Industri Pangan [20]",
+ "AKAR34: Teknisi Pengolahan Makanan [20]",
+ "AKAR35: Staf Pengembangan Produk Pangan [20]",
+ "AKAR36: Asisten Food Safety [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "C/I",
+ "R",
+ "R/I",
+ "I/R",
+ "C/I"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknologi Pangan",
+ "S1 Ilmu dan Teknologi Pangan",
+ "D3 Gizi",
+ "S1 Ilmu Gizi",
+ "D3 Pengawasan Mutu Pangan"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Keamanan Pangan (HACCP)",
+ "Pelatihan Quality Control Makanan",
+ "Kursus Pengujian Nutrisi Pangan",
+ "Pelatihan Good Manufacturing Practice (GMP) untuk Pangan",
+ "Kursus Dasar Nutrisi dan Diet"
+ ]
+ },
+ "Peralatan Medis": {
+ "pertanyaan": [
+ "AKER37: Saya tertarik bekerja dengan peralatan dan teknologi medis [6]",
+ "AKER38: Saya tertarik ingin mempelajari cara mengoperasikan dan memelihara alat medis [7]",
+ "AKER39: Saya tertarik untuk bekerja di rumah sakit atau perusahaan peralatan medis [5]",
+ "AKER40: Saya tertarik memiliki keterampilan teknis dan ingin menerapkannya di bidang kesehatan [6]",
+ "AKER41: Saya tertarik dalam pengenalan dan pelatihan penggunaan peralatan medis [5]",
+ "AKER42: Saya tertarik suka memperbaiki dan memecahkan masalah pada perangkat elektronik [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ }
+ ],
+ "karir": [
+ "AKAR37: Teknisi Peralatan Medis [20]",
+ "AKAR38: Teknisi Laboratorium Medis [20]",
+ "AKAR39: Staf Penjualan Alat Kesehatan [20]",
+ "AKAR40: Teknisi Pemeliharaan Alat Medis [20]",
+ "AKAR41: Staf Logistik Peralatan Medis [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "I/R",
+ "E/S",
+ "R",
+ "C/R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Elektromedik",
+ "D3 Teknik Elektronika",
+ "D3 Teknik Biomedis",
+ "S1 Teknik Biomedis",
+ "D3 Teknik Instrumentasi"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Peralatan Medis",
+ "Pelatihan Dasar Radiologi",
+ "Kursus Elektrokardiografi",
+ "Pelatihan Pemeliharaan Peralatan Laboratorium",
+ "Kursus Penjualan Alat Kesehatan"
+ ]
+ }
+ },
+ "semua_pertanyaan": [
+ {
+ "kode_pertanyaan": "AKER01",
+ "isi_pertanyaan": "Saya tertarik bekerja di rumah sakit atau klinik tanpa kuliah formal"
+ },
+ {
+ "kode_pertanyaan": "AKER02",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara dasar merawat pasien atau membantu mereka sembuh"
+ },
+ {
+ "kode_pertanyaan": "AKER03",
+ "isi_pertanyaan": "Saya tertarik untuk mendapatkan pengetahuan medis melalui kursus online atau pelatihan"
+ },
+ {
+ "kode_pertanyaan": "AKER04",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja sebagai asisten medis atau tenaga medis tanpa harus menjadi dokter"
+ },
+ {
+ "kode_pertanyaan": "AKER05",
+ "isi_pertanyaan": "Saya tertarik dengan pekerjaan administrasi di lingkungan rumah sakit atau klinik"
+ },
+ {
+ "kode_pertanyaan": "AKER06",
+ "isi_pertanyaan": "Saya tertarik memiliki empati tinggi dan ingin membantu pasien secara langsung"
+ },
+ {
+ "kode_pertanyaan": "AKER07",
+ "isi_pertanyaan": "Saya tertarik ingin menjadi peneliti atau bekerja di laboratorium"
+ },
+ {
+ "kode_pertanyaan": "AKER08",
+ "isi_pertanyaan": "Saya tertarik senang melakukan eksperimen ilmiah dan mempelajari data percobaan"
+ },
+ {
+ "kode_pertanyaan": "AKER09",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di bidang riset atau pengembangan produk tanpa kuliah formal"
+ },
+ {
+ "kode_pertanyaan": "AKER10",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja dengan tim sains di industri atau lembaga penelitian"
+ },
+ {
+ "kode_pertanyaan": "AKER11",
+ "isi_pertanyaan": "Saya tertarik teliti dan mampu mengikuti protokol dengan tepat"
+ },
+ {
+ "kode_pertanyaan": "AKER12",
+ "isi_pertanyaan": "Saya tertarik dalam pengolahan dan analisis data penelitian"
+ },
+ {
+ "kode_pertanyaan": "AKER13",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di apotek atau di industri farmasi tanpa kuliah formal"
+ },
+ {
+ "kode_pertanyaan": "AKER14",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari bagaimana obat bekerja melalui kursus atau pelatihan singkat"
+ },
+ {
+ "kode_pertanyaan": "AKER15",
+ "isi_pertanyaan": "Saya tertarik dengan pengujian obat dan kualitas farmasi di industri"
+ },
+ {
+ "kode_pertanyaan": "AKER16",
+ "isi_pertanyaan": "Saya tertarik ingin menjadi bagian dari tim yang mengembangkan produk obat"
+ },
+ {
+ "kode_pertanyaan": "AKER17",
+ "isi_pertanyaan": "Saya tertarik teliti dalam mengukur dan mencatat informasi penting"
+ },
+ {
+ "kode_pertanyaan": "AKER18",
+ "isi_pertanyaan": "Saya tertarik dalam penyimpanan dan pendistribusian obat-obatan"
+ },
+ {
+ "kode_pertanyaan": "AKER19",
+ "isi_pertanyaan": "Saya tertarik bekerja dengan peralatan dan instrumen laboratorium"
+ },
+ {
+ "kode_pertanyaan": "AKER20",
+ "isi_pertanyaan": "Saya tertarik menyukai pekerjaan yang membutuhkan ketelitian dan konsistensi tinggi"
+ },
+ {
+ "kode_pertanyaan": "AKER21",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di laboratorium klinik, industri, atau penelitian"
+ },
+ {
+ "kode_pertanyaan": "AKER22",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari teknik-teknik analisis laboratorium"
+ },
+ {
+ "kode_pertanyaan": "AKER23",
+ "isi_pertanyaan": "Saya tertarik mampu mengikuti protokol dan prosedur standar dengan tepat"
+ },
+ {
+ "kode_pertanyaan": "AKER24",
+ "isi_pertanyaan": "Saya tertarik dalam persiapan sampel dan pengujian bahan"
+ },
+ {
+ "kode_pertanyaan": "AKER25",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja dalam pemantauan dan pengelolaan lingkungan"
+ },
+ {
+ "kode_pertanyaan": "AKER26",
+ "isi_pertanyaan": "Saya tertarik peduli terhadap isu-isu lingkungan dan pelestarian alam"
+ },
+ {
+ "kode_pertanyaan": "AKER27",
+ "isi_pertanyaan": "Saya tertarik suka bekerja di lapangan dan mengumpulkan data lingkungan"
+ },
+ {
+ "kode_pertanyaan": "AKER28",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari cara mengukur polusi dan kualitas lingkungan"
+ },
+ {
+ "kode_pertanyaan": "AKER29",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja dalam proyek konservasi atau pengelolaan limbah"
+ },
+ {
+ "kode_pertanyaan": "AKER30",
+ "isi_pertanyaan": "Saya tertarik dalam pendidikan lingkungan dan kampanye kesadaran"
+ },
+ {
+ "kode_pertanyaan": "AKER31",
+ "isi_pertanyaan": "Saya tertarik bekerja dalam pengujian dan pengembangan produk pangan"
+ },
+ {
+ "kode_pertanyaan": "AKER32",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara menganalisis kualitas dan keamanan makanan"
+ },
+ {
+ "kode_pertanyaan": "AKER33",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di industri pengolahan pangan"
+ },
+ {
+ "kode_pertanyaan": "AKER34",
+ "isi_pertanyaan": "Saya tertarik peduli tentang nutrisi dan dampaknya terhadap kesehatan"
+ },
+ {
+ "kode_pertanyaan": "AKER35",
+ "isi_pertanyaan": "Saya tertarik dalam produksi dan pengawasan makanan"
+ },
+ {
+ "kode_pertanyaan": "AKER36",
+ "isi_pertanyaan": "Saya tertarik ingin membantu orang dengan masalah nutrisi dan diet"
+ },
+ {
+ "kode_pertanyaan": "AKER37",
+ "isi_pertanyaan": "Saya tertarik bekerja dengan peralatan dan teknologi medis"
+ },
+ {
+ "kode_pertanyaan": "AKER38",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara mengoperasikan dan memelihara alat medis"
+ },
+ {
+ "kode_pertanyaan": "AKER39",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di rumah sakit atau perusahaan peralatan medis"
+ },
+ {
+ "kode_pertanyaan": "AKER40",
+ "isi_pertanyaan": "Saya tertarik memiliki keterampilan teknis dan ingin menerapkannya di bidang kesehatan"
+ },
+ {
+ "kode_pertanyaan": "AKER41",
+ "isi_pertanyaan": "Saya tertarik dalam pengenalan dan pelatihan penggunaan peralatan medis"
+ },
+ {
+ "kode_pertanyaan": "AKER42",
+ "isi_pertanyaan": "Saya tertarik suka memperbaiki dan memecahkan masalah pada perangkat elektronik"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/assets/ipa_sains_kuliah.json b/assets/ipa_sains_kuliah.json
new file mode 100644
index 0000000..b9e4648
--- /dev/null
+++ b/assets/ipa_sains_kuliah.json
@@ -0,0 +1,1046 @@
+{
+ "J01A": {
+ "name": "IPA (Sains Murni)",
+ "description": "Fokus: Biologi, Kimia, Fisika (kedokteran, farmasi, sains, teknik biomedis, lingkungan)",
+ "categories": [
+ "Kesehatan & Sains"
+ ],
+ "riasec": {
+ "primary": "I (Investigative)",
+ "secondary": "R (Realistic)",
+ "tertiary": "S (Social)",
+ "code": "IRS"
+ },
+ "minat": {
+ "Kedokteran": {
+ "pertanyaan": [
+ "AKUL01: Saya tertarik untuk mempelajari bagaimana tubuh manusia bekerja [5]",
+ "AKUL02: Saya tertarik ingin membantu orang lain untuk sembuh dari penyakit [6]",
+ "AKUL03: Saya tertarik mempelajari cara-cara medis untuk mendiagnosis dan mengobati penyakit [7]",
+ "AKUL04: Saya tertarik suka belajar tentang sistem organ tubuh dan bagaimana mereka berfungsi [6]",
+ "AKUL05: Saya tertarik untuk mengikuti perkembangan teknologi dalam dunia kedokteran [6]",
+ "AKUL06: Saya tertarik memiliki ketelitian tinggi dan mampu bekerja di bawah tekanan [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Dokter Umum [20]",
+ "Dokter Spesialis [20]",
+ "Perawat Medis [20]",
+ "Dokter Gigi [20]",
+ "Ahli Bedah [20]",
+ "Dokter Forensik [20]",
+ "Dosen/Peneliti Kedokteran [20]"
+ ],
+ "karir_riasec": [
+ "I/S",
+ "I/S",
+ "S/I",
+ "I/S",
+ "I/R",
+ "I/R",
+ "I"
+ ],
+ "jurusan_terkait": [
+ "AJUR01: Kedokteran Umum",
+ "AJUR02: Kedokteran Gigi",
+ "AJUR03: Kedokteran Hewan",
+ "AJUR04: Kesehatan Masyarakat",
+ "AJUR05: Keperawatan",
+ "AJUR06: Kebidanan"
+ ],
+ "universitas_rekomendasi": [
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Airlangga (UNAIR)",
+ "Universitas Padjadjaran (UNPAD)",
+ "Universitas Hasanuddin (UNHAS)",
+ "Universitas Diponegoro (UNDIP)",
+ "Universitas Brawijaya (UB)"
+ ]
+ },
+ "Sains": {
+ "pertanyaan": [
+ "AKUL07: Saya tertarik untuk melakukan eksperimen ilmiah dan menemukan sesuatu yang baru [6]",
+ "AKUL08: Saya tertarik senang menganalisis data dan hasil percobaan [7]",
+ "AKUL09: Saya tertarik suka belajar tentang alam dan bagaimana semua itu bekerja [6]",
+ "AKUL10: Saya tertarik ingin memahami lebih dalam tentang dunia di sekitar Anda, seperti hewan, tumbuhan, atau planet [7]",
+ "AKUL11: Saya tertarik menikmati kegiatan praktikum di laboratorium [7]",
+ "AKUL12: Saya tertarik untuk memecahkan masalah lingkungan menggunakan pendekatan ilmiah [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 5,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 4,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 5,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Peneliti Biologi [20]",
+ "Peneliti Kimia [20]",
+ "Asisten Dosen/Dosen [20]",
+ "Scientist R&D [20]",
+ "Ahli Ekologi [20]",
+ "Ahli Fisika [20]",
+ "Ahli Meteorologi [20]",
+ "Ahli Geologi [20]"
+ ],
+ "karir_riasec": [
+ "I",
+ "I",
+ "I/S",
+ "I",
+ "I/R",
+ "I",
+ "I",
+ "I/R"
+ ],
+ "jurusan_terkait": [
+ "AJUR07: Biologi",
+ "AJUR08: Kimia",
+ "AJUR09: Fisika",
+ "AJUR10: Matematika",
+ "AJUR11: Fisika (peminatan Astrofisika)",
+ "AJUR12: Geofisika",
+ "AJUR13: Meteorologi dan Klimatologi"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Institut Pertanian Bogor (IPB)",
+ "Universitas Padjadjaran (UNPAD)",
+ "Universitas Airlangga (UNAIR)",
+ "Institut Teknologi Sepuluh Nopember (ITS)"
+ ]
+ },
+ "Farmasi": {
+ "pertanyaan": [
+ "AKUL13: Saya tertarik untuk mempelajari bagaimana obat bekerja dalam tubuh manusia [6]",
+ "AKUL14: Saya tertarik ingin membantu menciptakan obat-obatan yang dapat menyembuhkan penyakit [6]",
+ "AKUL15: Saya tertarik suka belajar tentang bahan kimia dan bagaimana mereka digunakan untuk tujuan medis [7]",
+ "AKUL16: Saya tertarik ingin tahu lebih banyak tentang bagaimana obat dikembangkan dan diuji [6]",
+ "AKUL17: Saya tertarik pada pembuatan dan pengembangan kosmetik dan produk perawatan tubuh [6]",
+ "AKUL18: Saya tertarik memiliki ketelitian tinggi dalam mengukur dan mencampur bahan-bahan kimia [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "A"
+ ],
+ "bobot": [
+ 2,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Apoteker [20]",
+ "Peneliti Obat [20]",
+ "Quality Control Farmasi [20]",
+ "Asisten Apoteker [20]",
+ "Ahli Formulasi [20]",
+ "Apoteker Klinis [20]"
+ ],
+ "karir_riasec": [
+ "I/C",
+ "I",
+ "C/I",
+ "C/I",
+ "I/R",
+ "I/S"
+ ],
+ "jurusan_terkait": [
+ "AJUR14: Farmasi",
+ "AJUR15: Kimia",
+ "AJUR16: Teknologi Pangan",
+ "AJUR17: Bioteknologi",
+ "AJUR18: Teknik Kimia",
+ "AJUR19: Biokimia"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Airlangga (UNAIR)",
+ "Universitas Padjadjaran (UNPAD)",
+ "Universitas Sanata Dharma (USD)",
+ "Universitas Hasanuddin (UNHAS)"
+ ]
+ },
+ "Bioteknologi": {
+ "pertanyaan": [
+ "AKUL19: Saya tertarik untuk menggabungkan teknologi dengan ilmu biologi [7]",
+ "AKUL20: Saya tertarik ingin mengembangkan produk atau teknologi baru berdasarkan proses biologis [6]",
+ "AKUL21: Saya tertarik pada rekayasa genetika dan aplikasinya [2]",
+ "AKUL22: Saya tertarik ingin bekerja di laboratorium dengan peralatan canggih [7]",
+ "AKUL23: Saya tertarik untuk meneliti cara meningkatkan kualitas pangan melalui bioteknologi [6]",
+ "AKUL24: Saya tertarik ingin berkontribusi dalam pengembangan terapi gen atau obat-obatan baru [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Peneliti Bioteknologi [20]",
+ "Ahli Mikrobiologi [20]",
+ "Teknisi Laboratorium [20]",
+ "Peneliti Biologi Molekuler [20]",
+ "Peneliti Industri Pangan [20]",
+ "Ilmuwan Riset dan Pengembangan [20]"
+ ],
+ "karir_riasec": [
+ "I",
+ "I",
+ "R/I",
+ "I",
+ "I/R",
+ "I"
+ ],
+ "jurusan_terkait": [
+ "AJUR20: Bioteknologi",
+ "AJUR21: Teknologi Pangan",
+ "AJUR22: Mikrobiologi",
+ "AJUR23: Teknik Biomedis",
+ "AJUR24: Biologi Molekuler",
+ "AJUR25: Biologi (peminatan Genetika)"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Institut Pertanian Bogor (IPB)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Brawijaya (UB)",
+ "Universitas Airlangga (UNAIR)",
+ "Universitas Indonesia (UI)",
+ "Universitas Surabaya (UBAYA)"
+ ]
+ },
+ "Lingkungan dan Konservasi": {
+ "pertanyaan": [
+ "AKUL25: Saya tertarik peduli terhadap masalah lingkungan dan pelestarian alam [7]",
+ "AKUL26: Saya tertarik untuk mempelajari ekosistem dan keanekaragaman hayati Indonesia [6]",
+ "AKUL27: Saya tertarik ingin mengembangkan solusi untuk mengatasi polusi dan perubahan iklim [7]",
+ "AKUL28: Saya tertarik senang melakukan penelitian di lapangan/alam terbuka [6]",
+ "AKUL29: Saya tertarik untuk melindungi spesies terancam punah dan habitat alaminya [7]",
+ "AKUL30: Saya tertarik ingin mengedukasi masyarakat tentang pentingnya pelestarian lingkungan [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "S",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "E"
+ ],
+ "bobot": [
+ 2,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Ahli Konservasi [20]",
+ "Peneliti Lingkungan [20]",
+ "Konsultan AMDAL [20]",
+ "Spesialis Pengelolaan Limbah [20]",
+ "Peneliti Ekosistem [20]",
+ "Edukator Lingkungan [20]",
+ "Ahli Kehutanan [20]"
+ ],
+ "karir_riasec": [
+ "I/S",
+ "I/R",
+ "I/E",
+ "R/C",
+ "I",
+ "S/E",
+ "I/R"
+ ],
+ "jurusan_terkait": [
+ "AJUR26: Ilmu Lingkungan",
+ "AJUR27: Biologi (peminatan Konservasi)",
+ "AJUR28: Kehutanan",
+ "AJUR29: Teknik Lingkungan",
+ "AJUR30: Oseanografi",
+ "AJUR31: Meteorologi dan Geofisika"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Pertanian Bogor (IPB)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Indonesia (UI)",
+ "Universitas Diponegoro (UNDIP)",
+ "Universitas Hasanuddin (UNHAS)",
+ "Universitas Padjajaran (UNPAD)",
+ "Universitas Mulawarman (UNMUL)"
+ ]
+ },
+ "Geosains": {
+ "pertanyaan": [
+ "AKUL31: Saya tertarik mempelajari struktur dan proses yang terjadi di bumi [7]",
+ "AKUL32: Saya tertarik ingin memahami tentang gempa bumi, gunung berapi, dan bencana alam lainnya [6]",
+ "AKUL33: Saya tertarik suka mempelajari tentang batuan, mineral, dan sumber daya alam [7]",
+ "AKUL34: Saya tertarik pada eksplorasi sumber daya tambang dan energi [7]",
+ "AKUL35: Saya tertarik ingin bekerja di lapangan untuk menganalisis formasi geologis [7]",
+ "AKUL36: Saya tertarik pada pemetaan dan pemodelan fenomena geologi [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 5,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Ahli Geologi [20]",
+ "Ahli Vulkanologi [20]",
+ "Ahli Seismologi [20]",
+ "Ahli Hidrologi [20]",
+ "Geofisikawan [20]",
+ "Ahli Geoteknik [20]",
+ "Ahli Pertambangan [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "I/R",
+ "I",
+ "I/R",
+ "I",
+ "I/R",
+ "R/I"
+ ],
+ "jurusan_terkait": [
+ "AJUR32: Geologi",
+ "AJUR33: Geofisika",
+ "AJUR34: Teknik Perminyakan",
+ "AJUR35: Teknik Pertambangan",
+ "AJUR36: Oseanografi",
+ "AJUR37: Geodesi"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Indonesia (UI)",
+ "Universitas Padjadjaran (UNPAD)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Pembangunan Nasional Veteran Yogyakarta (UPN)",
+ "Universitas Hasanuddin (UNHAS)"
+ ]
+ },
+ "Neurosains": {
+ "pertanyaan": [
+ "AKUL37: Saya tertarik mempelajari bagaimana otak manusia bekerja [7]",
+ "AKUL38: Saya tertarik ingin memahami hubungan antara otak dan perilaku manusia [6]",
+ "AKUL39: Saya tertarik pada penelitian penyakit neurologis dan cara mengobatinya [7]",
+ "AKUL40: Saya tertarik suka mempelajari sistem saraf dan transmisi sinyal di otak [6]",
+ "AKUL41: Saya tertarik pada kecerdasan buatan dan bagaimana meniru fungsi otak [7]",
+ "AKUL42: Saya tertarik ingin membantu orang dengan gangguan neurologis atau psikiatri [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Peneliti di Bidang Neurologi [20]",
+ "Ahli Saraf (Neurolog) [20]",
+ "Teknisi Pemindaian Otak [20]",
+ "Farmakolog Klinis [20]",
+ "Psikiater [20]",
+ "Fisioterapis Spesialis Neurologis [20]"
+ ],
+ "karir_riasec": [
+ "I",
+ "I/S",
+ "R/I",
+ "I",
+ "I/S",
+ "S/I"
+ ],
+ "jurusan_terkait": [
+ "AJUR38: Kedokteran (spesialisasi Neurologi)",
+ "AJUR39: Psikologi",
+ "AJUR40: Biologi",
+ "AJUR41: Teknologi Medis",
+ "AJUR42: Ilmu Biomedis",
+ "AJUR43: Farmakologi"
+ ],
+ "universitas_rekomendasi": [
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Airlangga (UNAIR)",
+ "Universitas Padjadjaran (UNPAD)",
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Brawijaya (UB)",
+ "Universitas Katolik Indonesia Atma Jaya"
+ ]
+ },
+ "Teknik Biomedis": {
+ "pertanyaan": [
+ "AKUL43: Saya tertarik menggabungkan ilmu teknik dengan medis [6]",
+ "AKUL44: Saya tertarik ingin merancang alat dan teknologi untuk diagnosis dan pengobatan [6]",
+ "AKUL45: Saya tertarik pada pengembangan organ buatan dan implan [6]",
+ "AKUL46: Saya tertarik suka mempelajari cara kerja peralatan medis canggih [6]",
+ "AKUL47: Saya tertarik pada pengolahan citra medis dan analisis data kesehatan [6]",
+ "AKUL48: Saya tertarik ingin berkontribusi dalam inovasi teknologi kesehatan [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "A"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Biomedis [20]",
+ "Pengembang Alat Medis [20]",
+ "Radiografer [20]",
+ "Spesialis Teknik Elektromedis [20]",
+ "Peneliti Alat Kesehatan [20]",
+ "Teknisi Peralatan Medis [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "I/R/A",
+ "I/R",
+ "I/E",
+ "I",
+ "R/I"
+ ],
+ "jurusan_terkait": [
+ "AJUR44: Teknik Biomedis",
+ "AJUR45: Teknologi Medis",
+ "AJUR46: Fisika (peminatan Medis)",
+ "AJUR47: Teknik Elektro",
+ "AJUR48: Ilmu Komputer",
+ "AJUR49: Teknik Mesin"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Universitas Airlangga (UNAIR)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "Swiss German University"
+ ]
+ }
+ },
+ "semua_pertanyaan": [
+ {
+ "kode_pertanyaan": "AKUL01",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari bagaimana tubuh manusia bekerja"
+ },
+ {
+ "kode_pertanyaan": "AKUL02",
+ "isi_pertanyaan": "Saya tertarik ingin membantu orang lain untuk sembuh dari penyakit"
+ },
+ {
+ "kode_pertanyaan": "AKUL03",
+ "isi_pertanyaan": "Saya tertarik mempelajari cara-cara medis untuk mendiagnosis dan mengobati penyakit"
+ },
+ {
+ "kode_pertanyaan": "AKUL04",
+ "isi_pertanyaan": "Saya tertarik suka belajar tentang sistem organ tubuh dan bagaimana mereka berfungsi"
+ },
+ {
+ "kode_pertanyaan": "AKUL05",
+ "isi_pertanyaan": "Saya tertarik untuk mengikuti perkembangan teknologi dalam dunia kedokteran"
+ },
+ {
+ "kode_pertanyaan": "AKUL06",
+ "isi_pertanyaan": "Saya tertarik memiliki ketelitian tinggi dan mampu bekerja di bawah tekanan"
+ },
+ {
+ "kode_pertanyaan": "AKUL07",
+ "isi_pertanyaan": "Saya tertarik untuk melakukan eksperimen ilmiah dan menemukan sesuatu yang baru"
+ },
+ {
+ "kode_pertanyaan": "AKUL08",
+ "isi_pertanyaan": "Saya tertarik senang menganalisis data dan hasil percobaan"
+ },
+ {
+ "kode_pertanyaan": "AKUL09",
+ "isi_pertanyaan": "Saya tertarik suka belajar tentang alam dan bagaimana semua itu bekerja"
+ },
+ {
+ "kode_pertanyaan": "AKUL10",
+ "isi_pertanyaan": "Saya tertarik ingin memahami lebih dalam tentang dunia di sekitar Anda, seperti hewan, tumbuhan, atau planet"
+ },
+ {
+ "kode_pertanyaan": "AKUL11",
+ "isi_pertanyaan": "Saya tertarik menikmati kegiatan praktikum di laboratorium"
+ },
+ {
+ "kode_pertanyaan": "AKUL12",
+ "isi_pertanyaan": "Saya tertarik untuk memecahkan masalah lingkungan menggunakan pendekatan ilmiah"
+ },
+ {
+ "kode_pertanyaan": "AKUL13",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari bagaimana obat bekerja dalam tubuh manusia"
+ },
+ {
+ "kode_pertanyaan": "AKUL14",
+ "isi_pertanyaan": "Saya tertarik ingin membantu menciptakan obat-obatan yang dapat menyembuhkan penyakit"
+ },
+ {
+ "kode_pertanyaan": "AKUL15",
+ "isi_pertanyaan": "Saya tertarik suka belajar tentang bahan kimia dan bagaimana mereka digunakan untuk tujuan medis"
+ },
+ {
+ "kode_pertanyaan": "AKUL16",
+ "isi_pertanyaan": "Saya tertarik ingin tahu lebih banyak tentang bagaimana obat dikembangkan dan diuji"
+ },
+ {
+ "kode_pertanyaan": "AKUL17",
+ "isi_pertanyaan": "Saya tertarik pada pembuatan dan pengembangan kosmetik dan produk perawatan tubuh"
+ },
+ {
+ "kode_pertanyaan": "AKUL18",
+ "isi_pertanyaan": "Saya tertarik memiliki ketelitian tinggi dalam mengukur dan mencampur bahan-bahan kimia"
+ },
+ {
+ "kode_pertanyaan": "AKUL19",
+ "isi_pertanyaan": "Saya tertarik untuk menggabungkan teknologi dengan ilmu biologi"
+ },
+ {
+ "kode_pertanyaan": "AKUL20",
+ "isi_pertanyaan": "Saya tertarik ingin mengembangkan produk atau teknologi baru berdasarkan proses biologis"
+ },
+ {
+ "kode_pertanyaan": "AKUL21",
+ "isi_pertanyaan": "Saya tertarik pada rekayasa genetika dan aplikasinya"
+ },
+ {
+ "kode_pertanyaan": "AKUL22",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di laboratorium dengan peralatan canggih"
+ },
+ {
+ "kode_pertanyaan": "AKUL23",
+ "isi_pertanyaan": "Saya tertarik untuk meneliti cara meningkatkan kualitas pangan melalui bioteknologi"
+ },
+ {
+ "kode_pertanyaan": "AKUL24",
+ "isi_pertanyaan": "Saya tertarik ingin berkontribusi dalam pengembangan terapi gen atau obat-obatan baru"
+ },
+ {
+ "kode_pertanyaan": "AKUL25",
+ "isi_pertanyaan": "Saya tertarik peduli terhadap masalah lingkungan dan pelestarian alam"
+ },
+ {
+ "kode_pertanyaan": "AKUL26",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari ekosistem dan keanekaragaman hayati Indonesia"
+ },
+ {
+ "kode_pertanyaan": "AKUL27",
+ "isi_pertanyaan": "Saya tertarik ingin mengembangkan solusi untuk mengatasi polusi dan perubahan iklim"
+ },
+ {
+ "kode_pertanyaan": "AKUL28",
+ "isi_pertanyaan": "Saya tertarik senang melakukan penelitian di lapangan/alam terbuka"
+ },
+ {
+ "kode_pertanyaan": "AKUL29",
+ "isi_pertanyaan": "Saya tertarik untuk melindungi spesies terancam punah dan habitat alaminya"
+ },
+ {
+ "kode_pertanyaan": "AKUL30",
+ "isi_pertanyaan": "Saya tertarik ingin mengedukasi masyarakat tentang pentingnya pelestarian lingkungan"
+ },
+ {
+ "kode_pertanyaan": "AKUL31",
+ "isi_pertanyaan": "Saya tertarik mempelajari struktur dan proses yang terjadi di bumi"
+ },
+ {
+ "kode_pertanyaan": "AKUL32",
+ "isi_pertanyaan": "Saya tertarik ingin memahami tentang gempa bumi, gunung berapi, dan bencana alam lainnya"
+ },
+ {
+ "kode_pertanyaan": "AKUL33",
+ "isi_pertanyaan": "Saya tertarik suka mempelajari tentang batuan, mineral, dan sumber daya alam"
+ },
+ {
+ "kode_pertanyaan": "AKUL34",
+ "isi_pertanyaan": "Saya tertarik pada eksplorasi sumber daya tambang dan energi"
+ },
+ {
+ "kode_pertanyaan": "AKUL35",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di lapangan untuk menganalisis formasi geologis"
+ },
+ {
+ "kode_pertanyaan": "AKUL36",
+ "isi_pertanyaan": "Saya tertarik pada pemetaan dan pemodelan fenomena geologi"
+ },
+ {
+ "kode_pertanyaan": "AKUL37",
+ "isi_pertanyaan": "Saya tertarik mempelajari bagaimana otak manusia bekerja"
+ },
+ {
+ "kode_pertanyaan": "AKUL38",
+ "isi_pertanyaan": "Saya tertarik ingin memahami hubungan antara otak dan perilaku manusia"
+ },
+ {
+ "kode_pertanyaan": "AKUL39",
+ "isi_pertanyaan": "Saya tertarik pada penelitian penyakit neurologis dan cara mengobatinya"
+ },
+ {
+ "kode_pertanyaan": "AKUL40",
+ "isi_pertanyaan": "Saya tertarik suka mempelajari sistem saraf dan transmisi sinyal di otak"
+ },
+ {
+ "kode_pertanyaan": "AKUL41",
+ "isi_pertanyaan": "Saya tertarik pada kecerdasan buatan dan bagaimana meniru fungsi otak"
+ },
+ {
+ "kode_pertanyaan": "AKUL42",
+ "isi_pertanyaan": "Saya tertarik ingin membantu orang dengan gangguan neurologis atau psikiatri"
+ },
+ {
+ "kode_pertanyaan": "AKUL43",
+ "isi_pertanyaan": "Saya tertarik menggabungkan ilmu teknik dengan medis"
+ },
+ {
+ "kode_pertanyaan": "AKUL44",
+ "isi_pertanyaan": "Saya tertarik ingin merancang alat dan teknologi untuk diagnosis dan pengobatan"
+ },
+ {
+ "kode_pertanyaan": "AKUL45",
+ "isi_pertanyaan": "Saya tertarik pada pengembangan organ buatan dan implan"
+ },
+ {
+ "kode_pertanyaan": "AKUL46",
+ "isi_pertanyaan": "Saya tertarik suka mempelajari cara kerja peralatan medis canggih"
+ },
+ {
+ "kode_pertanyaan": "AKUL47",
+ "isi_pertanyaan": "Saya tertarik pada pengolahan citra medis dan analisis data kesehatan"
+ },
+ {
+ "kode_pertanyaan": "AKUL48",
+ "isi_pertanyaan": "Saya tertarik ingin berkontribusi dalam inovasi teknologi kesehatan"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/assets/ipa_teknik_kerja.json b/assets/ipa_teknik_kerja.json
new file mode 100644
index 0000000..5f15e01
--- /dev/null
+++ b/assets/ipa_teknik_kerja.json
@@ -0,0 +1,1181 @@
+{
+ "J01B-Kerja": {
+ "name": "IPA (Teknik) - Kerja",
+ "description": "Fokus: Matematika, Fisika, IT (arah teknik/teknologi) untuk pekerjaan langsung, bisa belajar mandiri melalui kursus, pelatihan, atau sertifikasi industri tanpa kuliah formal.",
+ "categories": [
+ "Teknologi & IT",
+ "Manufaktur",
+ "Pekerjaan Teknik",
+ "Instalasi & Pemeliharaan"
+ ],
+ "riasec": {
+ "primary": "R (Realistic)",
+ "secondary": "I (Investigative)",
+ "tertiary": "C (Conventional)",
+ "code": "RIC"
+ },
+ "minat": {
+ "Elektronika": {
+ "pertanyaan": [
+ "BKER01: Saya tertarik untuk memperbaiki dan merakit perangkat elektronik tanpa kuliah formal [2]",
+ "BKER02: Saya tertarik ingin belajar tentang instalasi perangkat elektronik melalui kursus atau tutorial online [4]",
+ "BKER03: Saya tertarik untuk bekerja di industri yang mengembangkan teknologi elektronik [6]",
+ "BKER04: Saya tertarik ingin memecahkan masalah teknis dengan alat-alat elektronik [6]",
+ "BKER05: Saya tertarik suka membongkar dan mempelajari cara kerja perangkat elektronik [6]",
+ "BKER06: Saya tertarik untuk memodifikasi perangkat elektronik agar memiliki fungsi yang lebih baik [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 7
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 1,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR01: Teknisi Elektronika [20]",
+ "BKAR02: Teknisi Perangkat Elektronik [20]",
+ "BKAR03: Teknisi Service HP/Laptop [20]",
+ "BKAR04: Teknisi Instalasi CCTV [20]",
+ "BKAR05: Assembler Perangkat Elektronik [20]",
+ "BKAR06: Teknisi Peralatan Audio-Visual [20]",
+ "BKAR07: Teknisi Telekomunikasi [20]",
+ "BKAR08: Operator Mesin Produksi [20]",
+ "BKAR09: Teknisi Maintenance Pabrik [20]",
+ "BKAR10: Petugas Lini Produksi [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/I",
+ "R/C",
+ "R",
+ "R/C",
+ "R/I",
+ "R/I",
+ "I",
+ "I",
+ "I"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Elektronika",
+ "D3 Teknik Telekomunikasi",
+ "D3 Teknik Listrik",
+ "D3 Teknik Komputer",
+ "S1 Teknik Elektro",
+ "D3 Instrumentasi dan Kontrol Industri",
+ "D3 Mekatronika",
+ "D3 Teknik Otomasi",
+ "S1 Teknik Mesin"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Elektronika Dasar",
+ "Kursus Perbaikan Smartphone dan Komputer",
+ "Pelatihan Instalasi Sistem Keamanan",
+ "Kursus Dasar-Dasar Elektronika Digital",
+ "Pelatihan Perakitan PCB"
+ ]
+ },
+ "Mekatronika & Otomasi": {
+ "pertanyaan": [
+ "BKER07: Saya tertarik untuk mengembangkan robot atau mesin otomatis dengan belajar mandiri [7]",
+ "BKER08: Saya tertarik ingin bekerja dengan sistem robot dan otomatisasi tanpa kuliah formal [7]",
+ "BKER09: Saya tertarik ingin mempelajari lebih lanjut tentang teknologi robotika melalui kursus online [6]",
+ "BKER10: Saya tertarik untuk memprogram robot dan membuatnya berfungsi sesuai keinginan [6]",
+ "BKER11: Saya tertarik pada integrasi sensor dan aktuator untuk sistem otomatis [5]",
+ "BKER12: Saya tertarik ingin bekerja di industri yang menggunakan robot dan sistem otomatisasi [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 3,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR11: Operator Mesin Produksi [18]",
+ "BKAR12: Teknisi Maintenance Pabrik [19]",
+ "BKAR13: Petugas Lini Produksi [17]"
+ ],
+ "karir_riasec": [
+ "R",
+ "R/I",
+ "R/C"
+ ],
+ "jurusan_terkait": [
+ "D3 Mekatronika",
+ "D3 Teknik Otomasi",
+ "S1 Teknik Elektro",
+ "D3 Teknik Elektronika",
+ "S1 Teknik Mesin",
+ "D3 Instrumentasi dan Kontrol Industri"
+ ],
+ "rekomendasi_kursus": [
+ "Pelatihan Arduino dan Mikrokontroler",
+ "Sertifikasi Teknisi Otomasi Industri",
+ "Kursus Dasar Pemrograman Robot",
+ "Pelatihan IoT (Internet of Things)",
+ "Kursus Mekatronika Dasar"
+ ]
+ },
+ "Programmer": {
+ "pertanyaan": [
+ "BKER13: Saya tertarik untuk belajar pemrograman komputer dan membuat aplikasi secara mandiri [7]",
+ "BKER14: Saya tertarik ingin bekerja di bidang teknologi informasi tanpa kuliah [6]",
+ "BKER15: Saya tertarik suka memecahkan masalah logika dan mengembangkan algoritma [6]",
+ "BKER16: Saya tertarik untuk mengembangkan website atau aplikasi mobile [6]",
+ "BKER17: Saya tertarik tekun dan mau terus belajar teknologi baru secara mandiri [6]",
+ "BKER18: Saya tertarik dengan analisis data dan membuat visualisasi data [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 5,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 5,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "A",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 1,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR14: Junior Web Developer [20]",
+ "BKAR15: Junior Mobile App Developer [20]",
+ "BKAR16: Front-End Developer [20]",
+ "BKAR17: Technical Support [20]",
+ "BKAR18: Content Creator Digital [20]",
+ "BKAR19: Freelance Programmer [20]",
+ "BKAR20: Teknisi Jaringan [20]",
+ "BKAR21: IT Support Specialist [20]",
+ "BKAR22: Network Technician [20]",
+ "BKAR23: Helpdesk Support [20]",
+ "BKAR24: Teknisi Instalasi Internet [20]"
+ ],
+ "karir_riasec": [
+ "I/A",
+ "I/A",
+ "I/A",
+ "I/S",
+ "I/A",
+ "I/A/E",
+ "I",
+ "I",
+ "I",
+ "I",
+ "I"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Informatika",
+ "D3 Manajemen Informatika",
+ "S1 Teknik Informatika",
+ "S1 Ilmu Komputer",
+ "D3 Sistem Informasi",
+ "D3 Rekayasa Perangkat Lunak",
+ "D3 Teknik Komputer Jaringan",
+ "S1 Sistem Informasi",
+ "S1 Teknik Komputer",
+ "D3 Keamanan Sistem Informasi"
+ ],
+ "rekomendasi_kursus": [
+ "Bootcamp Pemrograman Web/Mobile",
+ "Sertifikasi HTML, CSS, JavaScript",
+ "Pelatihan Framework Front-End (React, Vue)",
+ "Kursus Pemrograman Python/Java",
+ "Sertifikasi UI/UX Design",
+ "Kursus Database SQL"
+ ]
+ },
+ "Jaringan & Infrastruktur IT": {
+ "pertanyaan": [
+ "BKER19: Saya tertarik untuk mempelajari jaringan komputer dan infrastruktur IT [7]",
+ "BKER20: Saya tertarik ingin bekerja dengan server, router, dan perangkat jaringan lainnya [6]",
+ "BKER21: Saya tertarik suka mengonfigurasi dan memecahkan masalah koneksi jaringan [6]",
+ "BKER22: Saya tertarik untuk mempelajari keamanan jaringan dan sistem komputer [6]",
+ "BKER23: Saya tertarik ingin bekerja sebagai teknisi IT di perusahaan atau institusi [5]",
+ "BKER24: Saya tertarik untuk belajar cloud computing dan virtualisasi [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR25: Teknisi Jaringan [20]",
+ "BKAR26: IT Support Specialist [19]",
+ "BKAR27: Network Technician [19]",
+ "BKAR28: Helpdesk Support [17]",
+ "BKAR29: Teknisi Instalasi Internet [18]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/S/I",
+ "R/I",
+ "S/I",
+ "R/I"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Komputer Jaringan",
+ "D3 Teknik Informatika",
+ "S1 Sistem Informasi",
+ "D3 Manajemen Informatika",
+ "S1 Teknik Komputer",
+ "D3 Keamanan Sistem Informasi"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi CompTIA A+",
+ "Sertifikasi CompTIA Network+",
+ "Kursus Cisco CCNA",
+ "Pelatihan Dasar Keamanan Siber",
+ "Kursus Windows Server Administration",
+ "Pelatihan Linux Fundamentals"
+ ]
+ },
+ "Teknik Mesin": {
+ "pertanyaan": [
+ "BKER25: Saya tertarik untuk bekerja dengan mesin dan perangkat mekanis tanpa gelar kuliah [7]",
+ "BKER26: Saya tertarik ingin mempelajari proses pembuatan dan perbaikan mesin melalui pelatihan atau kursus [6]",
+ "BKER27: Saya tertarik ingin bekerja di industri manufaktur dan perakitan mesin [6]",
+ "BKER28: Saya tertarik untuk memperbaiki mesin dan alat industri [6]",
+ "BKER29: Saya tertarik menyukai pekerjaan yang melibatkan alat-alat berat dan mesin industri [6]",
+ "BKER30: Saya tertarik untuk mempelajari desain dan pembacaan gambar teknik [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 7
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 6
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "C",
+ "A"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR30: Teknisi Mesin [20]",
+ "BKAR31: Operator Mesin CNC [20]",
+ "BKAR32: Teknisi Pemeliharaan Industri [20]",
+ "BKAR33: Teknisi Otomotif [20]",
+ "BKAR34: Operator Alat Berat [20]",
+ "BKAR35: Welder/Tukang Las [20]"
+ ],
+ "karir_riasec": [
+ "R",
+ "R/C",
+ "R",
+ "R",
+ "R",
+ "R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Mesin",
+ "D3 Teknik Manufaktur",
+ "D3 Otomotif",
+ "S1 Teknik Mesin",
+ "D3 Teknik Alat Berat",
+ "D3 Teknologi Produksi dan Manufaktur"
+ ],
+ "rekomendasi_kursus": [
+ "Pelatihan Operator Mesin CNC",
+ "Sertifikasi Teknisi Mesin Industri",
+ "Kursus AutoCAD/SolidWorks",
+ "Pelatihan Pemeliharaan Mesin Industri",
+ "Sertifikasi Pengelasan (Welding)",
+ "Kursus Dasar Pneumatik dan Hidrolik"
+ ]
+ },
+ "Teknik Sipil": {
+ "pertanyaan": [
+ "BKER31: Saya tertarik untuk bekerja dalam perencanaan dan pengawasan proyek konstruksi tanpa kuliah [7]",
+ "BKER32: Saya tertarik ingin mempelajari dasar-dasar desain bangunan dan jalan melalui pelatihan [7]",
+ "BKER33: Saya tertarik ingin bekerja di lapangan untuk proyek konstruksi dan infrastruktur [6]",
+ "BKER34: Saya tertarik dengan analisis material dan struktur bangunan [5]",
+ "BKER35: Saya tertarik memiliki ketelitian dan kemampuan membaca gambar teknik [5]",
+ "BKER36: Saya tertarik dengan pekerjaan yang melibatkan pengukuran dan pemetaan lahan [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR36: Pelaksana Lapangan Konstruksi [20]",
+ "BKAR37: Surveyor Lapangan [20]",
+ "BKAR38: Juru Gambar/Drafter [20]",
+ "BKAR39: Mandor Bangunan [20]",
+ "BKAR40: Tenaga Administrasi Proyek [20]"
+ ],
+ "karir_riasec": [
+ "R/E",
+ "R/I",
+ "R/A/C",
+ "R/E",
+ "C/R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Sipil",
+ "D3 Konstruksi Gedung",
+ "D3 Teknik Survey dan Pemetaan",
+ "S1 Teknik Sipil",
+ "D3 Arsitektur",
+ "D3 Konstruksi Sipil"
+ ],
+ "rekomendasi_kursus": [
+ "Pelatihan AutoCAD untuk Konstruksi",
+ "Kursus Quantity Surveying",
+ "Pelatihan Pengawas Konstruksi",
+ "Sertifikasi Survey dan Pemetaan",
+ "Kursus Estimasi Biaya Konstruksi",
+ "Pelatihan Pengujian Bahan Konstruksi"
+ ]
+ },
+ "Teknik Kimia": {
+ "pertanyaan": [
+ "BKER37: Saya tertarik untuk bekerja di industri kimia tanpa gelar kuliah [7]",
+ "BKER38: Saya tertarik ingin memahami proses kimia industri melalui kursus atau pelatihan [3]",
+ "BKER39: Saya tertarik untuk bekerja dengan bahan kimia dan proses pembuatan produk kimia [6]",
+ "BKER40: Saya tertarik ingin berkarir di pengolahan limbah dan pemurnian air [6]",
+ "BKER41: Saya tertarik memiliki ketelitian dan disiplin dalam mengikuti prosedur operasi standar [6]",
+ "BKER42: Saya tertarik untuk mempelajari kontrol kualitas produk kimia [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR41: Operator Proses Kimia [20]",
+ "BKAR42: Petugas Pengecekan Produk [20]",
+ "BKAR43: Petugas Instalasi Pengolahan Limbah [20]",
+ "BKAR44: Operator Instalasi Pengolahan Air [20]",
+ "BKAR45: Petugas K3 Pabrik [20]"
+ ],
+ "karir_riasec": [
+ "R/C",
+ "C/I",
+ "R/I",
+ "R",
+ "C/S"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Kimia",
+ "D3 Analis Kimia",
+ "S1 Teknik Kimia",
+ "D3 Teknik Lingkungan",
+ "D3 K3 (Keselamatan dan Kesehatan Kerja)",
+ "D3 Kimia Industri"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi K3 Kimia",
+ "Pelatihan Operator Proses Kimia Industri",
+ "Kursus Teknik Laboratorium Kimia",
+ "Pelatihan Pengelolaan Limbah B3",
+ "Sertifikasi Good Manufacturing Practice (GMP)",
+ "Kursus Kontrol Kualitas Produk Kimia"
+ ]
+ },
+ "Teknisi Energi": {
+ "pertanyaan": [
+ "BKER43: Saya tertarik untuk bekerja di bidang pembangkit listrik dan distribusi energi [7]",
+ "BKER44: Saya tertarik ingin mempelajari instalasi dan pemeliharaan sistem energi terbarukan [7]",
+ "BKER45: Saya tertarik dengan sistem listrik dan elektronika daya [6]",
+ "BKER46: Saya tertarik ingin bekerja di lapangan untuk instalasi atau perbaikan sistem energi [6]",
+ "BKER47: Saya tertarik untuk mempelajari efisiensi energi dan konservasi [5]",
+ "BKER48: Saya tertarik memiliki ketelitian dan kesadaran keselamatan yang tinggi [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR46: Teknisi Listrik [20]",
+ "BKAR47: Teknisi Panel Surya [20]",
+ "BKAR48: Operator Pembangkit Listrik [20]",
+ "BKAR49: Teknisi Instalasi Listrik [20]",
+ "BKAR50: Teknisi Pemeliharaan Sistem Energi [20]"
+ ],
+ "karir_riasec": [
+ "R",
+ "R/I",
+ "R/C",
+ "R",
+ "R/C"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Listrik",
+ "D3 Teknik Elektro",
+ "D3 Teknik Energi Terbarukan",
+ "S1 Teknik Elektro",
+ "D3 Teknik Tenaga Listrik",
+ "D3 Instrumentasi dan Kontrol Industri"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Teknisi Listrik",
+ "Pelatihan Instalasi Panel Surya",
+ "Kursus Sistem Pembangkit Listrik",
+ "Pelatihan K3 Listrik",
+ "Kursus Instalasi Kabel Industri",
+ "Pelatihan Teknisi Energi Terbarukan"
+ ]
+ },
+ "Teknik Otomotif": {
+ "pertanyaan": [
+ "BKER49: Saya tertarik untuk memperbaiki dan merawat kendaraan bermotor [7]",
+ "BKER50: Saya tertarik ingin mempelajari sistem mekanik dan elektronik pada kendaraan modern [6]",
+ "BKER51: Saya tertarik dengan diagnosis dan troubleshooting kerusakan kendaraan [6]",
+ "BKER52: Saya tertarik suka bekerja dengan tangan dan alat-alat mekanik [7]",
+ "BKER53: Saya tertarik untuk mempelajari sistem kendaraan listrik dan hybrid [5]",
+ "BKER54: Saya tertarik ingin bekerja di bengkel atau industri otomotif [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 7
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R"
+ ],
+ "bobot": [
+ 5
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "BKAR51: Mekanik Otomotif [20]",
+ "BKAR52: Mekanik Sepeda Motor [20]",
+ "BKAR53: Teknisi Kelistrikan Otomotif [20]",
+ "BKAR54: Teknisi AC Mobil [20]",
+ "BKAR55: Service Advisor [20]",
+ "BKAR56: Petugas Bengkel Umum [20]"
+ ],
+ "karir_riasec": [
+ "R",
+ "R",
+ "R/I",
+ "R",
+ "S/E/R",
+ "R"
+ ],
+ "jurusan_terkait": [
+ "D3 Teknik Otomotif",
+ "D3 Teknik Mesin",
+ "S1 Teknik Otomotif",
+ "D3 Teknologi Kendaraan Ringan",
+ "D3 Mekatronika",
+ "D3 Alat Berat"
+ ],
+ "rekomendasi_kursus": [
+ "Sertifikasi Mekanik Otomotif",
+ "Pelatihan Teknisi Mobil Listrik",
+ "Kursus Sistem Manajemen Mesin",
+ "Pelatihan Kelistrikan Otomotif",
+ "Kursus Diagnosis Komputer Kendaraan",
+ "Pelatihan Sistem Pengereman ABS"
+ ]
+ }
+ },
+ "semua_pertanyaan": [
+ {
+ "kode_pertanyaan": "BKER01",
+ "isi_pertanyaan": "Saya tertarik untuk memperbaiki dan merakit perangkat elektronik tanpa kuliah formal"
+ },
+ {
+ "kode_pertanyaan": "BKER02",
+ "isi_pertanyaan": "Saya tertarik ingin belajar tentang instalasi perangkat elektronik melalui kursus atau tutorial online"
+ },
+ {
+ "kode_pertanyaan": "BKER03",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di industri yang mengembangkan teknologi elektronik"
+ },
+ {
+ "kode_pertanyaan": "BKER04",
+ "isi_pertanyaan": "Saya tertarik ingin memecahkan masalah teknis dengan alat-alat elektronik"
+ },
+ {
+ "kode_pertanyaan": "BKER05",
+ "isi_pertanyaan": "Saya tertarik suka membongkar dan mempelajari cara kerja perangkat elektronik"
+ },
+ {
+ "kode_pertanyaan": "BKER06",
+ "isi_pertanyaan": "Saya tertarik untuk memodifikasi perangkat elektronik agar memiliki fungsi yang lebih baik"
+ },
+ {
+ "kode_pertanyaan": "BKER07",
+ "isi_pertanyaan": "Saya tertarik untuk mengembangkan robot atau mesin otomatis dengan belajar mandiri"
+ },
+ {
+ "kode_pertanyaan": "BKER08",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja dengan sistem robot dan otomatisasi tanpa kuliah formal"
+ },
+ {
+ "kode_pertanyaan": "BKER09",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari lebih lanjut tentang teknologi robotika melalui kursus online"
+ },
+ {
+ "kode_pertanyaan": "BKER10",
+ "isi_pertanyaan": "Saya tertarik untuk memprogram robot dan membuatnya berfungsi sesuai keinginan"
+ },
+ {
+ "kode_pertanyaan": "BKER11",
+ "isi_pertanyaan": "Saya tertarik pada integrasi sensor dan aktuator untuk sistem otomatis"
+ },
+ {
+ "kode_pertanyaan": "BKER12",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di industri yang menggunakan robot dan sistem otomatisasi"
+ },
+ {
+ "kode_pertanyaan": "BKER13",
+ "isi_pertanyaan": "Saya tertarik untuk belajar pemrograman komputer dan membuat aplikasi secara mandiri"
+ },
+ {
+ "kode_pertanyaan": "BKER14",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di bidang teknologi informasi tanpa kuliah"
+ },
+ {
+ "kode_pertanyaan": "BKER15",
+ "isi_pertanyaan": "Saya tertarik suka memecahkan masalah logika dan mengembangkan algoritma"
+ },
+ {
+ "kode_pertanyaan": "BKER16",
+ "isi_pertanyaan": "Saya tertarik untuk mengembangkan website atau aplikasi mobile"
+ },
+ {
+ "kode_pertanyaan": "BKER17",
+ "isi_pertanyaan": "Saya tertarik tekun dan mau terus belajar teknologi baru secara mandiri"
+ },
+ {
+ "kode_pertanyaan": "BKER18",
+ "isi_pertanyaan": "Saya tertarik dengan analisis data dan membuat visualisasi data"
+ },
+ {
+ "kode_pertanyaan": "BKER19",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari jaringan komputer dan infrastruktur IT"
+ },
+ {
+ "kode_pertanyaan": "BKER20",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja dengan server, router, dan perangkat jaringan lainnya"
+ },
+ {
+ "kode_pertanyaan": "BKER21",
+ "isi_pertanyaan": "Saya tertarik suka mengonfigurasi dan memecahkan masalah koneksi jaringan"
+ },
+ {
+ "kode_pertanyaan": "BKER22",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari keamanan jaringan dan sistem komputer"
+ },
+ {
+ "kode_pertanyaan": "BKER23",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja sebagai teknisi IT di perusahaan atau institusi"
+ },
+ {
+ "kode_pertanyaan": "BKER24",
+ "isi_pertanyaan": "Saya tertarik untuk belajar cloud computing dan virtualisasi"
+ },
+ {
+ "kode_pertanyaan": "BKER25",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja dengan mesin dan perangkat mekanis tanpa gelar kuliah"
+ },
+ {
+ "kode_pertanyaan": "BKER26",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari proses pembuatan dan perbaikan mesin melalui pelatihan atau kursus"
+ },
+ {
+ "kode_pertanyaan": "BKER27",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di industri manufaktur dan perakitan mesin"
+ },
+ {
+ "kode_pertanyaan": "BKER28",
+ "isi_pertanyaan": "Saya tertarik untuk memperbaiki mesin dan alat industri"
+ },
+ {
+ "kode_pertanyaan": "BKER29",
+ "isi_pertanyaan": "Saya tertarik menyukai pekerjaan yang melibatkan alat-alat berat dan mesin industri"
+ },
+ {
+ "kode_pertanyaan": "BKER30",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari desain dan pembacaan gambar teknik"
+ },
+ {
+ "kode_pertanyaan": "BKER31",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja dalam perencanaan dan pengawasan proyek konstruksi tanpa kuliah"
+ },
+ {
+ "kode_pertanyaan": "BKER32",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari dasar-dasar desain bangunan dan jalan melalui pelatihan"
+ },
+ {
+ "kode_pertanyaan": "BKER33",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di lapangan untuk proyek konstruksi dan infrastruktur"
+ },
+ {
+ "kode_pertanyaan": "BKER34",
+ "isi_pertanyaan": "Saya tertarik dengan analisis material dan struktur bangunan"
+ },
+ {
+ "kode_pertanyaan": "BKER35",
+ "isi_pertanyaan": "Saya tertarik memiliki ketelitian dan kemampuan membaca gambar teknik"
+ },
+ {
+ "kode_pertanyaan": "BKER36",
+ "isi_pertanyaan": "Saya tertarik dengan pekerjaan yang melibatkan pengukuran dan pemetaan lahan"
+ },
+ {
+ "kode_pertanyaan": "BKER37",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di industri kimia tanpa gelar kuliah"
+ },
+ {
+ "kode_pertanyaan": "BKER38",
+ "isi_pertanyaan": "Saya tertarik ingin memahami proses kimia industri melalui kursus atau pelatihan"
+ },
+ {
+ "kode_pertanyaan": "BKER39",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja dengan bahan kimia dan proses pembuatan produk kimia"
+ },
+ {
+ "kode_pertanyaan": "BKER40",
+ "isi_pertanyaan": "Saya tertarik ingin berkarir di pengolahan limbah dan pemurnian air"
+ },
+ {
+ "kode_pertanyaan": "BKER41",
+ "isi_pertanyaan": "Saya tertarik memiliki ketelitian dan disiplin dalam mengikuti prosedur operasi standar"
+ },
+ {
+ "kode_pertanyaan": "BKER42",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari kontrol kualitas produk kimia"
+ },
+ {
+ "kode_pertanyaan": "BKER43",
+ "isi_pertanyaan": "Saya tertarik untuk bekerja di bidang pembangkit listrik dan distribusi energi"
+ },
+ {
+ "kode_pertanyaan": "BKER44",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari instalasi dan pemeliharaan sistem energi terbarukan"
+ },
+ {
+ "kode_pertanyaan": "BKER45",
+ "isi_pertanyaan": "Saya tertarik dengan sistem listrik dan elektronika daya"
+ },
+ {
+ "kode_pertanyaan": "BKER46",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di lapangan untuk instalasi atau perbaikan sistem energi"
+ },
+ {
+ "kode_pertanyaan": "BKER47",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari efisiensi energi dan konservasi"
+ },
+ {
+ "kode_pertanyaan": "BKER48",
+ "isi_pertanyaan": "Saya tertarik memiliki ketelitian dan kesadaran keselamatan yang tinggi"
+ },
+ {
+ "kode_pertanyaan": "BKER49",
+ "isi_pertanyaan": "Saya tertarik untuk memperbaiki dan merawat kendaraan bermotor"
+ },
+ {
+ "kode_pertanyaan": "BKER50",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari sistem mekanik dan elektronik pada kendaraan modern"
+ },
+ {
+ "kode_pertanyaan": "BKER51",
+ "isi_pertanyaan": "Saya tertarik dengan diagnosis dan troubleshooting kerusakan kendaraan"
+ },
+ {
+ "kode_pertanyaan": "BKER52",
+ "isi_pertanyaan": "Saya tertarik suka bekerja dengan tangan dan alat-alat mekanik"
+ },
+ {
+ "kode_pertanyaan": "BKER53",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari sistem kendaraan listrik dan hybrid"
+ },
+ {
+ "kode_pertanyaan": "BKER54",
+ "isi_pertanyaan": "Saya tertarik ingin bekerja di bengkel atau industri otomotif"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/assets/ipa_teknik_kuliah.json b/assets/ipa_teknik_kuliah.json
new file mode 100644
index 0000000..aaa94ac
--- /dev/null
+++ b/assets/ipa_teknik_kuliah.json
@@ -0,0 +1,1284 @@
+{
+ "J01B": {
+ "name": "IPA (Teknik)",
+ "description": "Fokus: Matematika, Fisika, IT (arah teknik/teknologi) untuk persiapan kuliah di bidang teknik dan terapannya.",
+ "categories": [
+ "Teknologi & IT",
+ "Rekayasa",
+ "Konstruksi",
+ "Manufaktur"
+ ],
+ "riasec": {
+ "primary": "R (Realistic)",
+ "secondary": "I (Investigative)",
+ "tertiary": "C (Conventional)",
+ "code": "RIC"
+ },
+ "minat": {
+ "Elektronika": {
+ "pertanyaan": [
+ "BKUL01: Saya tertarik dengan dunia elektronik dan rangkaian listrik [6]",
+ "BKUL02: Saya tertarik ingin belajar cara membuat perangkat elektronik sederhana [6]",
+ "BKUL03: Saya tertarik suka memecahkan masalah teknis dengan alat-alat elektronik [7]",
+ "BKUL04: Saya tertarik untuk mengembangkan teknologi elektronik untuk kehidupan sehari-hari [5]",
+ "BKUL05: Saya tertarik mempelajari sistem kendali dan otomasi berbasis elektronika [7]",
+ "BKUL06: Saya tertarik ingin tahu lebih dalam tentang sistem komputer dan mikroprosesor [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "E"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Elektro [20]",
+ "Teknisi Elektronika [20]",
+ "R&D Specialist [20]",
+ "Insinyur Telekomunikasi [20]",
+ "Perancang Sistem Elektronik [20]",
+ "Insinyur Kontrol [20]",
+ "Konsultan Elektronika [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/C",
+ "I/R",
+ "R/I",
+ "R/I/C",
+ "R/I",
+ "I/R/E"
+ ],
+ "jurusan_terkait": [
+ "BJUR01: Teknik Elektro",
+ "BJUR02: Teknik Elektronika",
+ "BJUR03: Teknik Mekatronika",
+ "BJUR04: Teknik Telekomunikasi",
+ "BJUR05: Teknik Komputer",
+ "BJUR06: Elektronika Industri",
+ "BJUR07: Teknik Instrumentasi"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "Politeknik Elektronika Negeri Surabaya (PENS)"
+ ]
+ },
+ "Robotika": {
+ "pertanyaan": [
+ "BKUL07: Saya tertarik untuk mengembangkan robot atau mesin otomatis [6]",
+ "BKUL08: Saya tertarik suka bekerja dengan teknologi yang menggabungkan perangkat keras dan perangkat lunak [6]",
+ "BKUL09: Saya tertarik dengan dunia sensor dan bagaimana mereka bekerja dalam robot [7]",
+ "BKUL10: Saya tertarik menikmati belajar cara membuat robot bergerak atau berinteraksi dengan lingkungannya [7]",
+ "BKUL11: Saya tertarik dengan perkembangan kecerdasan buatan dan implementasinya pada robot [6]",
+ "BKUL12: Saya tertarik ingin belajar tentang pengembangan sistem otomasi industri [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 3,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 1,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Robotic Engineer [20]",
+ "Automation Engineer [20]",
+ "Teknisi Robotik [20]",
+ "AI & Robotics Researcher [20]",
+ "Insinyur Mekatronika [20]",
+ "Pengembang Sistem Otomasi Industri [20]",
+ "Konsultan Robotika [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/I/C",
+ "R/C",
+ "I/R",
+ "R/I",
+ "R/I/C",
+ "I/R/E"
+ ],
+ "jurusan_terkait": [
+ "BJUR08: Teknik Mekatronika",
+ "BJUR09: Teknik Elektro",
+ "BJUR10: Teknik Informatika (Konsentrasi Robotika)",
+ "BJUR11: Teknik Komputer",
+ "BJUR12: Teknik Otomasi",
+ "BJUR13: Teknik Sistem Kendali",
+ "BJUR14: Teknik Mesin"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Politeknik Elektronika Negeri Surabaya (PENS)",
+ "Universitas Telkom"
+ ]
+ },
+ "Ilmu Komputer": {
+ "pertanyaan": [
+ "BKUL13: Saya tertarik untuk membuat perangkat lunak atau aplikasi untuk komputer atau ponsel [7]",
+ "BKUL14: Saya tertarik suka bekerja dengan kode dan pengembangan teknologi [7]",
+ "BKUL15: Saya tertarik ingin memahami cara kerja jaringan komputer dan internet [7]",
+ "BKUL16: Saya tertarik menikmati tantangan dalam menciptakan solusi teknologi untuk masalah sehari-hari [7]",
+ "BKUL17: Saya tertarik mempelajari algoritma dan struktur data [7]",
+ "BKUL18: Saya tertarik ingin mengembangkan keterampilan dalam kecerdasan buatan dan pembelajaran mesin [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R",
+ "A"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Software Engineer [20]",
+ "Data Scientist [20]",
+ "Machine Learning Engineer [20]",
+ "Web Developer [20]",
+ "Mobile App Developer [20]",
+ "Security Engineer [20]",
+ "DevOps Engineer [20]",
+ "Network Engineer [20]",
+ "System Administrator [20]",
+ "IT Infrastructure Manager [20]",
+ "Cloud Architect [20]",
+ "Security Specialist [20]",
+ "Database Administrator [20]",
+ "IT Consultant [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "I/C",
+ "I/R",
+ "I/A/R",
+ "I/A/R",
+ "I/C/R",
+ "I/R/C",
+ "I",
+ "I",
+ "I",
+ "I",
+ "I",
+ "I",
+ "I"
+ ],
+ "jurusan_terkait": [
+ "BJUR15: Teknik Informatika",
+ "BJUR16: Ilmu Komputer",
+ "BJUR17: Sistem Informasi",
+ "BJUR18: Sains Data",
+ "BJUR19: Kecerdasan Buatan",
+ "BJUR20: Rekayasa Perangkat Lunak",
+ "BJUR21: Teknologi Informasi",
+ "BJUR22: Teknik Komputer",
+ "BJUR23: Teknik Telekomunikasi",
+ "BJUR24: Keamanan Siber",
+ "BJUR25: Teknik Jaringan"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "BINUS University",
+ "Universitas Brawijaya",
+ "Telkom University"
+ ]
+ },
+ "Sistem & Infrastruktur IT": {
+ "pertanyaan": [
+ "BKUL19: Saya tertarik untuk mengelola sistem komputer dan jaringan [6]",
+ "BKUL20: Saya tertarik ingin belajar tentang keamanan sistem dan jaringan [6]",
+ "BKUL21: Saya tertarik suka mengatur dan mengoptimalkan infrastruktur IT [5]",
+ "BKUL22: Saya tertarik dengan cloud computing dan virtualisasi [6]",
+ "BKUL23: Saya tertarik ingin mempelajari cara membangun dan mengatur server [5]",
+ "BKUL24: Saya tertarik dengan pengelolaan big data dan infrastrukturnya [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "C",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Network Engineer [19]",
+ "System Administrator [18]",
+ "IT Infrastructure Manager [19]",
+ "Cloud Architect [20]",
+ "Security Specialist [18]",
+ "Database Administrator [17]",
+ "IT Consultant [18]"
+ ],
+ "karir_riasec": [
+ "R/C",
+ "C/R",
+ "C/R/E",
+ "I/R/C",
+ "I/C",
+ "C/I",
+ "I/E/C"
+ ],
+ "jurusan_terkait": [
+ "BJUR26: Teknik Informatika",
+ "BJUR27: Sistem Informasi",
+ "BJUR28: Teknologi Informasi",
+ "BJUR29: Teknik Komputer",
+ "BJUR30: Teknik Telekomunikasi",
+ "BJUR31: Keamanan Siber",
+ "BJUR32: Teknik Jaringan"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "BINUS University",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Brawijaya",
+ "Telkom University"
+ ]
+ },
+ "Teknik Mesin": {
+ "pertanyaan": [
+ "BKUL25: Saya tertarik dengan cara kerja mesin dan perangkat mekanis [6]",
+ "BKUL26: Saya tertarik ingin belajar tentang proses manufaktur dan pembuatan mesin [6]",
+ "BKUL27: Saya tertarik suka mempelajari cara benda-benda bergerak atau bekerja dalam kehidupan sehari-hari [5]",
+ "BKUL28: Saya tertarik untuk merancang alat atau mesin yang bisa membantu memecahkan masalah [6]",
+ "BKUL29: Saya tertarik dengan pengembangan sistem termal dan fluida [5]",
+ "BKUL30: Saya tertarik ingin mempelajari tentang desain dan analisis struktural mekanik [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Mesin [20]",
+ "Teknisi Mesin [20]",
+ "R&D Mechanical Engineer [20]",
+ "Insinyur Perancangan [20]",
+ "Insinyur Manufaktur [20]",
+ "Insinyur Otomotif [20]",
+ "Konsultan Teknik Mesin [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/C",
+ "I/R",
+ "R/I/A",
+ "R/C/I",
+ "R/I",
+ "I/R/E"
+ ],
+ "jurusan_terkait": [
+ "BJUR33: Teknik Mesin",
+ "BJUR34: Teknik Industri",
+ "BJUR35: Teknik Otomotif",
+ "BJUR36: Teknik Aeronautika",
+ "BJUR37: Teknik Material",
+ "BJUR38: Teknik Manufaktur",
+ "BJUR39: Teknik Perkapalan"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "Universitas Brawijaya",
+ "Politeknik Manufaktur Bandung"
+ ]
+ },
+ "Teknik Sipil": {
+ "pertanyaan": [
+ "BKUL31: Saya tertarik dengan pembangunan dan perancangan bangunan [7]",
+ "BKUL32: Saya tertarik suka belajar tentang bagaimana gedung atau jembatan dibangun [7]",
+ "BKUL33: Saya tertarik untuk mempelajari cara bangunan menahan beban [7]",
+ "BKUL34: Saya tertarik menikmati mempelajari teknik dan cara-cara konstruksi dalam kehidupan sehari-hari [6]",
+ "BKUL35: Saya tertarik dengan perencanaan infrastruktur seperti jalan dan sistem transportasi [6]",
+ "BKUL36: Saya tertarik ingin belajar tentang manajemen sumber daya air dan penanganan bencana [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "R",
+ "A",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Sipil [20]",
+ "Pengawas Konstruksi [20]",
+ "Perencana Infrastruktur [20]",
+ "Konsultan Struktur [20]",
+ "Project Manager Konstruksi [20]",
+ "Insinyur Geoteknik [20]",
+ "Urban Planner [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "R/C",
+ "R/I/C",
+ "I/R",
+ "E/C/R",
+ "I/R",
+ "I/S/E"
+ ],
+ "jurusan_terkait": [
+ "BJUR40: Teknik Sipil",
+ "BJUR41: Teknik Konstruksi",
+ "BJUR42: Teknik Transportasi",
+ "BJUR43: Teknik Pengairan",
+ "BJUR44: Teknik Lingkungan",
+ "BJUR45: Arsitektur",
+ "BJUR46: Perencanaan Wilayah dan Kota"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Diponegoro (UNDIP)",
+ "Universitas Brawijaya",
+ "Politeknik Negeri Jakarta"
+ ]
+ },
+ "Teknik Kimia": {
+ "pertanyaan": [
+ "BKUL37: Saya tertarik dengan reaksi kimia yang terjadi di sekitar kita [6]",
+ "BKUL38: Saya tertarik ingin memahami bagaimana bahan kimia digunakan dalam industri [6]",
+ "BKUL39: Saya tertarik untuk mempelajari cara proses kimia bekerja dalam skala industri [6]",
+ "BKUL40: Saya tertarik ingin tahu lebih banyak tentang pengolahan limbah atau kualitas air [7]",
+ "BKUL41: Saya tertarik mengembangkan produk berbasis kimia yang ramah lingkungan [7]",
+ "BKUL42: Saya tertarik ingin mempelajari teknologi pemrosesan minyak bumi dan gas alam [6]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 4,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "C"
+ ],
+ "bobot": [
+ 3,
+ 1,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I",
+ "C"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S",
+ "R"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Kimia [20]",
+ "Proses Engineer [20]",
+ "Ahli Lingkungan [20]",
+ "R&D Kimia [20]",
+ "Quality Control Specialist [20]",
+ "Insinyur Bioproses [20]",
+ "Konsultan Teknik Kimia [20]"
+ ],
+ "karir_riasec": [
+ "I/R",
+ "R/I/C",
+ "I/S",
+ "I/R",
+ "C/I",
+ "I/R",
+ "I/E/C"
+ ],
+ "jurusan_terkait": [
+ "BJUR47: Teknik Kimia",
+ "BJUR48: Teknik Lingkungan",
+ "BJUR49: Teknik Bioproses",
+ "BJUR50: Biokimia Terapan",
+ "BJUR51: Teknik Perminyakan",
+ "BJUR52: Teknik Material",
+ "BJUR53: Teknologi Pangan"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "Universitas Brawijaya",
+ "Politeknik Negeri Malang"
+ ]
+ },
+ "Teknik Industri": {
+ "pertanyaan": [
+ "BKUL43: Saya tertarik pada optimasi sistem dan proses [6]",
+ "BKUL44: Saya tertarik suka menyelesaikan masalah yang melibatkan efisiensi dan produktivitas [7]",
+ "BKUL45: Saya tertarik dengan manajemen operasi dan rantai pasok [5]",
+ "BKUL46: Saya tertarik ingin mempelajari cara meningkatkan kualitas produk dan layanan [5]",
+ "BKUL47: Saya tertarik menyukai kombinasi antara teknik, bisnis, dan manajemen [6]",
+ "BKUL48: Saya tertarik ingin mempelajari cara mendesain sistem kerja yang ergonomis [5]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "C",
+ "R"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "C",
+ "E"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "E",
+ "I"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "E",
+ "C"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "E",
+ "C",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 3,
+ 1,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Industri [20]",
+ "Supply Chain Manager [20]",
+ "Quality Assurance Manager [20]",
+ "Konsultan Produktivitas [20]",
+ "Operation Manager [20]",
+ "Business Process Analyst [20]",
+ "Project Manager [20]"
+ ],
+ "karir_riasec": [
+ "I/C/R",
+ "C/E",
+ "C/I",
+ "I/E/C",
+ "E/C",
+ "I/C/E",
+ "E/C/I"
+ ],
+ "jurusan_terkait": [
+ "BJUR54: Teknik Industri",
+ "BJUR55: Manajemen Rekayasa",
+ "BJUR56: Teknik Logistik",
+ "BJUR57: Manajemen Operasi",
+ "BJUR58: Teknik Sistem",
+ "BJUR59: Teknik Manufaktur",
+ "BJUR60: Manajemen Kualitas"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Universitas Indonesia (UI)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "BINUS University",
+ "Universitas Telkom"
+ ]
+ },
+ "Teknik Energi": {
+ "pertanyaan": [
+ "BKUL49: Saya tertarik dengan sumber energi terbarukan dan konservasi energi [7]",
+ "BKUL50: Saya tertarik ingin mempelajari sistem pembangkit listrik dan distribusi energi [7]",
+ "BKUL51: Saya tertarik peduli tentang efisiensi energi dan dampak lingkungan [7]",
+ "BKUL52: Saya tertarik dengan teknologi panel surya, turbin angin, atau bioenergi [7]",
+ "BKUL53: Saya tertarik ingin berkontribusi pada solusi energi masa depan [6]",
+ "BKUL54: Saya tertarik dengan manajemen energi di industri dan bangunan [7]"
+ ],
+ "riasecType": [
+ {
+ "type": [
+ "I",
+ "R",
+ "S"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 2
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "S",
+ "I",
+ "R"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 3,
+ 3
+ ]
+ },
+ {
+ "type": [
+ "I",
+ "S",
+ "E"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ },
+ {
+ "type": [
+ "C",
+ "R",
+ "I"
+ ],
+ "bobot": [
+ 2,
+ 2,
+ 1
+ ]
+ }
+ ],
+ "karir": [
+ "Insinyur Energi [20]",
+ "Renewable Energy Specialist [20]",
+ "Power System Engineer [20]",
+ "Energy Efficiency Consultant [20]",
+ "Insinyur Pembangkit Listrik [20]",
+ "Environmental Engineer [20]",
+ "Peneliti Energi Terbarukan [20]"
+ ],
+ "karir_riasec": [
+ "R/I",
+ "I/R/S",
+ "R/I",
+ "I/S/C",
+ "R/I",
+ "I/S",
+ "I/R"
+ ],
+ "jurusan_terkait": [
+ "BJUR61: Teknik Energi",
+ "BJUR62: Teknik Elektro (Konsentrasi Energi)",
+ "BJUR63: Energi Terbarukan",
+ "BJUR64: Teknik Fisika",
+ "BJUR65: Teknik Lingkungan",
+ "BJUR66: Teknik Perminyakan",
+ "BJUR67: Teknologi Energi"
+ ],
+ "universitas_rekomendasi": [
+ "Institut Teknologi Bandung (ITB)",
+ "Institut Teknologi Sepuluh Nopember (ITS)",
+ "Universitas Indonesia (UI)",
+ "Universitas Gadjah Mada (UGM)",
+ "Universitas Diponegoro (UNDIP)",
+ "Politeknik Negeri Bandung",
+ "Universitas Pertamina"
+ ]
+ }
+ },
+ "semua_pertanyaan": [
+ {
+ "kode_pertanyaan": "BKUL01",
+ "isi_pertanyaan": "Saya tertarik dengan dunia elektronik dan rangkaian listrik"
+ },
+ {
+ "kode_pertanyaan": "BKUL02",
+ "isi_pertanyaan": "Saya tertarik ingin belajar cara membuat perangkat elektronik sederhana"
+ },
+ {
+ "kode_pertanyaan": "BKUL03",
+ "isi_pertanyaan": "Saya tertarik suka memecahkan masalah teknis dengan alat-alat elektronik"
+ },
+ {
+ "kode_pertanyaan": "BKUL04",
+ "isi_pertanyaan": "Saya tertarik untuk mengembangkan teknologi elektronik untuk kehidupan sehari-hari"
+ },
+ {
+ "kode_pertanyaan": "BKUL05",
+ "isi_pertanyaan": "Saya tertarik mempelajari sistem kendali dan otomasi berbasis elektronika"
+ },
+ {
+ "kode_pertanyaan": "BKUL06",
+ "isi_pertanyaan": "Saya tertarik ingin tahu lebih dalam tentang sistem komputer dan mikroprosesor"
+ },
+ {
+ "kode_pertanyaan": "BKUL07",
+ "isi_pertanyaan": "Saya tertarik untuk mengembangkan robot atau mesin otomatis"
+ },
+ {
+ "kode_pertanyaan": "BKUL08",
+ "isi_pertanyaan": "Saya tertarik suka bekerja dengan teknologi yang menggabungkan perangkat keras dan perangkat lunak"
+ },
+ {
+ "kode_pertanyaan": "BKUL09",
+ "isi_pertanyaan": "Saya tertarik dengan dunia sensor dan bagaimana mereka bekerja dalam robot"
+ },
+ {
+ "kode_pertanyaan": "BKUL10",
+ "isi_pertanyaan": "Saya tertarik menikmati belajar cara membuat robot bergerak atau berinteraksi dengan lingkungannya"
+ },
+ {
+ "kode_pertanyaan": "BKUL11",
+ "isi_pertanyaan": "Saya tertarik dengan perkembangan kecerdasan buatan dan implementasinya pada robot"
+ },
+ {
+ "kode_pertanyaan": "BKUL12",
+ "isi_pertanyaan": "Saya tertarik ingin belajar tentang pengembangan sistem otomasi industri"
+ },
+ {
+ "kode_pertanyaan": "BKUL13",
+ "isi_pertanyaan": "Saya tertarik untuk membuat perangkat lunak atau aplikasi untuk komputer atau ponsel"
+ },
+ {
+ "kode_pertanyaan": "BKUL14",
+ "isi_pertanyaan": "Saya tertarik suka bekerja dengan kode dan pengembangan teknologi"
+ },
+ {
+ "kode_pertanyaan": "BKUL15",
+ "isi_pertanyaan": "Saya tertarik ingin memahami cara kerja jaringan komputer dan internet"
+ },
+ {
+ "kode_pertanyaan": "BKUL16",
+ "isi_pertanyaan": "Saya tertarik menikmati tantangan dalam menciptakan solusi teknologi untuk masalah sehari-hari"
+ },
+ {
+ "kode_pertanyaan": "BKUL17",
+ "isi_pertanyaan": "Saya tertarik mempelajari algoritma dan struktur data"
+ },
+ {
+ "kode_pertanyaan": "BKUL18",
+ "isi_pertanyaan": "Saya tertarik ingin mengembangkan keterampilan dalam kecerdasan buatan dan pembelajaran mesin"
+ },
+ {
+ "kode_pertanyaan": "BKUL19",
+ "isi_pertanyaan": "Saya tertarik untuk mengelola sistem komputer dan jaringan"
+ },
+ {
+ "kode_pertanyaan": "BKUL20",
+ "isi_pertanyaan": "Saya tertarik ingin belajar tentang keamanan sistem dan jaringan"
+ },
+ {
+ "kode_pertanyaan": "BKUL21",
+ "isi_pertanyaan": "Saya tertarik suka mengatur dan mengoptimalkan infrastruktur IT"
+ },
+ {
+ "kode_pertanyaan": "BKUL22",
+ "isi_pertanyaan": "Saya tertarik dengan cloud computing dan virtualisasi"
+ },
+ {
+ "kode_pertanyaan": "BKUL23",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara membangun dan mengatur server"
+ },
+ {
+ "kode_pertanyaan": "BKUL24",
+ "isi_pertanyaan": "Saya tertarik dengan pengelolaan big data dan infrastrukturnya"
+ },
+ {
+ "kode_pertanyaan": "BKUL25",
+ "isi_pertanyaan": "Saya tertarik dengan cara kerja mesin dan perangkat mekanis"
+ },
+ {
+ "kode_pertanyaan": "BKUL26",
+ "isi_pertanyaan": "Saya tertarik ingin belajar tentang proses manufaktur dan pembuatan mesin"
+ },
+ {
+ "kode_pertanyaan": "BKUL27",
+ "isi_pertanyaan": "Saya tertarik suka mempelajari cara benda-benda bergerak atau bekerja dalam kehidupan sehari-hari"
+ },
+ {
+ "kode_pertanyaan": "BKUL28",
+ "isi_pertanyaan": "Saya tertarik untuk merancang alat atau mesin yang bisa membantu memecahkan masalah"
+ },
+ {
+ "kode_pertanyaan": "BKUL29",
+ "isi_pertanyaan": "Saya tertarik dengan pengembangan sistem termal dan fluida"
+ },
+ {
+ "kode_pertanyaan": "BKUL30",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari tentang desain dan analisis struktural mekanik"
+ },
+ {
+ "kode_pertanyaan": "BKUL31",
+ "isi_pertanyaan": "Saya tertarik dengan pembangunan dan perancangan bangunan"
+ },
+ {
+ "kode_pertanyaan": "BKUL32",
+ "isi_pertanyaan": "Saya tertarik suka belajar tentang bagaimana gedung atau jembatan dibangun"
+ },
+ {
+ "kode_pertanyaan": "BKUL33",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari cara bangunan menahan beban"
+ },
+ {
+ "kode_pertanyaan": "BKUL34",
+ "isi_pertanyaan": "Saya tertarik menikmati mempelajari teknik dan cara-cara konstruksi dalam kehidupan sehari-hari"
+ },
+ {
+ "kode_pertanyaan": "BKUL35",
+ "isi_pertanyaan": "Saya tertarik dengan perencanaan infrastruktur seperti jalan dan sistem transportasi"
+ },
+ {
+ "kode_pertanyaan": "BKUL36",
+ "isi_pertanyaan": "Saya tertarik ingin belajar tentang manajemen sumber daya air dan penanganan bencana"
+ },
+ {
+ "kode_pertanyaan": "BKUL37",
+ "isi_pertanyaan": "Saya tertarik dengan reaksi kimia yang terjadi di sekitar kita"
+ },
+ {
+ "kode_pertanyaan": "BKUL38",
+ "isi_pertanyaan": "Saya tertarik ingin memahami bagaimana bahan kimia digunakan dalam industri"
+ },
+ {
+ "kode_pertanyaan": "BKUL39",
+ "isi_pertanyaan": "Saya tertarik untuk mempelajari cara proses kimia bekerja dalam skala industri"
+ },
+ {
+ "kode_pertanyaan": "BKUL40",
+ "isi_pertanyaan": "Saya tertarik ingin tahu lebih banyak tentang pengolahan limbah atau kualitas air"
+ },
+ {
+ "kode_pertanyaan": "BKUL41",
+ "isi_pertanyaan": "Saya tertarik mengembangkan produk berbasis kimia yang ramah lingkungan"
+ },
+ {
+ "kode_pertanyaan": "BKUL42",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari teknologi pemrosesan minyak bumi dan gas alam"
+ },
+ {
+ "kode_pertanyaan": "BKUL43",
+ "isi_pertanyaan": "Saya tertarik pada optimasi sistem dan proses"
+ },
+ {
+ "kode_pertanyaan": "BKUL44",
+ "isi_pertanyaan": "Saya tertarik suka menyelesaikan masalah yang melibatkan efisiensi dan produktivitas"
+ },
+ {
+ "kode_pertanyaan": "BKUL45",
+ "isi_pertanyaan": "Saya tertarik dengan manajemen operasi dan rantai pasok"
+ },
+ {
+ "kode_pertanyaan": "BKUL46",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara meningkatkan kualitas produk dan layanan"
+ },
+ {
+ "kode_pertanyaan": "BKUL47",
+ "isi_pertanyaan": "Saya tertarik menyukai kombinasi antara teknik, bisnis, dan manajemen"
+ },
+ {
+ "kode_pertanyaan": "BKUL48",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari cara mendesain sistem kerja yang ergonomis"
+ },
+ {
+ "kode_pertanyaan": "BKUL49",
+ "isi_pertanyaan": "Saya tertarik dengan sumber energi terbarukan dan konservasi energi"
+ },
+ {
+ "kode_pertanyaan": "BKUL50",
+ "isi_pertanyaan": "Saya tertarik ingin mempelajari sistem pembangkit listrik dan distribusi energi"
+ },
+ {
+ "kode_pertanyaan": "BKUL51",
+ "isi_pertanyaan": "Saya tertarik peduli tentang efisiensi energi dan dampak lingkungan"
+ },
+ {
+ "kode_pertanyaan": "BKUL52",
+ "isi_pertanyaan": "Saya tertarik dengan teknologi panel surya, turbin angin, atau bioenergi"
+ },
+ {
+ "kode_pertanyaan": "BKUL53",
+ "isi_pertanyaan": "Saya tertarik ingin berkontribusi pada solusi energi masa depan"
+ },
+ {
+ "kode_pertanyaan": "BKUL54",
+ "isi_pertanyaan": "Saya tertarik dengan manajemen energi di industri dan bangunan"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/assets/profile_dev.png b/assets/profile_dev.png
new file mode 100644
index 0000000..c82793d
Binary files /dev/null and b/assets/profile_dev.png differ
diff --git a/devtools_options.yaml b/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/firebase.json b/firebase.json
new file mode 100644
index 0000000..369521e
--- /dev/null
+++ b/firebase.json
@@ -0,0 +1 @@
+{"flutter":{"platforms":{"android":{"default":{"projectId":"sirekomendasi-dc7de","appId":"1:1072369607324:android:f76a929d6f6258726f4359","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"sirekomendasi-dc7de","configurations":{"android":"1:1072369607324:android:f76a929d6f6258726f4359","ios":"1:1072369607324:ios:1d8cb1dbadb289ff6f4359","macos":"1:1072369607324:ios:1d8cb1dbadb289ff6f4359","web":"1:1072369607324:web:d17906f3452e68cb6f4359","windows":"1:1072369607324:web:7c9de102a40074a66f4359"}}},"ios":{"default":{"projectId":"sirekomendasi-dc7de","appId":"1:1072369607324:ios:1d8cb1dbadb289ff6f4359","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"sirekomendasi-dc7de","appId":"1:1072369607324:ios:1d8cb1dbadb289ff6f4359","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}}}}}
\ No newline at end of file
diff --git a/ios/.gitignore b/ios/.gitignore
new file mode 100644
index 0000000..7a7f987
--- /dev/null
+++ b/ios/.gitignore
@@ -0,0 +1,34 @@
+**/dgph
+*.mode1v3
+*.mode2v3
+*.moved-aside
+*.pbxuser
+*.perspectivev3
+**/*sync/
+.sconsign.dblite
+.tags*
+**/.vagrant/
+**/DerivedData/
+Icon?
+**/Pods/
+**/.symlinks/
+profile
+xcuserdata
+**/.generated/
+Flutter/App.framework
+Flutter/Flutter.framework
+Flutter/Flutter.podspec
+Flutter/Generated.xcconfig
+Flutter/ephemeral/
+Flutter/app.flx
+Flutter/app.zip
+Flutter/flutter_assets/
+Flutter/flutter_export_environment.sh
+ServiceDefinitions.json
+Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!default.mode1v3
+!default.mode2v3
+!default.pbxuser
+!default.perspectivev3
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..7c56964
--- /dev/null
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 12.0
+
+
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..ec97fc6
--- /dev/null
+++ b/ios/Flutter/Debug.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..c4855bf
--- /dev/null
+++ b/ios/Flutter/Release.xcconfig
@@ -0,0 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
diff --git a/ios/Podfile b/ios/Podfile
new file mode 100644
index 0000000..5fb3e95
--- /dev/null
+++ b/ios/Podfile
@@ -0,0 +1,59 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '13.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ pod 'Firebase/Analytics', :modular_headers => true
+ pod 'Firebase/Auth', :modular_headers => true
+ pod 'Firebase/Core', :modular_headers => true
+ pod 'Firebase/Firestore', :modular_headers => true
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+
+ target 'RunnerTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ if target.name == 'BoringSSL-GRPC'
+ target.source_build_phase.files.each do |file|
+ if file.settings && file.settings['COMPILER_FLAGS']
+ flags = file.settings['COMPILER_FLAGS'].split
+ flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }
+ file.settings['COMPILER_FLAGS'] = flags.join(' ')
+ end
+ end
+ end
+ end
+end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..716777c
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,1531 @@
+PODS:
+ - abseil/algorithm (1.20240116.2):
+ - abseil/algorithm/algorithm (= 1.20240116.2)
+ - abseil/algorithm/container (= 1.20240116.2)
+ - abseil/algorithm/algorithm (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/algorithm/container (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base (1.20240116.2):
+ - abseil/base/atomic_hook (= 1.20240116.2)
+ - abseil/base/base (= 1.20240116.2)
+ - abseil/base/base_internal (= 1.20240116.2)
+ - abseil/base/config (= 1.20240116.2)
+ - abseil/base/core_headers (= 1.20240116.2)
+ - abseil/base/cycleclock_internal (= 1.20240116.2)
+ - abseil/base/dynamic_annotations (= 1.20240116.2)
+ - abseil/base/endian (= 1.20240116.2)
+ - abseil/base/errno_saver (= 1.20240116.2)
+ - abseil/base/fast_type_id (= 1.20240116.2)
+ - abseil/base/log_severity (= 1.20240116.2)
+ - abseil/base/malloc_internal (= 1.20240116.2)
+ - abseil/base/no_destructor (= 1.20240116.2)
+ - abseil/base/nullability (= 1.20240116.2)
+ - abseil/base/prefetch (= 1.20240116.2)
+ - abseil/base/pretty_function (= 1.20240116.2)
+ - abseil/base/raw_logging_internal (= 1.20240116.2)
+ - abseil/base/spinlock_wait (= 1.20240116.2)
+ - abseil/base/strerror (= 1.20240116.2)
+ - abseil/base/throw_delegate (= 1.20240116.2)
+ - abseil/base/atomic_hook (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/base (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/cycleclock_internal
+ - abseil/base/dynamic_annotations
+ - abseil/base/log_severity
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/spinlock_wait
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/base_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/config (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/core_headers (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/cycleclock_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/dynamic_annotations (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/endian (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/xcprivacy
+ - abseil/base/errno_saver (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/fast_type_id (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/log_severity (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/malloc_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/base/no_destructor (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/nullability (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/prefetch (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/pretty_function (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/raw_logging_internal (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/xcprivacy
+ - abseil/base/spinlock_wait (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/strerror (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/throw_delegate (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/cleanup/cleanup_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/common (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/container/common_policy_traits (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/compressed_tuple (1.20240116.2):
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/container_memory (1.20240116.2):
+ - abseil/base/config
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/fixed_array (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_map (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_map
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_set (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_set
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/hash_function_defaults (1.20240116.2):
+ - abseil/base/config
+ - abseil/hash/hash
+ - abseil/strings/cord
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/container/hash_policy_traits (1.20240116.2):
+ - abseil/container/common_policy_traits
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/hashtable_debug_hooks (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/container/hashtablez_sampler (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/memory/memory
+ - abseil/profiling/exponential_biased
+ - abseil/profiling/sample_recorder
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/inlined_vector_internal
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/container/layout (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/debugging/demangle_internal
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_map (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/container_memory
+ - abseil/container/raw_hash_set
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_set (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/container/common
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/hash_policy_traits
+ - abseil/container/hashtable_debug_hooks
+ - abseil/container/hashtablez_sampler
+ - abseil/hash/hash
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/crc/cpu_detect (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/crc32c (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/crc/cpu_detect
+ - abseil/crc/crc_internal
+ - abseil/crc/non_temporal_memcpy
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_cord_state (1.20240116.2):
+ - abseil/base/config
+ - abseil/crc/crc32c
+ - abseil/numeric/bits
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/crc/cpu_detect
+ - abseil/memory/memory
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_arm_intrinsics (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_memcpy (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/crc/non_temporal_arm_intrinsics
+ - abseil/xcprivacy
+ - abseil/debugging/debugging_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/errno_saver
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/demangle_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/debugging/examine_stack (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/xcprivacy
+ - abseil/debugging/stacktrace (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/symbolize (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/debugging/demangle_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/xcprivacy
+ - abseil/flags/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/flags/program_name
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/flag (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/config
+ - abseil/flags/flag_internal
+ - abseil/flags/reflection
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/flag_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/marshalling
+ - abseil/flags/reflection
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/flags/marshalling (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/numeric/int128
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/path_util (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/private_handle_accessor (1.20240116.2):
+ - abseil/base/config
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/program_name (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/reflection (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/container/flat_hash_map
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/private_handle_accessor
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/functional/any_invocable (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/bind_front (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/container/compressed_tuple
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/function_ref (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/functional/any_invocable
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/hash/city (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/xcprivacy
+ - abseil/hash/hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/container/fixed_array
+ - abseil/functional/function_ref
+ - abseil/hash/city
+ - abseil/hash/low_level_hash
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/hash/low_level_hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/log/absl_check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_vlog_is_on (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/globals (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/hash/hash
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/append_truncated (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/check_impl (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/check_op (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/nullstream
+ - abseil/log/internal/strip
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/conditions (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/voidify
+ - abseil/xcprivacy
+ - abseil/log/internal/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/fnmatch (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/globals (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/log/internal/log_impl (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/log_message (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/examine_stack
+ - abseil/log/globals
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/format
+ - abseil/log/internal/globals
+ - abseil/log/internal/log_sink_set
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/proto
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/log/log_sink_registry
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/log_sink_set (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/no_destructor
+ - abseil/base/raw_logging_internal
+ - abseil/cleanup/cleanup
+ - abseil/log/globals
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/nullguard (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/nullstream (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/proto (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/strip (1.20240116.2):
+ - abseil/base/log_severity
+ - abseil/log/internal/log_message
+ - abseil/log/internal/nullstream
+ - abseil/xcprivacy
+ - abseil/log/internal/vlog_config (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/log/internal/fnmatch
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/log/internal/voidify (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/log/log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/log/vlog_is_on
+ - abseil/xcprivacy
+ - abseil/log/log_entry (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/config
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/log_sink (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/log_entry
+ - abseil/xcprivacy
+ - abseil/log/log_sink_registry (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/internal/log_sink_set
+ - abseil/log/log_sink
+ - abseil/xcprivacy
+ - abseil/log/vlog_is_on (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/xcprivacy
+ - abseil/memory (1.20240116.2):
+ - abseil/memory/memory (= 1.20240116.2)
+ - abseil/memory/memory (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/meta (1.20240116.2):
+ - abseil/meta/type_traits (= 1.20240116.2)
+ - abseil/meta/type_traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/int128 (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/numeric/representation (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/profiling/exponential_biased (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/profiling/sample_recorder (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/random/bit_gen_ref (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/random
+ - abseil/xcprivacy
+ - abseil/random/distributions (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/generate_real
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/traits
+ - abseil/random/internal/uniform_helper
+ - abseil/random/internal/wide_multiply
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/random/internal/distribution_caller (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/random/internal/fast_uniform_bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/fastmath (1.20240116.2):
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/random/internal/generate_real (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/iostream_state_saver (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/nonsecure_base (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/pcg_engine (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/iostream_state_saver
+ - abseil/xcprivacy
+ - abseil/random/internal/platform (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/internal/pool_urbg (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/randen
+ - abseil/random/internal/seed_material
+ - abseil/random/internal/traits
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/randen (1.20240116.2):
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes
+ - abseil/random/internal/randen_slow
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_engine (1.20240116.2):
+ - abseil/base/endian
+ - abseil/meta/type_traits
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/randen
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes_impl
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_slow (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/salted_seed_seq (1.20240116.2):
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/seed_material
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/seed_material (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/uniform_helper (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/wide_multiply (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/random (1.20240116.2):
+ - abseil/random/distributions
+ - abseil/random/internal/nonsecure_base
+ - abseil/random/internal/pcg_engine
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/randen_engine
+ - abseil/random/seed_sequences
+ - abseil/xcprivacy
+ - abseil/random/seed_gen_exception (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/seed_sequences (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/status (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/functional/function_ref
+ - abseil/memory/memory
+ - abseil/strings/cord
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/statusor (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/status/status
+ - abseil/strings/has_ostream_operator
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/charset (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/strings/cord (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/crc/crc32c
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_scope
+ - abseil/strings/cordz_update_tracker
+ - abseil/strings/internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cord_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/inlined_vector
+ - abseil/container/layout
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_functions (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/profiling/exponential_biased
+ - abseil/xcprivacy
+ - abseil/strings/cordz_handle (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/strings/cordz_info (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_handle
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_tracker
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_statistics (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_scope (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_tracker (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/has_ostream_operator (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/strings/str_format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/strings/str_format_internal
+ - abseil/strings/string_view
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/str_format_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/fixed_array
+ - abseil/container/inlined_vector
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/numeric/representation
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/string_view (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/xcprivacy
+ - abseil/strings/strings (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/charset
+ - abseil/strings/internal
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/synchronization/graphcycles_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/synchronization/kernel_timeout_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/synchronization/synchronization (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/synchronization/graphcycles_internal
+ - abseil/synchronization/kernel_timeout_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/time (1.20240116.2):
+ - abseil/time/internal (= 1.20240116.2)
+ - abseil/time/time (= 1.20240116.2)
+ - abseil/time/internal (1.20240116.2):
+ - abseil/time/internal/cctz (= 1.20240116.2)
+ - abseil/time/internal/cctz (1.20240116.2):
+ - abseil/time/internal/cctz/civil_time (= 1.20240116.2)
+ - abseil/time/internal/cctz/time_zone (= 1.20240116.2)
+ - abseil/time/internal/cctz/civil_time (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/time/internal/cctz/time_zone (1.20240116.2):
+ - abseil/base/config
+ - abseil/time/internal/cctz/civil_time
+ - abseil/xcprivacy
+ - abseil/time/time (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/time/internal/cctz/civil_time
+ - abseil/time/internal/cctz/time_zone
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/types (1.20240116.2):
+ - abseil/types/any (= 1.20240116.2)
+ - abseil/types/bad_any_cast (= 1.20240116.2)
+ - abseil/types/bad_any_cast_impl (= 1.20240116.2)
+ - abseil/types/bad_optional_access (= 1.20240116.2)
+ - abseil/types/bad_variant_access (= 1.20240116.2)
+ - abseil/types/compare (= 1.20240116.2)
+ - abseil/types/optional (= 1.20240116.2)
+ - abseil/types/span (= 1.20240116.2)
+ - abseil/types/variant (= 1.20240116.2)
+ - abseil/types/any (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/types/bad_any_cast
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast (1.20240116.2):
+ - abseil/base/config
+ - abseil/types/bad_any_cast_impl
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_optional_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_variant_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/compare (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/optional (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/bad_optional_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/span (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/variant (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/types/bad_variant_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/utility/utility (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/xcprivacy (1.20240116.2)
+ - AppAuth (1.7.6):
+ - AppAuth/Core (= 1.7.6)
+ - AppAuth/ExternalUserAgent (= 1.7.6)
+ - AppAuth/Core (1.7.6)
+ - AppAuth/ExternalUserAgent (1.7.6):
+ - AppAuth/Core
+ - BoringSSL-GRPC (0.0.36):
+ - BoringSSL-GRPC/Implementation (= 0.0.36)
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Implementation (0.0.36):
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Interface (0.0.36)
+ - cloud_firestore (5.6.4):
+ - Firebase/Firestore (= 11.8.0)
+ - firebase_core
+ - Flutter
+ - Firebase/Analytics (11.8.0):
+ - Firebase/Core
+ - Firebase/Auth (11.8.0):
+ - Firebase/CoreOnly
+ - FirebaseAuth (~> 11.8.0)
+ - Firebase/Core (11.8.0):
+ - Firebase/CoreOnly
+ - FirebaseAnalytics (~> 11.8.0)
+ - Firebase/CoreOnly (11.8.0):
+ - FirebaseCore (~> 11.8.0)
+ - Firebase/Firestore (11.8.0):
+ - Firebase/CoreOnly
+ - FirebaseFirestore (~> 11.8.0)
+ - firebase_auth (5.5.0):
+ - Firebase/Auth (= 11.8.0)
+ - firebase_core
+ - Flutter
+ - firebase_core (3.12.0):
+ - Firebase/CoreOnly (= 11.8.0)
+ - Flutter
+ - FirebaseAnalytics (11.8.0):
+ - FirebaseAnalytics/AdIdSupport (= 11.8.0)
+ - FirebaseCore (~> 11.8.0)
+ - FirebaseInstallations (~> 11.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/MethodSwizzler (~> 8.0)
+ - GoogleUtilities/Network (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - nanopb (~> 3.30910.0)
+ - FirebaseAnalytics/AdIdSupport (11.8.0):
+ - FirebaseCore (~> 11.8.0)
+ - FirebaseInstallations (~> 11.0)
+ - GoogleAppMeasurement (= 11.8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/MethodSwizzler (~> 8.0)
+ - GoogleUtilities/Network (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - nanopb (~> 3.30910.0)
+ - FirebaseAppCheckInterop (11.9.0)
+ - FirebaseAuth (11.8.1):
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseAuthInterop (~> 11.0)
+ - FirebaseCore (~> 11.8.0)
+ - FirebaseCoreExtension (~> 11.8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GTMSessionFetcher/Core (< 5.0, >= 3.4)
+ - RecaptchaInterop (~> 100.0)
+ - FirebaseAuthInterop (11.9.0)
+ - FirebaseCore (11.8.1):
+ - FirebaseCoreInternal (~> 11.8.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/Logger (~> 8.0)
+ - FirebaseCoreExtension (11.8.0):
+ - FirebaseCore (~> 11.8.0)
+ - FirebaseCoreInternal (11.8.0):
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - FirebaseFirestore (11.8.0):
+ - FirebaseCore (~> 11.8.0)
+ - FirebaseCoreExtension (~> 11.8.0)
+ - FirebaseFirestoreInternal (= 11.8.0)
+ - FirebaseSharedSwift (~> 11.0)
+ - FirebaseFirestoreInternal (11.8.0):
+ - abseil/algorithm (~> 1.20240116.1)
+ - abseil/base (~> 1.20240116.1)
+ - abseil/container/flat_hash_map (~> 1.20240116.1)
+ - abseil/memory (~> 1.20240116.1)
+ - abseil/meta (~> 1.20240116.1)
+ - abseil/strings/strings (~> 1.20240116.1)
+ - abseil/time (~> 1.20240116.1)
+ - abseil/types (~> 1.20240116.1)
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseCore (~> 11.8.0)
+ - "gRPC-C++ (~> 1.65.0)"
+ - gRPC-Core (~> 1.65.0)
+ - leveldb-library (~> 1.22)
+ - nanopb (~> 3.30910.0)
+ - FirebaseInstallations (11.8.0):
+ - FirebaseCore (~> 11.8.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - PromisesObjC (~> 2.4)
+ - FirebaseSharedSwift (11.9.0)
+ - Flutter (1.0.0)
+ - google_sign_in_ios (0.0.1):
+ - AppAuth (>= 1.7.4)
+ - Flutter
+ - FlutterMacOS
+ - GoogleSignIn (~> 7.1)
+ - GTMSessionFetcher (>= 3.4.0)
+ - GoogleAppMeasurement (11.8.0):
+ - GoogleAppMeasurement/AdIdSupport (= 11.8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/MethodSwizzler (~> 8.0)
+ - GoogleUtilities/Network (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - nanopb (~> 3.30910.0)
+ - GoogleAppMeasurement/AdIdSupport (11.8.0):
+ - GoogleAppMeasurement/WithoutAdIdSupport (= 11.8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/MethodSwizzler (~> 8.0)
+ - GoogleUtilities/Network (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - nanopb (~> 3.30910.0)
+ - GoogleAppMeasurement/WithoutAdIdSupport (11.8.0):
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/MethodSwizzler (~> 8.0)
+ - GoogleUtilities/Network (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - nanopb (~> 3.30910.0)
+ - GoogleSignIn (7.1.0):
+ - AppAuth (< 2.0, >= 1.7.3)
+ - GTMAppAuth (< 5.0, >= 4.1.1)
+ - GTMSessionFetcher/Core (~> 3.3)
+ - GoogleUtilities/AppDelegateSwizzler (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Network
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Environment (8.0.2):
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Logger (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/MethodSwizzler (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Network (8.0.2):
+ - GoogleUtilities/Logger
+ - "GoogleUtilities/NSData+zlib"
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Reachability
+ - "GoogleUtilities/NSData+zlib (8.0.2)":
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Privacy (8.0.2)
+ - GoogleUtilities/Reachability (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/UserDefaults (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - "gRPC-C++ (1.65.5)":
+ - "gRPC-C++/Implementation (= 1.65.5)"
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Implementation (1.65.5)":
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/absl_check (~> 1.20240116.2)
+ - abseil/log/absl_log (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Privacy (= 1.65.5)"
+ - gRPC-Core (= 1.65.5)
+ - "gRPC-C++/Interface (1.65.5)"
+ - "gRPC-C++/Privacy (1.65.5)"
+ - gRPC-Core (1.65.5):
+ - gRPC-Core/Implementation (= 1.65.5)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Implementation (1.65.5):
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - BoringSSL-GRPC (= 0.0.36)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Privacy (= 1.65.5)
+ - gRPC-Core/Interface (1.65.5)
+ - gRPC-Core/Privacy (1.65.5)
+ - GTMAppAuth (4.1.1):
+ - AppAuth/Core (~> 1.7)
+ - GTMSessionFetcher/Core (< 4.0, >= 3.3)
+ - GTMSessionFetcher (3.5.0):
+ - GTMSessionFetcher/Full (= 3.5.0)
+ - GTMSessionFetcher/Core (3.5.0)
+ - GTMSessionFetcher/Full (3.5.0):
+ - GTMSessionFetcher/Core
+ - image_gallery_saver_plus (0.0.1):
+ - Flutter
+ - leveldb-library (1.22.6)
+ - nanopb (3.30910.0):
+ - nanopb/decode (= 3.30910.0)
+ - nanopb/encode (= 3.30910.0)
+ - nanopb/decode (3.30910.0)
+ - nanopb/encode (3.30910.0)
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - PromisesObjC (2.4.0)
+ - RecaptchaInterop (100.0.0)
+ - share_plus (0.0.1):
+ - Flutter
+ - shared_preferences_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - url_launcher_ios (0.0.1):
+ - Flutter
+
+DEPENDENCIES:
+ - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
+ - Firebase/Analytics
+ - Firebase/Auth
+ - Firebase/Core
+ - Firebase/Firestore
+ - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
+ - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
+ - Flutter (from `Flutter`)
+ - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
+ - image_gallery_saver_plus (from `.symlinks/plugins/image_gallery_saver_plus/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+ - share_plus (from `.symlinks/plugins/share_plus/ios`)
+ - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
+
+SPEC REPOS:
+ trunk:
+ - abseil
+ - AppAuth
+ - BoringSSL-GRPC
+ - Firebase
+ - FirebaseAnalytics
+ - FirebaseAppCheckInterop
+ - FirebaseAuth
+ - FirebaseAuthInterop
+ - FirebaseCore
+ - FirebaseCoreExtension
+ - FirebaseCoreInternal
+ - FirebaseFirestore
+ - FirebaseFirestoreInternal
+ - FirebaseInstallations
+ - FirebaseSharedSwift
+ - GoogleAppMeasurement
+ - GoogleSignIn
+ - GoogleUtilities
+ - "gRPC-C++"
+ - gRPC-Core
+ - GTMAppAuth
+ - GTMSessionFetcher
+ - leveldb-library
+ - nanopb
+ - PromisesObjC
+ - RecaptchaInterop
+
+EXTERNAL SOURCES:
+ cloud_firestore:
+ :path: ".symlinks/plugins/cloud_firestore/ios"
+ firebase_auth:
+ :path: ".symlinks/plugins/firebase_auth/ios"
+ firebase_core:
+ :path: ".symlinks/plugins/firebase_core/ios"
+ Flutter:
+ :path: Flutter
+ google_sign_in_ios:
+ :path: ".symlinks/plugins/google_sign_in_ios/darwin"
+ image_gallery_saver_plus:
+ :path: ".symlinks/plugins/image_gallery_saver_plus/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+ share_plus:
+ :path: ".symlinks/plugins/share_plus/ios"
+ shared_preferences_foundation:
+ :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
+
+SPEC CHECKSUMS:
+ abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3
+ AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
+ BoringSSL-GRPC: ca6a8e5d04812fce8ffd6437810c2d46f925eaeb
+ cloud_firestore: 7a6d7b8111fe44d13a0e49783daad5219ce798ff
+ Firebase: d80354ed7f6df5f9aca55e9eb47cc4b634735eaf
+ firebase_auth: c028e89b64d87f04708ed01f0e7691d997b3fa0d
+ firebase_core: 6cbed78b4f298ed103a9fd034e6dbc846320480f
+ FirebaseAnalytics: 4fd42def128146e24e480e89f310e3d8534ea42b
+ FirebaseAppCheckInterop: 9226f7217b43e99dfa0bc9f674ad8108cef89feb
+ FirebaseAuth: ad59a1a7b161e75f74c39f70179d2482d40e2737
+ FirebaseAuthInterop: 2a26ee1bea6d47df8048683cfa071e7da657798f
+ FirebaseCore: 99fe0c4b44a39f37d99e6404e02009d2db5d718d
+ FirebaseCoreExtension: 3d3f2017a00d06e09ab4ebe065391b0bb642565e
+ FirebaseCoreInternal: df24ce5af28864660ecbd13596fc8dd3a8c34629
+ FirebaseFirestore: 563a4ab1a65e2858f05e150bb4c31b0f8f79248b
+ FirebaseFirestoreInternal: 8c5921c360a70e447bfeefb245f450e8b50e750b
+ FirebaseInstallations: 6c963bd2a86aca0481eef4f48f5a4df783ae5917
+ FirebaseSharedSwift: 574e6a5602afe4397a55c8d4f767382d620285de
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ google_sign_in_ios: 19297361f2c51d7d8ac0201b866ef1fa5d1f94a8
+ GoogleAppMeasurement: fc0817122bd4d4189164f85374e06773b9561896
+ GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
+ GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
+ "gRPC-C++": 2fa52b3141e7789a28a737f251e0c45b4cb20a87
+ gRPC-Core: a27c294d6149e1c39a7d173527119cfbc3375ce4
+ GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
+ GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
+ image_gallery_saver_plus: e597bf65a7846979417a3eae0763b71b6dfec6c3
+ leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19
+ nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
+ path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
+ PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
+ RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
+ share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
+ shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
+ url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
+
+PODFILE CHECKSUM: 55e20c0dc3b0fcb9699439564c45d4bfb91e7f9d
+
+COCOAPODS: 1.16.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..80f29a2
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,753 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0B08F4E3191C1718CE721DEE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44309CC712138A6C295BDD13 /* Pods_Runner.framework */; };
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 41BE7AE37D217557707F77F4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A61884E6070EB92C9DA7565 /* Pods_RunnerTests.framework */; };
+ 619C01BB6DEEA093B9F64580 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 71E56F6CBCC9735A933C8324 /* GoogleService-Info.plist */; };
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 090C37EAACC6628C1878F26D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 3001B99FAF58D3847964C671 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3A61884E6070EB92C9DA7565 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 40E1C4F703AEAFB3F4E96C40 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 44309CC712138A6C295BDD13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6623077AAAEF559F09EAAEC6 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
+ 71E56F6CBCC9735A933C8324 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
+ 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A8A46054CD2BDDAEAD8EBD4C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ E4D15238BF2B8882453091C1 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 822140EDA9A65D30FEC797F5 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 41BE7AE37D217557707F77F4 /* Pods_RunnerTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0B08F4E3191C1718CE721DEE /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ 331C807B294A618700263BE5 /* RunnerTests.swift */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
+ 767DA86CBE420F5563DA86EC /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A8A46054CD2BDDAEAD8EBD4C /* Pods-Runner.debug.xcconfig */,
+ 3001B99FAF58D3847964C671 /* Pods-Runner.release.xcconfig */,
+ 40E1C4F703AEAFB3F4E96C40 /* Pods-Runner.profile.xcconfig */,
+ E4D15238BF2B8882453091C1 /* Pods-RunnerTests.debug.xcconfig */,
+ 6623077AAAEF559F09EAAEC6 /* Pods-RunnerTests.release.xcconfig */,
+ 090C37EAACC6628C1878F26D /* Pods-RunnerTests.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 331C8082294A63A400263BE5 /* RunnerTests */,
+ 767DA86CBE420F5563DA86EC /* Pods */,
+ EBB65BF4410896E755CE9345 /* Frameworks */,
+ 71E56F6CBCC9735A933C8324 /* GoogleService-Info.plist */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146FA1CF9000F007C117D /* Main.storyboard */,
+ 97C146FD1CF9000F007C117D /* Assets.xcassets */,
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
+ 97C147021CF9000F007C117D /* Info.plist */,
+ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
+ 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
+ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
+ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
+ );
+ path = Runner;
+ sourceTree = "";
+ };
+ EBB65BF4410896E755CE9345 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 44309CC712138A6C295BDD13 /* Pods_Runner.framework */,
+ 3A61884E6070EB92C9DA7565 /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ EE15A8A241E794CA6B46D3BF /* [CP] Check Pods Manifest.lock */,
+ 331C807D294A63A400263BE5 /* Sources */,
+ 331C807F294A63A400263BE5 /* Resources */,
+ 822140EDA9A65D30FEC797F5 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ FB0BF3469EFA785B86C304D7 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 978F70D62289D467CBC98B93 /* [CP] Embed Pods Frameworks */,
+ 09CC5E7467F1BA4502F52B26 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = YES;
+ LastUpgradeCheck = 1510;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 331C8080294A63A400263BE5 = {
+ CreatedOnToolsVersion = 14.0;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 97C146E51CF9000F007C117D;
+ productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 97C146ED1CF9000F007C117D /* Runner */,
+ 331C8080294A63A400263BE5 /* RunnerTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 331C807F294A63A400263BE5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ 619C01BB6DEEA093B9F64580 /* GoogleService-Info.plist in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 09CC5E7467F1BA4502F52B26 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ };
+ 978F70D62289D467CBC98B93 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ EE15A8A241E794CA6B46D3BF /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ FB0BF3469EFA785B86C304D7 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 331C807D294A63A400263BE5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C146FB1CF9000F007C117D /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 97C147001CF9000F007C117D /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = L6P4GD56Q6;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 331C8088294A63A400263BE5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = E4D15238BF2B8882453091C1 /* Pods-RunnerTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 331C8089294A63A400263BE5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6623077AAAEF559F09EAAEC6 /* Pods-RunnerTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 331C808A294A63A400263BE5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 090C37EAACC6628C1878F26D /* Pods-RunnerTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = L6P4GD56Q6;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = L6P4GD56Q6;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.forwardChainingManApp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 331C8088294A63A400263BE5 /* Debug */,
+ 331C8089294A63A400263BE5 /* Release */,
+ 331C808A294A63A400263BE5 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..8e3ca5d
--- /dev/null
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..21a3cc1
--- /dev/null
+++ b/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..6266644
--- /dev/null
+++ b/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import Flutter
+import UIKit
+
+@main
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,122 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-20x20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-29x29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-40x40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-App-60x60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-20x20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-29x29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-40x40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@1x.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-76x76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000..dc9ada4
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..7353c41
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..797d452
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..6ed2d93
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..4cd7b00
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..fe73094
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..321773c
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..797d452
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..502f463
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..0ec3034
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..0ec3034
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..e9f5fea
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..84ac32a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..8953cba
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..0467bf1
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..0bedcf2
--- /dev/null
+++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "LaunchImage@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000..9da19ea
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
@@ -0,0 +1,5 @@
+# Launch Screen Assets
+
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
+
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..f2e259c
--- /dev/null
+++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 0000000..2c107a7
--- /dev/null
+++ b/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CLIENT_ID
+ 1072369607324-0e0k7pn3nqk6suq97jnegljp3k0161o5.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.1072369607324-0e0k7pn3nqk6suq97jnegljp3k0161o5
+ ANDROID_CLIENT_ID
+ 1072369607324-hp2vujt95ipkft4n348a96ndbiocqrdo.apps.googleusercontent.com
+ API_KEY
+ AIzaSyDI7KTuPhqGiIkX5pznUDYkToUmIhznqf8
+ GCM_SENDER_ID
+ 1072369607324
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.example.forwardChainingManApp
+ PROJECT_ID
+ sirekomendasi-dc7de
+ STORAGE_BUCKET
+ sirekomendasi-dc7de.firebasestorage.app
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:1072369607324:ios:1d8cb1dbadb289ff6f4359
+
+
\ No newline at end of file
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
new file mode 100644
index 0000000..0af068d
--- /dev/null
+++ b/ios/Runner/Info.plist
@@ -0,0 +1,69 @@
+
+
+
+
+ NSPhotoLibraryAddUsageDescription
+ We need permission to save photos and videos to your library for your convenience.
+
+ NSPhotoLibraryUsageDescription
+ We need permission to access your photo library to view and select your photos and videos.
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Forward Chaining Man App
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ forward_chaining_man_app
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ NSAllowsLocalNetworking
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ CADisableMinimumFrameDurationOnPhone
+
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Editor
+ CFBundleURLSchemes
+
+
+
+ com.googleusercontent.apps.1072369607324-0e0k7pn3nqk6suq97jnegljp3k0161o5
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
+
+
\ No newline at end of file
diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..308a2a5
--- /dev/null
+++ b/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift
new file mode 100644
index 0000000..86a7c3b
--- /dev/null
+++ b/ios/RunnerTests/RunnerTests.swift
@@ -0,0 +1,12 @@
+import Flutter
+import UIKit
+import XCTest
+
+class RunnerTests: XCTestCase {
+
+ func testExample() {
+ // If you add code to the Runner application, consider adding tests here.
+ // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
+ }
+
+}
diff --git a/lib/admin_mode.dart b/lib/admin_mode.dart
new file mode 100644
index 0000000..7ca6533
--- /dev/null
+++ b/lib/admin_mode.dart
@@ -0,0 +1,139 @@
+import 'dart:convert';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart' as rootBundle;
+
+////////////////////////////////////////////////////////////
+/// Bagian Model & Fungsi Pendukung
+////////////////////////////////////////////////////////////
+
+/// Representasi data ProgramStudi (bawaan dari JSON)
+class ProgramStudi {
+ final String name;
+ final String description;
+ final List categories;
+ final Map minat;
+
+ ProgramStudi({
+ required this.name,
+ required this.description,
+ required this.categories,
+ required this.minat,
+ });
+
+ factory ProgramStudi.fromJson(Map json) {
+ final minatMap = {};
+ if (json['minat'] != null) {
+ (json['minat'] as Map).forEach((key, value) {
+ minatMap[key] = Minat.fromJson(value);
+ });
+ }
+
+ return ProgramStudi(
+ name: json['name'] ?? '',
+ description: json['description'] ?? '',
+ categories: json['categories'] == null
+ ? []
+ : List.from(json['categories']),
+ minat: minatMap,
+ );
+ }
+}
+
+/// Representasi data Minat (pertanyaan, karir, dsb.)
+class Minat {
+ final List pertanyaan;
+ final List karir;
+ final List jurusanTerkait;
+
+ Minat({
+ required this.pertanyaan,
+ required this.karir,
+ required this.jurusanTerkait,
+ });
+
+ factory Minat.fromJson(Map json) {
+ return Minat(
+ pertanyaan: json['pertanyaan'] == null
+ ? []
+ : List.from(json['pertanyaan']),
+ karir: json['karir'] == null ? [] : List.from(json['karir']),
+ jurusanTerkait: json['jurusan_terkait'] == null
+ ? []
+ : List.from(json['jurusan_terkait']),
+ );
+ }
+}
+
+/// Model flattened satu pertanyaan
+class QuestionItem {
+ final String id; // unique ID, misal "Q1", "Q2"
+ final String programName; // ex: "IPA (Sains Murni) - Kerja"
+ final String minatKey; // ex: "Kedokteran"
+ final String questionText; // Cleaned question text
+ final String rawQuestionText; // Original question text with code
+ final int bobot; // ex: 5
+ bool? userAnswer; // Jawaban user: true, false, atau null
+
+ // Add this field to store the question code
+ final String questionCode; // ex: "KUL04"
+
+ // Add any other existing fields...
+
+ QuestionItem({
+ required this.id,
+ required this.programName,
+ required this.minatKey,
+ required this.questionText,
+ required this.rawQuestionText,
+ required this.bobot,
+ this.userAnswer,
+ required this.questionCode, // Add to constructor
+ // Add any other existing parameters...
+ });
+
+ // If needed, you can keep a factory method to extract code from raw text
+ factory QuestionItem.fromRawQuestion({
+ required String id,
+ required String programName,
+ required String minatKey,
+ required String questionText,
+ required String rawQuestionText,
+ required int bobot,
+ bool? userAnswer,
+ // Any other existing parameters...
+ }) {
+ // Extract question code
+ final regex = RegExp(r'([A-Z]+\d+):');
+ final match = regex.firstMatch(rawQuestionText);
+ final questionCode = match != null && match.groupCount >= 1
+ ? match.group(1)!
+ : id; // Fallback to ID if no code found
+
+ return QuestionItem(
+ id: id,
+ programName: programName,
+ minatKey: minatKey,
+ questionText: questionText,
+ rawQuestionText: rawQuestionText,
+ bobot: bobot,
+ userAnswer: userAnswer,
+ questionCode: questionCode,
+ // Pass any other existing parameters...
+ );
+ }
+}
+
+/// Fungsi untuk mengambil bobot [n] dari string pertanyaan
+int extractBobot(String pertanyaan) {
+ final regex = RegExp(r"\[(\d+)\]");
+ final match = regex.firstMatch(pertanyaan);
+ if (match != null) {
+ return int.parse(match.group(1)!);
+ }
+ return 0;
+}
+
+/// Fungsi untuk menghapus teks [n] di akhir pertanyaan
+String cleanPertanyaan(String pertanyaan) {
+ return pertanyaan.replaceAll(RegExp(r"\[\d+\]"), "").trim();
+}
diff --git a/lib/app/controllers/developer_controller.dart b/lib/app/controllers/developer_controller.dart
new file mode 100644
index 0000000..4b66d89
--- /dev/null
+++ b/lib/app/controllers/developer_controller.dart
@@ -0,0 +1,13 @@
+import 'package:get/get.dart';
+
+bool developerMode = false;
+
+/// Controller untuk DeveloperModePage
+class DeveloperModeController extends GetxController {
+ final RxBool isDeveloperMode = developerMode.obs;
+
+ void toggleDeveloperMode(bool value) {
+ isDeveloperMode.value = value;
+ developerMode = value;
+ }
+}
diff --git a/lib/app/controllers/home_controller.dart b/lib/app/controllers/home_controller.dart
new file mode 100644
index 0000000..f3e77a4
--- /dev/null
+++ b/lib/app/controllers/home_controller.dart
@@ -0,0 +1,11 @@
+import 'package:get/get.dart';
+
+/// Controller untuk HomePage
+class HomeController extends GetxController {
+ final Rx pilihan =
+ Rx(null); // null=belum pilih; true=Kerja; false=Kuliah
+
+ void setPilihan(bool? val) {
+ pilihan.value = val;
+ }
+}
diff --git a/lib/app/views/about/page_about.dart b/lib/app/views/about/page_about.dart
new file mode 100644
index 0000000..7d4acc8
--- /dev/null
+++ b/lib/app/views/about/page_about.dart
@@ -0,0 +1,976 @@
+import 'dart:convert';
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:firebase_auth/firebase_auth.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart' as rootBundle;
+import 'package:flutter/services.dart';
+import 'package:font_awesome_flutter/font_awesome_flutter.dart';
+import 'package:forward_chaining_man_app/app/views/about/widget/diagram_painter.dart';
+import 'package:forward_chaining_man_app/app/views/page_intro.dart';
+import 'package:forward_chaining_man_app/app/views/page_login.dart';
+import 'package:forward_chaining_man_app/app/views/page_profile.dart';
+import 'package:get/get.dart';
+import 'dart:math' as math;
+
+import 'package:url_launcher/url_launcher.dart';
+
+class AboutPage extends StatefulWidget {
+ const AboutPage({Key? key}) : super(key: key);
+
+ @override
+ State createState() => _AboutPageState();
+}
+
+class ForwardChainingLogoPainter extends CustomPainter {
+ final double animationValue;
+
+ ForwardChainingLogoPainter({required this.animationValue});
+
+ @override
+ void paint(Canvas canvas, Size size) {
+ final centerX = size.width / 2;
+ final centerY = size.height / 2;
+ final radius = size.width * 0.32;
+
+ // Create a layered neural network structure with input, hidden, and output nodes
+
+ // Define the layers (3 layers: input, hidden, output)
+ final int inputNodes = 4;
+ final int hiddenNodes = 6;
+ final int outputNodes = 3;
+
+ // Node positions for each layer
+ final List inputLayer = [];
+ final List hiddenLayer = [];
+ final List outputLayer = [];
+
+ // Create a gradient for the background glow
+ final Rect rect =
+ Rect.fromCircle(center: Offset(centerX, centerY), radius: radius * 1.2);
+ final gradient = RadialGradient(
+ colors: [
+ Colors.indigo.shade400.withOpacity(0.2),
+ Colors.transparent,
+ ],
+ stops: const [0.5, 1.0],
+ );
+
+ final backgroundPaint = Paint()
+ ..shader = gradient.createShader(rect)
+ ..style = PaintingStyle.fill;
+
+ canvas.drawCircle(Offset(centerX, centerY), radius * 1.2, backgroundPaint);
+
+ // Paints for nodes
+ final inputNodePaint = Paint()
+ ..color = Colors.blue.shade400
+ ..style = PaintingStyle.fill;
+
+ final hiddenNodePaint = Paint()
+ ..color = Colors.indigo.shade400
+ ..style = PaintingStyle.fill;
+
+ final outputNodePaint = Paint()
+ ..color = Colors.purple.shade400
+ ..style = PaintingStyle.fill;
+
+ // Paint for node glows
+ final glowPaint = Paint()
+ ..color = Colors.indigo.shade200.withOpacity(0.4)
+ ..style = PaintingStyle.fill
+ ..maskFilter = const MaskFilter.blur(BlurStyle.normal, 8);
+
+ // Paint for node borders
+ final borderPaint = Paint()
+ ..color = Colors.white.withOpacity(0.8)
+ ..style = PaintingStyle.stroke
+ ..strokeWidth = 1.5;
+
+ // Paint for connections with animation
+ final connectionPaint = Paint()
+ ..style = PaintingStyle.stroke
+ ..strokeWidth = 1.5;
+
+ // Create input layer nodes (left side)
+ final inputSpacing = size.height / (inputNodes + 1);
+ for (int i = 0; i < inputNodes; i++) {
+ final y = (i + 1) * inputSpacing;
+ final pulseFactor = math
+ .sin((animationValue * 2 * math.pi) + (i * 0.5))
+ .clamp(-0.5, 0.5) *
+ 0.05;
+ final offsetX = (math.sin(animationValue * math.pi + i) * 4).clamp(-4, 4);
+
+ // Position slightly to the left of center
+ inputLayer.add(Offset(
+ centerX - (radius * 0.7) + offsetX, y + (pulseFactor * size.height)));
+ }
+
+ // Create hidden layer nodes (center)
+ final hiddenSpacing = size.height / (hiddenNodes + 1);
+ for (int i = 0; i < hiddenNodes; i++) {
+ final y = (i + 1) * hiddenSpacing;
+ final pulseFactor = math
+ .sin((animationValue * 2 * math.pi) + (i * 0.7))
+ .clamp(-0.5, 0.5) *
+ 0.03;
+ final offsetY =
+ (math.sin(animationValue * math.pi * 2 + i * 0.5) * 5).clamp(-5, 5);
+
+ // Position at center
+ hiddenLayer
+ .add(Offset(centerX + (pulseFactor * size.width), y + offsetY));
+ }
+
+ // Create output layer nodes (right side)
+ final outputSpacing = size.height / (outputNodes + 1);
+ for (int i = 0; i < outputNodes; i++) {
+ final y = (i + 1) * outputSpacing;
+ final pulseFactor = math
+ .sin((animationValue * 2 * math.pi) + (i * 0.9))
+ .clamp(-0.5, 0.5) *
+ 0.05;
+ final offsetX =
+ (math.sin(animationValue * math.pi + i * 1.2) * 4).clamp(-4, 4);
+
+ // Position to the right of center
+ outputLayer.add(Offset(
+ centerX + (radius * 0.7) + offsetX, y + (pulseFactor * size.height)));
+ }
+
+ // Draw connections with animated data flow
+ void drawConnections(
+ List fromLayer, List toLayer, Color baseColor) {
+ for (int i = 0; i < fromLayer.length; i++) {
+ for (int j = 0; j < toLayer.length; j++) {
+ // Create a flow effect along the connection
+ final path = Path();
+ path.moveTo(fromLayer[i].dx, fromLayer[i].dy);
+ path.lineTo(toLayer[j].dx, toLayer[j].dy);
+
+ // Create gradient shader for data flow effect
+ final pathMetrics = path.computeMetrics().first;
+ final length = pathMetrics.length;
+
+ // Animate a dot along the path
+ final flowPosition =
+ (animationValue * 2 + (i * 0.1) + (j * 0.05)) % 1.0;
+ final flowPoint =
+ pathMetrics.getTangentForOffset(length * flowPosition)?.position;
+
+ // Basic line
+ connectionPaint.color = baseColor.withOpacity(0.3 +
+ (0.2 * math.sin(animationValue * math.pi * 2 + i + j))
+ .clamp(0.0, 0.5));
+ canvas.drawPath(path, connectionPaint);
+
+ // Draw data flow point
+ if (flowPoint != null && (i + j) % 2 == 0) {
+ // Only draw on some connections to avoid clutter
+ final flowDotPaint = Paint()
+ ..color = Colors.white.withOpacity(0.7)
+ ..style = PaintingStyle.fill;
+
+ canvas.drawCircle(flowPoint, 1.5, flowDotPaint);
+ }
+ }
+ }
+ }
+
+ // Draw connections from input to hidden layer
+ drawConnections(inputLayer, hiddenLayer, Colors.blue.shade500);
+
+ // Draw connections from hidden to output layer
+ drawConnections(hiddenLayer, outputLayer, Colors.purple.shade500);
+
+ // Draw the nodes with glow effect
+ void drawNodesWithEffects(
+ List nodes, Paint nodePaint, double size) {
+ for (int i = 0; i < nodes.length; i++) {
+ final node = nodes[i];
+ // Size pulsation
+ final pulse =
+ 1.0 + 0.15 * math.sin((animationValue * 2 * math.pi) + (i));
+ final nodeSize = size * pulse.clamp(0.9, 1.15);
+
+ // Draw glow
+ canvas.drawCircle(node, nodeSize * 1.5, glowPaint);
+
+ // Draw node
+ canvas.drawCircle(node, nodeSize, nodePaint);
+
+ // Draw border
+ canvas.drawCircle(node, nodeSize, borderPaint);
+ }
+ }
+
+ // Draw all nodes by layer
+ drawNodesWithEffects(inputLayer, inputNodePaint, 5);
+ drawNodesWithEffects(hiddenLayer, hiddenNodePaint, 6);
+ drawNodesWithEffects(outputLayer, outputNodePaint, 5);
+
+ // Draw central circle highlight
+ final centerGlowPaint = Paint()
+ ..color = Colors.indigo.withOpacity(
+ (0.1 + 0.05 * math.sin(animationValue * math.pi * 2))
+ .clamp(0.05, 0.15))
+ ..style = PaintingStyle.fill
+ ..maskFilter = const MaskFilter.blur(BlurStyle.normal, 15);
+
+ canvas.drawCircle(Offset(centerX, centerY), radius * 0.4, centerGlowPaint);
+ }
+
+ @override
+ bool shouldRepaint(ForwardChainingLogoPainter oldDelegate) {
+ return oldDelegate.animationValue != animationValue;
+ }
+}
+
+class _AboutPageState extends State with TickerProviderStateMixin {
+ late AnimationController _logoAnimationController;
+ late AnimationController _cardAnimationController;
+ late Animation _logoRotationAnimation;
+ late Animation _logoScaleAnimation;
+ late Animation _fadeInAnimation;
+ late List> _cardSlideAnimations;
+
+ // For step animation
+ int _currentStep = 0;
+ final int _totalSteps = 4;
+
+ @override
+ void initState() {
+ super.initState();
+
+ // Logo animation controller
+ _logoAnimationController = AnimationController(
+ vsync: this,
+ duration: const Duration(seconds: 3),
+ )..repeat(reverse: true);
+
+// Card animation controller
+ _cardAnimationController = AnimationController(
+ vsync: this,
+ duration: const Duration(milliseconds: 1200),
+ );
+
+// Logo animations
+// Fix: Ensure the end value is <= 1.0 to prevent the assertion error
+ _logoRotationAnimation = Tween(begin: 0, end: 0.05).animate(
+ CurvedAnimation(
+ parent: _logoAnimationController,
+ curve: Curves.easeInOut,
+ ),
+ );
+
+// Fix: Ensure the end value doesn't cause any curves to go beyond 1.0
+ _logoScaleAnimation = Tween(begin: 1.0, end: 1.08).animate(
+ CurvedAnimation(
+ parent: _logoAnimationController,
+ curve: Curves.easeInOut,
+ ),
+ );
+
+ _fadeInAnimation = Tween(begin: 0, end: 1).animate(
+ CurvedAnimation(
+ parent: _cardAnimationController,
+ // Fix: Ensure the end of the interval is <= 1.0
+ curve: const Interval(0, 0.6, curve: Curves.easeOut),
+ ),
+ );
+
+ // Card slide animations (staggered)
+ _cardSlideAnimations = [
+ for (int i = 0; i < 5; i++)
+ Tween(
+ begin: const Offset(0, 0.5),
+ end: Offset.zero,
+ ).animate(
+ CurvedAnimation(
+ parent: _cardAnimationController,
+ curve: Interval(
+ 0.2 + (i * 0.12),
+ (0.7 + (i * 0.08)).clamp(0.0, 1.0), // ✅ Perbaikan utama!
+ curve: Curves.easeOutCubic,
+ ),
+ ),
+ ),
+ ];
+
+ // Start animations
+ _cardAnimationController.forward();
+
+ // Start step animation
+ Future.delayed(const Duration(seconds: 2), () {
+ _startStepAnimation();
+ });
+ }
+
+ void _startStepAnimation() {
+ Future.delayed(const Duration(seconds: 3), () {
+ if (mounted) {
+ setState(() {
+ _currentStep = (_currentStep + 1) % _totalSteps;
+ });
+ _startStepAnimation();
+ }
+ });
+ }
+
+ @override
+ void dispose() {
+ _logoAnimationController.dispose();
+ _cardAnimationController.dispose();
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ body: Container(
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ begin: Alignment.topLeft,
+ end: Alignment.bottomRight,
+ colors: [
+ Colors.indigo.shade900,
+ Colors.blue.shade800,
+ Colors.blue.shade700,
+ ],
+ ),
+ ),
+ child: SafeArea(
+ bottom: false,
+ child: Column(
+ children: [
+ // App Bar
+ Padding(
+ padding: const EdgeInsets.fromLTRB(16, 16, 16, 0),
+ child: Row(
+ children: [
+ Container(
+ padding: const EdgeInsets.all(8),
+ decoration: BoxDecoration(
+ color: Colors.white.withOpacity(0.2),
+ borderRadius: BorderRadius.circular(12),
+ ),
+ child: GestureDetector(
+ onTap: () => Get.back(),
+ child: const Icon(
+ Icons.arrow_back,
+ color: Colors.white,
+ ),
+ ),
+ ),
+ const Spacer(),
+ const Text(
+ 'Tentang Aplikasi',
+ style: TextStyle(
+ fontSize: 20,
+ fontWeight: FontWeight.bold,
+ color: Colors.white,
+ ),
+ ),
+ const Spacer(),
+ const SizedBox(width: 40), // Balance the layout
+ ],
+ ),
+ ),
+
+ Expanded(
+ child: SingleChildScrollView(
+ physics: const BouncingScrollPhysics(),
+ padding: const EdgeInsets.all(24),
+ child: Column(
+ children: [
+ // Animated Logo
+
+ const SizedBox(height: 24),
+
+ // Title and Tagline
+ FadeTransition(
+ opacity: _fadeInAnimation,
+ child: Column(
+ children: [
+ const Text(
+ 'EduGuide',
+ style: TextStyle(
+ fontSize: 32,
+ fontWeight: FontWeight.bold,
+ color: Colors.white,
+ letterSpacing: 1.2,
+ ),
+ ),
+ const SizedBox(height: 8),
+ Container(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16, vertical: 8),
+ decoration: BoxDecoration(
+ color: Colors.white.withOpacity(0.2),
+ borderRadius: BorderRadius.circular(50),
+ ),
+ child: const Text(
+ 'Sistem Rekomendasi Karir & Jurusan',
+ style: TextStyle(
+ fontSize: 14,
+ fontWeight: FontWeight.w500,
+ color: Colors.white,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ const SizedBox(height: 40),
+
+ // About App Card
+ SlideTransition(
+ position: _cardSlideAnimations[0],
+ child: _buildInfoCard(
+ title: 'Tentang Aplikasi',
+ icon: Icons.info_outline,
+ color: Colors.blue.shade300,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const Text(
+ 'Aplikasi EduGuide adalah sistem pakar berbasis aturan (rule-based expert system) yang menggunakan metode inferensi forward chaining untuk memberikan rekomendasi jurusan dan karir yang sesuai dengan minat pengguna.',
+ style: TextStyle(fontSize: 14, height: 1.5),
+ ),
+ const SizedBox(height: 16),
+ const Text(
+ 'Aplikasi ini dikembangkan sebagai bagian dari tugas akhir/skripsi untuk menunjukkan implementasi praktis dari metode forward chaining dalam sistem pendukung keputusan.',
+ style: TextStyle(fontSize: 14, height: 1.5),
+ ),
+ ],
+ ),
+ ),
+ ),
+ const SizedBox(height: 16),
+
+ // How It Works Card
+ SlideTransition(
+ position: _cardSlideAnimations[1],
+ child: _buildInfoCard(
+ title: 'Cara Kerja Forward Chaining',
+ icon: Icons.lightbulb_outline,
+ color: Colors.orange.shade300,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const Text(
+ 'Forward Chaining adalah metode penalaran dari fakta-fakta yang diketahui menuju kesimpulan. Dalam aplikasi ini:',
+ style: TextStyle(fontSize: 14, height: 1.5),
+ ),
+ const SizedBox(height: 16),
+
+ // Animated steps
+ _buildAnimatedStepExplanation(),
+
+ const SizedBox(height: 20),
+ Container(
+ padding: const EdgeInsets.all(12),
+ decoration: BoxDecoration(
+ color: Colors.amber.shade50,
+ borderRadius: BorderRadius.circular(12),
+ border: Border.all(
+ color: Colors.amber.shade200,
+ ),
+ ),
+ child: Row(
+ children: [
+ Icon(
+ Icons.tips_and_updates,
+ color: Colors.amber.shade700,
+ size: 24,
+ ),
+ const SizedBox(width: 12),
+ const Expanded(
+ child: Text(
+ 'Dengan metode ini, sistem dapat memberikan rekomendasi yang paling sesuai berdasarkan minat kamu!',
+ style: TextStyle(
+ fontSize: 13,
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ const SizedBox(height: 16),
+
+ // Forward Chaining Visual Explanation
+ SlideTransition(
+ position: _cardSlideAnimations[2],
+ child: _buildInfoCard(
+ title: 'Visualisasi Proses',
+ icon: Icons.bar_chart,
+ color: Colors.green.shade300,
+ child: Column(
+ children: [
+ Image.asset(
+ 'assets/forward_chaining_diagram.png',
+ fit: BoxFit.contain,
+ height: 180,
+ errorBuilder: (context, error, stackTrace) {
+ // Fallback if image not available
+ return _buildForwardChainingDiagram();
+ },
+ ),
+ const SizedBox(height: 16),
+ const Text(
+ 'Forward Chaining bekerja dengan mengevaluasi jawaban kamu dan mencocokkannya dengan aturan (rules) untuk menemukan rekomendasi terbaik. Ini seperti menyelesaikan teka-teki dengan petunjuk yang kamu berikan.',
+ style: TextStyle(fontSize: 14, height: 1.5),
+ ),
+ ],
+ ),
+ ),
+ ),
+ const SizedBox(height: 16),
+
+ // Tech Stack Card
+ SlideTransition(
+ position: _cardSlideAnimations[3],
+ child: _buildInfoCard(
+ title: 'Teknologi',
+ icon: Icons.code,
+ color: Colors.purple.shade300,
+ child: Wrap(
+ spacing: 10,
+ runSpacing: 10,
+ children: [
+ _buildTechChip(
+ label: 'Flutter', icon: Icons.flutter_dash),
+ _buildTechChip(
+ label: 'Dart', icon: Icons.extension),
+ _buildTechChip(
+ label: 'Forward Chaining',
+ icon: Icons.account_tree),
+ _buildTechChip(
+ label: 'GetX', icon: Icons.auto_awesome),
+ _buildTechChip(
+ label: 'Rule-Based System', icon: Icons.rule),
+ _buildTechChip(
+ label: 'Expert System',
+ icon: Icons.psychology),
+ ],
+ ),
+ ),
+ ),
+ const SizedBox(height: 16),
+
+ // Developer Card
+ SlideTransition(
+ position: _cardSlideAnimations[4],
+ child: _buildInfoCard(
+ title: 'Pengembang',
+ icon: Icons.person,
+ color: Colors.amber.shade300,
+ child: Row(
+ children: [
+ Container(
+ width: 80,
+ height: 80,
+ decoration: BoxDecoration(
+ color: Colors.grey.shade200,
+ shape: BoxShape.circle,
+ boxShadow: [
+ BoxShadow(
+ color: Colors.black.withOpacity(0.1),
+ blurRadius: 8,
+ offset: const Offset(0, 3),
+ ),
+ ],
+ image: const DecorationImage(
+ image: AssetImage('assets/profile_dev.png'),
+ fit: BoxFit.cover,
+ // Use a placeholder if no image is available
+ onError: null,
+ ),
+ ),
+ ),
+ const SizedBox(width: 20),
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const Text(
+ 'Yanuar Tri Laksono',
+ style: TextStyle(
+ fontSize: 18,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ const SizedBox(height: 4),
+ const Text(
+ 'Mahasiswa Informatika',
+ style: TextStyle(
+ fontSize: 14,
+ color: Colors.grey,
+ ),
+ ),
+ const SizedBox(height: 8),
+ Row(
+ children: [
+ SocialButton(
+ icon: FontAwesomeIcons
+ .envelope, // Email icon
+ onTap: () {
+ launchUrl(Uri.parse(
+ 'mailto:yanuartrilaksono23@gmail.com'));
+ },
+ ),
+ const SizedBox(width: 12),
+ SocialButton(
+ icon: FontAwesomeIcons
+ .linkedin, // Portfolio link icon
+ onTap: () {
+ launchUrl(Uri.parse(
+ 'https://www.linkedin.com/in/yanuar-tri-laksono/'));
+ },
+ ),
+ const SizedBox(width: 12),
+ SocialButton(
+ icon: FontAwesomeIcons
+ .github, // GitHub icon
+ onTap: () {
+ launchUrl(Uri.parse(
+ 'https://github.com/Greek-Cp'));
+ },
+ ),
+ ],
+ )
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ const SizedBox(height: 30),
+
+ // Footer
+ FadeTransition(
+ opacity: _fadeInAnimation,
+ child: Column(
+ children: [
+ Text(
+ '© ${DateTime.now().year} EduGuide App',
+ style: TextStyle(
+ color: Colors.white.withOpacity(0.8),
+ fontSize: 14,
+ ),
+ ),
+ const SizedBox(height: 8),
+ Text(
+ 'Versi 1.0.0',
+ style: TextStyle(
+ color: Colors.white.withOpacity(0.6),
+ fontSize: 12,
+ ),
+ ),
+ ],
+ ),
+ ),
+ const SizedBox(height: 40),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+ }
+
+ // Build the animated step explanation
+ Widget _buildAnimatedStepExplanation() {
+ final List