commit f4c1678b92f0701532e783c667c1970eddd4479a Author: gitea Date: Sat Jun 7 16:18:13 2025 +0700 first commit diff --git a/Penilaian-Esai/.editorconfig b/Penilaian-Esai/.editorconfig new file mode 100644 index 0000000..1671c9b --- /dev/null +++ b/Penilaian-Esai/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/Penilaian-Esai/.gitattributes b/Penilaian-Esai/.gitattributes new file mode 100644 index 0000000..510d996 --- /dev/null +++ b/Penilaian-Esai/.gitattributes @@ -0,0 +1,10 @@ +* text=auto + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore diff --git a/Penilaian-Esai/.gitignore b/Penilaian-Esai/.gitignore new file mode 100644 index 0000000..bc67a66 --- /dev/null +++ b/Penilaian-Esai/.gitignore @@ -0,0 +1,14 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/.idea +/.vscode diff --git a/Penilaian-Esai/.styleci.yml b/Penilaian-Esai/.styleci.yml new file mode 100644 index 0000000..79f63b4 --- /dev/null +++ b/Penilaian-Esai/.styleci.yml @@ -0,0 +1,12 @@ +php: + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/Penilaian-Esai/README.md b/Penilaian-Esai/README.md new file mode 100644 index 0000000..069eea7 --- /dev/null +++ b/Penilaian-Esai/README.md @@ -0,0 +1,18 @@ +## First initialize project + +1. Run the following command to clone the project + `git clone https://github.com/rsakml/Penilaian-Esai.git` + +2. Run the following command to update the laravel package. + `composer update` + +3. Run the following command to copy the env.example file into .env + `cp .env.example .env` + +4. Run the following command to generate key + `php artisan key:generate` + +5. Import database ke MySQL database. Sesuaikan nama database pada MySQL dengan yang ada pada project Laravel, file .env. + +6. Then run laravel on another port, this case using port = 8001 + `Penilaian-Esai>php artisan serve –-port=8001` \ No newline at end of file diff --git a/Penilaian-Esai/app/Console/Kernel.php b/Penilaian-Esai/app/Console/Kernel.php new file mode 100644 index 0000000..d8bc1d2 --- /dev/null +++ b/Penilaian-Esai/app/Console/Kernel.php @@ -0,0 +1,32 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/Penilaian-Esai/app/Exceptions/Handler.php b/Penilaian-Esai/app/Exceptions/Handler.php new file mode 100644 index 0000000..82a37e4 --- /dev/null +++ b/Penilaian-Esai/app/Exceptions/Handler.php @@ -0,0 +1,50 @@ +, \Psr\Log\LogLevel::*> + */ + protected $levels = [ + // + ]; + + /** + * A list of the exception types that are not reported. + * + * @var array> + */ + protected $dontReport = [ + // + ]; + + /** + * A list of the inputs that are never flashed to the session on validation exceptions. + * + * @var array + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + * + * @return void + */ + public function register() + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/BadgeSettingAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/BadgeSettingAPIController.php new file mode 100644 index 0000000..313859a --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/BadgeSettingAPIController.php @@ -0,0 +1,131 @@ +badgeSettingRepository = $badgeSettingRepo; + } + + /** + * Display a listing of the BadgeSetting. + * GET|HEAD /badgeSettings + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $badgeSettings = $this->badgeSettingRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($badgeSettings->toArray(), 'Badge Settings retrieved successfully'); + } + + /** + * Store a newly created BadgeSetting in storage. + * POST /badgeSettings + * + * @param CreateBadgeSettingAPIRequest $request + * + * @return Response + */ + public function store(CreateBadgeSettingAPIRequest $request) + { + $input = $request->all(); + + $badgeSetting = $this->badgeSettingRepository->create($input); + + return $this->sendResponse($badgeSetting->toArray(), 'Badge Setting saved successfully'); + } + + /** + * Display the specified BadgeSetting. + * GET|HEAD /badgeSettings/{id} + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /** @var BadgeSetting $badgeSetting */ + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + return $this->sendError('Badge Setting not found'); + } + + return $this->sendResponse($badgeSetting->toArray(), 'Badge Setting retrieved successfully'); + } + + /** + * Update the specified BadgeSetting in storage. + * PUT/PATCH /badgeSettings/{id} + * + * @param int $id + * @param UpdateBadgeSettingAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateBadgeSettingAPIRequest $request) + { + $input = $request->all(); + + /** @var BadgeSetting $badgeSetting */ + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + return $this->sendError('Badge Setting not found'); + } + + $badgeSetting = $this->badgeSettingRepository->update($input, $id); + + return $this->sendResponse($badgeSetting->toArray(), 'BadgeSetting updated successfully'); + } + + /** + * Remove the specified BadgeSetting from storage. + * DELETE /badgeSettings/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var BadgeSetting $badgeSetting */ + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + return $this->sendError('Badge Setting not found'); + } + + $badgeSetting->delete(); + + return $this->sendSuccess('Badge Setting deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/ContentAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/ContentAPIController.php new file mode 100644 index 0000000..10006da --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/ContentAPIController.php @@ -0,0 +1,131 @@ +contentRepository = $contentRepo; + } + + /** + * Display a listing of the Content. + * GET|HEAD /contents + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $contents = $this->contentRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($contents->toArray(), 'Contents retrieved successfully'); + } + + /** + * Store a newly created Content in storage. + * POST /contents + * + * @param CreateContentAPIRequest $request + * + * @return Response + */ + public function store(CreateContentAPIRequest $request) + { + $input = $request->all(); + + $content = $this->contentRepository->create($input); + + return $this->sendResponse($content->toArray(), 'Content saved successfully'); + } + + /** + * Display the specified Content. + * GET|HEAD /contents/{id} + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /** @var Content $content */ + $content = $this->contentRepository->find($id); + + if (empty($content)) { + return $this->sendError('Content not found'); + } + + return $this->sendResponse($content->toArray(), 'Content retrieved successfully'); + } + + /** + * Update the specified Content in storage. + * PUT/PATCH /contents/{id} + * + * @param int $id + * @param UpdateContentAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateContentAPIRequest $request) + { + $input = $request->all(); + + /** @var Content $content */ + $content = $this->contentRepository->find($id); + + if (empty($content)) { + return $this->sendError('Content not found'); + } + + $content = $this->contentRepository->update($input, $id); + + return $this->sendResponse($content->toArray(), 'Content updated successfully'); + } + + /** + * Remove the specified Content from storage. + * DELETE /contents/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var Content $content */ + $content = $this->contentRepository->find($id); + + if (empty($content)) { + return $this->sendError('Content not found'); + } + + $content->delete(); + + return $this->sendSuccess('Content deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/CourseAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/CourseAPIController.php new file mode 100644 index 0000000..1a1dc40 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/CourseAPIController.php @@ -0,0 +1,131 @@ +courseRepository = $courseRepo; + } + + /** + * Display a listing of the Course. + * GET|HEAD /courses + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $courses = $this->courseRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($courses->toArray(), 'Courses retrieved successfully'); + } + + /** + * Store a newly created Course in storage. + * POST /courses + * + * @param CreateCourseAPIRequest $request + * + * @return Response + */ + public function store(CreateCourseAPIRequest $request) + { + $input = $request->all(); + + $course = $this->courseRepository->create($input); + + return $this->sendResponse($course->toArray(), 'Course saved successfully'); + } + + /** + * Display the specified Course. + * GET|HEAD /courses/{id} + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /** @var Course $course */ + $course = $this->courseRepository->find($id); + + if (empty($course)) { + return $this->sendError('Course not found'); + } + + return $this->sendResponse($course->toArray(), 'Course retrieved successfully'); + } + + /** + * Update the specified Course in storage. + * PUT/PATCH /courses/{id} + * + * @param int $id + * @param UpdateCourseAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateCourseAPIRequest $request) + { + $input = $request->all(); + + /** @var Course $course */ + $course = $this->courseRepository->find($id); + + if (empty($course)) { + return $this->sendError('Course not found'); + } + + $course = $this->courseRepository->update($input, $id); + + return $this->sendResponse($course->toArray(), 'Course updated successfully'); + } + + /** + * Remove the specified Course from storage. + * DELETE /courses/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var Course $course */ + $course = $this->courseRepository->find($id); + + if (empty($course)) { + return $this->sendError('Course not found'); + } + + $course->delete(); + + return $this->sendSuccess('Course deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/DashboardAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/DashboardAPIController.php new file mode 100644 index 0000000..025a24a --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/DashboardAPIController.php @@ -0,0 +1,31 @@ +groupBy('question_id') + // ->with(["question"])->get(); + + $summ = TotalScore::select(DB::raw('question_id, count(*) as total')) + ->groupBy('question_id') + ->with(["question"])->get(); + + return Response([ + "chart_data" => [ + "questions" => $summ, + ] + ]); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/QuestionAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/QuestionAPIController.php new file mode 100644 index 0000000..5f37090 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/QuestionAPIController.php @@ -0,0 +1,166 @@ +questionRepository = $questionRepo; + } + + /** + * Display a listing of the Question. + * GET|HEAD /questions + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $questions = $this->questionRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($questions->toArray(), 'Questions retrieved successfully'); + } + + public function getQuestionAnswer($content_id){ + $qa = Question::where("content_id", $content_id)->with("answers")->get(); + return $this->sendResponse([ + ...$qa->toArray(), + ], "success"); + } + + public function checkAnswer(Request $request){ + dd('masuk'); + //if(Auth::check()){ + $score = 0; + $data = json_decode($request->getContent(), true); + foreach ($data["answer_ids"] as $ans){ + $answer = Answer::find($ans); + $is_right = (bool) $answer->is_right; + if($is_right){ + $get_score = $answer->question->score; + $score+=$get_score; + } + } + + $user_score = UserScore::where("user_id", $data["user_id"]); + //if($user_score->count() == 0){ + UserScore::create(["user_id"=> $data["user_id"], "content_id" => $data["content_id"], "score" => $score ]); + //} + return $this->sendResponse(["score"=>$score], "success"); + //} + + } + /** + * Store a newly created Question in storage. + * POST /questions + * + * @param CreateQuestionAPIRequest $request + * + * @return Response + */ + public function store(CreateQuestionAPIRequest $request) + { + $input = $request->all(); + + $question = $this->questionRepository->create($input); + + return $this->sendResponse($question->toArray(), 'Question saved successfully'); + } + + /** + * Display the specified Question. + * GET|HEAD /questions/{id} + * + * @param int $id + * + * @return Response + */ + // public function show($id) + // { + // /** @var Question $question */ + // $question = $this->questionRepository->find($id); + // dd([$id,$question]); + + // if (empty($question)) { + // return $this->sendError('Question not found'); + // } + + // return $this->sendResponse($question->toArray(), 'Question retrieved successfully'); + // } + + /** + * Update the specified Question in storage. + * PUT/PATCH /questions/{id} + * + * @param int $id + * @param UpdateQuestionAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateQuestionAPIRequest $request) + { + $input = $request->all(); + + /** @var Question $question */ + $question = $this->questionRepository->find($id); + + if (empty($question)) { + return $this->sendError('Question not found'); + } + + $question = $this->questionRepository->update($input, $id); + + return $this->sendResponse($question->toArray(), 'Question updated successfully'); + } + + /** + * Remove the specified Question from storage. + * DELETE /questions/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var Question $question */ + $question = $this->questionRepository->find($id); + + if (empty($question)) { + return $this->sendError('Question not found'); + } + + $question->delete(); + + return $this->sendSuccess('Question deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/RoleAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/RoleAPIController.php new file mode 100644 index 0000000..8b6216d --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/RoleAPIController.php @@ -0,0 +1,131 @@ +roleRepository = $roleRepo; + } + + /** + * Display a listing of the Role. + * GET|HEAD /roles + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $roles = $this->roleRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($roles->toArray(), 'Roles retrieved successfully'); + } + + /** + * Store a newly created Role in storage. + * POST /roles + * + * @param CreateRoleAPIRequest $request + * + * @return Response + */ + public function store(CreateRoleAPIRequest $request) + { + $input = $request->all(); + + $role = $this->roleRepository->create($input); + + return $this->sendResponse($role->toArray(), 'Role saved successfully'); + } + + /** + * Display the specified Role. + * GET|HEAD /roles/{id} + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /** @var Role $role */ + $role = $this->roleRepository->find($id); + + if (empty($role)) { + return $this->sendError('Role not found'); + } + + return $this->sendResponse($role->toArray(), 'Role retrieved successfully'); + } + + /** + * Update the specified Role in storage. + * PUT/PATCH /roles/{id} + * + * @param int $id + * @param UpdateRoleAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateRoleAPIRequest $request) + { + $input = $request->all(); + + /** @var Role $role */ + $role = $this->roleRepository->find($id); + + if (empty($role)) { + return $this->sendError('Role not found'); + } + + $role = $this->roleRepository->update($input, $id); + + return $this->sendResponse($role->toArray(), 'Role updated successfully'); + } + + /** + * Remove the specified Role from storage. + * DELETE /roles/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var Role $role */ + $role = $this->roleRepository->find($id); + + if (empty($role)) { + return $this->sendError('Role not found'); + } + + $role->delete(); + + return $this->sendSuccess('Role deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/API/lessonAPIController.php b/Penilaian-Esai/app/Http/Controllers/API/lessonAPIController.php new file mode 100644 index 0000000..129f2aa --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/API/lessonAPIController.php @@ -0,0 +1,131 @@ +lessonRepository = $lessonRepo; + } + + /** + * Display a listing of the lesson. + * GET|HEAD /lessons + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $lessons = $this->lessonRepository->all( + $request->except(['skip', 'limit']), + $request->get('skip'), + $request->get('limit') + ); + + return $this->sendResponse($lessons->toArray(), 'Lessons retrieved successfully'); + } + + /** + * Store a newly created lesson in storage. + * POST /lessons + * + * @param CreateLessonAPIRequest $request + * + * @return Response + */ + public function store(CreateLessonAPIRequest $request) + { + $input = $request->all(); + + $lesson = $this->lessonRepository->create($input); + + return $this->sendResponse($lesson->toArray(), 'Lesson saved successfully'); + } + + /** + * Display the specified lesson. + * GET|HEAD /lessons/{id} + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + /** @var lesson $lesson */ + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + return $this->sendError('Lesson not found'); + } + + return $this->sendResponse($lesson->toArray(), 'Lesson retrieved successfully'); + } + + /** + * Update the specified lesson in storage. + * PUT/PATCH /lessons/{id} + * + * @param int $id + * @param UpdateLessonAPIRequest $request + * + * @return Response + */ + public function update($id, UpdateLessonAPIRequest $request) + { + $input = $request->all(); + + /** @var lesson $lesson */ + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + return $this->sendError('Lesson not found'); + } + + $lesson = $this->lessonRepository->update($input, $id); + + return $this->sendResponse($lesson->toArray(), 'lesson updated successfully'); + } + + /** + * Remove the specified lesson from storage. + * DELETE /lessons/{id} + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + /** @var lesson $lesson */ + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + return $this->sendError('Lesson not found'); + } + + $lesson->delete(); + + return $this->sendSuccess('Lesson deleted successfully'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/BadgeSettingController.php b/Penilaian-Esai/app/Http/Controllers/Admin/BadgeSettingController.php new file mode 100644 index 0000000..2e92796 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/BadgeSettingController.php @@ -0,0 +1,182 @@ +badgeSettingRepository = $badgeSettingRepo; + } + + /** + * Display a listing of the BadgeSetting. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $badgeSettings = $this->badgeSettingRepository->paginate(10); + + return view('admin.badge_settings.index') + ->with('badgeSettings', $badgeSettings); + } + + /** + * Show the form for creating a new BadgeSetting. + * + * @return Response + */ + public function create() + { + return view('admin.badge_settings.create'); + } + + /** + * Store a newly created BadgeSetting in storage. + * + * @param CreateBadgeSettingRequest $request + * + * @return Response + */ + public function store(CreateBadgeSettingRequest $request) + { + $input = $request->all(); + + $badgeSetting = $this->badgeSettingRepository->create($input); + + // $path = $badgeSetting->file('file')->store('image_upload', 'assets/images'); + + if ($image = $request->file('file')) { + $destinationPath = 'image_upload/'; + $profileImage = date('YmdHis') . "." . $image->getClientOriginalExtension(); + $image->move($destinationPath, $profileImage); + $input['file'] = "$profileImage"; + } + + BadgeSetting::create($input); + + // Product::create($request->all()); + + Flash::success('Badge Setting saved successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } + + /** + * Display the specified BadgeSetting. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + return view('admin.badge_settings.show')->with('badgeSetting', $badgeSetting); + } + + /** + * Show the form for editing the specified BadgeSetting. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + return view('admin.badge_settings.edit')->with('badgeSetting', $badgeSetting); + } + + /** + * Update the specified BadgeSetting in storage. + * + * @param int $id + * @param UpdateBadgeSettingRequest $request + * + * @return Response + */ + public function update($id, UpdateBadgeSettingRequest $request) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + $input = $request->all(); + $badgeSetting = $this->badgeSettingRepository->update($request->all(), $id); + + if ($image = $request->file('file')) { + $destinationPath = 'image_upload/'; + $profileImage = date('YmdHis') . "." . $image->getClientOriginalExtension(); + $image->move($destinationPath, $profileImage); + $input['file'] = "$profileImage"; + } + + $badgeSetting->update($input); + + Flash::success('Badge Setting updated successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } + + /** + * Remove the specified BadgeSetting from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + $this->badgeSettingRepository->delete($id); + + Flash::success('Badge Setting deleted successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/ContentController.php b/Penilaian-Esai/app/Http/Controllers/Admin/ContentController.php new file mode 100644 index 0000000..ce9fde8 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/ContentController.php @@ -0,0 +1,159 @@ +contentRepository = $contentRepo; + } + + /** + * Display a listing of the Content. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $contents = $this->contentRepository->paginate(10); + + return view('admin.contents.index') + ->with('contents', $contents); + } + + /** + * Show the form for creating a new Content. + * + * @return Response + */ + public function create() + { + $lessons = Lesson::all()->pluck("title", "id"); + return view('admin.contents.create', ["lessons" => $lessons]); + } + + /** + * Store a newly created Content in storage. + * + * @param CreateContentRequest $request + * + * @return Response + */ + public function store(CreateContentRequest $request) + { + $input = $request->all(); + + $content = $this->contentRepository->create($input); + + Flash::success('Content saved successfully.'); + + return redirect(route('admin.contents.index')); + } + + /** + * Display the specified Content. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $content = $this->contentRepository->find($id); + + if (empty($content)) { + Flash::error('Content not found'); + + return redirect(route('admin.contents.index')); + } + + return view('admin.contents.show')->with('content', $content); + } + + /** + * Show the form for editing the specified Content. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $content = $this->contentRepository->find($id); + $lessons = Lesson::all()->pluck("title", "id"); + + if (empty($content)) { + Flash::error('Content not found'); + + return redirect(route('admin.contents.index')); + } + + return view('admin.contents.edit')->with('content', $content)->with('lessons', $lessons); + } + + /** + * Update the specified Content in storage. + * + * @param int $id + * @param UpdateContentRequest $request + * + * @return Response + */ + public function update($id, UpdateContentRequest $request) + { + $content = $this->contentRepository->find($id); + + if (empty($content)) { + Flash::error('Content not found'); + + return redirect(route('admin.contents.index')); + } + + $content = $this->contentRepository->update($request->all(), $id); + + Flash::success('Content updated successfully.'); + + return redirect(route('admin.contents.index')); + } + + /** + * Remove the specified Content from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $content = $this->contentRepository->find($id); + + if (empty($content)) { + Flash::error('Content not found'); + + return redirect(route('admin.contents.index')); + } + + $this->contentRepository->delete($id); + + Flash::success('Content deleted successfully.'); + + return redirect(route('admin.contents.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/CourseController.php b/Penilaian-Esai/app/Http/Controllers/Admin/CourseController.php new file mode 100644 index 0000000..d2fc3a8 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/CourseController.php @@ -0,0 +1,157 @@ +courseRepository = $courseRepo; + } + + /** + * Display a listing of the Course. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $courses = $this->courseRepository->paginate(25); + + return view('admin.courses.index') + ->with('courses', $courses); + } + + /** + * Show the form for creating a new Course. + * + * @return Response + */ + public function create() + { + return view('admin.courses.create'); + } + + /** + * Store a newly created Course in storage. + * + * @param CreateCourseRequest $request + * + * @return Response + */ + public function store(CreateCourseRequest $request) + { + $input = $request->all(); + + $course = $this->courseRepository->create($input); + + Flash::success('Course saved successfully.'); + + return redirect(route('admin.courses.index')); + } + + /** + * Display the specified Course. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $course = $this->courseRepository->find($id); + + if (empty($course)) { + Flash::error('Course not found'); + + return redirect(route('admin.courses.index')); + } + + return view('admin.courses.show')->with('course', $course); + } + + /** + * Show the form for editing the specified Course. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $course = $this->courseRepository->find($id); + + if (empty($course)) { + Flash::error('Course not found'); + + return redirect(route('admin.courses.index')); + } + + return view('admin.courses.edit')->with('course', $course); + } + + /** + * Update the specified Course in storage. + * + * @param int $id + * @param UpdateCourseRequest $request + * + * @return Response + */ + public function update($id, UpdateCourseRequest $request) + { + $course = $this->courseRepository->find($id); + + if (empty($course)) { + Flash::error('Course not found'); + + return redirect(route('admin.courses.index')); + } + + $course = $this->courseRepository->update($request->all(), $id); + + Flash::success('Course updated successfully.'); + + return redirect(route('admin.courses.index')); + } + + /** + * Remove the specified Course from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $course = $this->courseRepository->find($id); + + if (empty($course)) { + Flash::error('Course not found'); + + return redirect(route('admin.courses.index')); + } + + $this->courseRepository->delete($id); + + Flash::success('Course deleted successfully.'); + + return redirect(route('admin.courses.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/DashboardController.php b/Penilaian-Esai/app/Http/Controllers/Admin/DashboardController.php new file mode 100644 index 0000000..8219e07 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/DashboardController.php @@ -0,0 +1,255 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + return view('admin.dashboard.index'); + } + + public function leaderboard() + { + $user_id = User::where('role_id', 2)->get(); + $data = []; + + foreach ($user_id as $user) { + $wondering = WonderingScore::where(["user_id" => $user->id])->sum("score"); + $exploring = UserScore::where("user_id", $user->id)->sum("score"); + $explainKonteks = ExplainingScore::where("user_id", $user->id)->sum("konteks_penjelasan"); + $explainBenar = ExplainingScore::where("user_id", $user->id)->sum("kebenaran"); + $explainKeruntutan = ExplainingScore::where("user_id", $user->id)->sum("keruntutan"); + $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; + $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); + + $data[] = [ + 'user' => $user, + 'final_score' => $final_score, + 'current_badge' => $current_badge, + ]; + } + + $data = collect($data)->sortByDesc('final_score')->values()->all(); + + if (Auth::user()->role_id == 1) { + return view('admin.dashboard.leaderboard', compact('data')); + } else if (Auth::user()->role_id == 2) { + return view('student_courses.leaderboard_student', compact('data')); + } + } + + public function report($user_id = null) + { + + $users = User::all(); + + if (!empty($user_id)) { + $user_score = UserScore::where(["user_id" => $user_id])->get(); + $take = UserScore::where("user_id", $user_id)->pluck("question_id")->toArray(); + $code_test_score = UserScore::where(["user_id" => $user_id])->whereNotNull("question_id")->get(); + $wondering = WonderingScore::where(["user_id" => $user_id])->sum("score"); + $exploring = UserScore::where("user_id", $user_id)->sum("score"); + $explainKonteks = ExplainingScore::where("user_id", $user_id)->sum("konteks_penjelasan"); + $explainBenar = ExplainingScore::where("user_id", $user_id)->sum("kebenaran"); + $explainKeruntutan = ExplainingScore::where("user_id", $user_id)->sum("keruntutan"); + $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; + $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); + + return view("admin.dashboard.report", [ + "score" => $user_score, + "current_badge" => $current_badge, + "percentage" => UserScore::getPercentage($user_id), + "finish_code_tests" => $take, + "user_id" => $user_id, + "users" => $users, + "code_score" => $code_test_score, + "final_score" => $final_score + ]); + } + + return view('admin.dashboard.report', ["user_id" => $user_id, 'users' => $users]); + } + + public function penilaian($user_id, $content_id) + { + $user = User::firstwhere('id', $user_id); + $content = Content::where('id', $content_id)->first(); + $read = WonderingScore::where('user_id', $user_id)->where('content_id', $content_id)->first(); + $coding = UserScore::where('user_id', $user_id)->where('content_id', $content_id)->first(); + $question = Question::where('content_id', $content_id)->first(); + $question_id = Question::where('content_id', $content_id)->pluck('id'); + $essay = EssayQuestion::whereIn('question_id', $question_id)->pluck('id'); + $answer = UserAnswer::whereIn('essay_question_id', $essay)->where('user_id', $user_id)->get(); + + $explain_score = ExplainingScore::where('content_id', $content_id)->where('question_id', $question_id)->where('user_id', $user_id)->get(); + $isAccepted = ExplainingScore::where('content_id', $content_id) + ->where('question_id', $question_id) + ->where('user_id', $user_id) + ->get() + ->pluck('is_accepted'); + + + if ($explain_score->count() > 0) { + $total = $explain_score->sum(function ($explain_score) { + return $explain_score->keruntutan + $explain_score->kebenaran + $explain_score->konteks_penjelasan; + }); + + + foreach ($explain_score as $index => $item) { + + // $isAcceptedKonteks = $explain_score[0]->is_accepted; + // $isAcceptedRuntut = $explain_score[1]->is_accepted; + // $isAcceptedKebenaran = $explain_score[2]->is_accepted; + + $convertKonteks = $explain_score[0]->konteks_penjelasan; + $convertRuntut = $explain_score[1]->keruntutan; + $convertKebenaran = $explain_score[2]->kebenaran; + + $id_konteks = $explain_score[0]->id; + $id_runtut = $explain_score[1]->id; + $id_benar = $explain_score[2]->id; + + $konteks = $this->reverseConvert($convertKonteks); + $benar = $this->reverseConvert($convertKebenaran); + $runtut = $this->reverseConvert($convertRuntut); + }; + // dd([$konteks, $benar, $runtut]); + + return view('admin.dashboard.penilaian', compact('user', 'read', 'coding', 'essay', 'answer', 'content', 'question', 'explain_score', 'total', 'konteks', 'runtut', 'benar', 'id_benar', 'id_runtut', 'id_konteks', 'convertKonteks', 'convertRuntut', 'convertKebenaran', 'isAccepted')); + } else { + return view('admin.dashboard.penilaian', compact('user', 'read', 'coding', 'essay', 'answer', 'content', 'question', 'explain_score')); + } + } + + public function reverseConvert($value) + { + switch ($value) { + case 3: + return 1; + case 5: + return 2; + case 10: + return 3; + case 15: + return 4; + case 20: + return 5; + default: + return $value; + } + } + + public function addPenilaian(Request $request) + { + + try { + + $check_explain = ExplainingScore::where('content_id', $request->content_id)->where('question_id', $request->question_id)->where('user_id', $request->user_id); + + if ($check_explain->count() == 0) { + $total_score = TotalScore::create([ + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'score' => $request->tot_score, + 'wondering_score_id' => $request->wondering_id, + 'user_score_id' => $request->exploring_id + ]); + + $explainKonteks = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'konteks_penjelasan' => $request->ikonteks, + 'essay_question_id' => $request->essay_question_konteks, + 'user_answer_id' => $request->user_answer_konteks + ]); + + $explainRuntut = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'keruntutan' => $request->iruntut, + 'essay_question_id' => $request->essay_question_runtut, + 'user_answer_id' => $request->user_answer_runtut + ]); + + $explainBenar = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'kebenaran' => $request->ibenar, + 'essay_question_id' => $request->essay_question_kebenaran, + 'user_answer_id' => $request->user_answer_kebenaran + + ]); + } else { + $check_total = $check_explain->first()->total->id; + + $total_score = TotalScore::findOrFail($check_total); + $total_score->score = $request->tot_score; + $total_score->save(); + + $konteks = ExplainingScore::firstwhere('id', $request->id_konteks); + $konteks->konteks_penjelasan = $request->ikonteks; + $konteks->is_accepted = ($request->acc == 'true'); + $konteks->save(); + + $runtut = ExplainingScore::firstwhere('id', $request->id_runtut); + $runtut->keruntutan = $request->iruntut; + $runtut->is_accepted = ($request->acc == 'true'); + $runtut->save(); + + $benar = ExplainingScore::firstwhere('id', $request->id_benar); + $benar->kebenaran = $request->ibenar; + $benar->is_accepted = ($request->acc == 'true'); + $benar->save(); + } + + return response()->json([ + 'status' => '200', + 'message' => 'Success add user score' + ], 200); + } catch (Exception $err) { + return response()->json([ + 'status' => '500', + 'message' => 'Error add score', + ], 500); + } + } + +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/ExplanationController.php b/Penilaian-Esai/app/Http/Controllers/Admin/ExplanationController.php new file mode 100644 index 0000000..39e4c44 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/ExplanationController.php @@ -0,0 +1,119 @@ +get(); + $title = "summary"; + return view('admin.explain.index', compact('explain', 'title')); + } + + public function showCode() + { + $explain = UserAnswer::paginate(10); + $title = "code"; + return view('admin.explain.index', compact('explain', 'title')); + } + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $explain = Explains::find($id); + $title = "summary"; + return view('admin.explain.edit', compact('explain', 'title')); + } + + public function editCode($id) + { + $explain = Explains::find($id); + $title = "code"; + return view('admin.explain.edit', compact('explain', 'title')); + } + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $explain = Explains::find($id); + $explain->description = $request->description; + $explain->edited_admin = Auth::id(); + $explain->save(); + + return redirect(route('admin.explaination.index')); + } + + public function updateCode(Request $request, $id) + { + $explain = Explains::find($id); + $explain->description = $request->description; + $explain->edited_admin = Auth::id(); + $explain->save(); + + return redirect(route('admin.code.index.explanation')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/LessonController.php b/Penilaian-Esai/app/Http/Controllers/Admin/LessonController.php new file mode 100644 index 0000000..17b541f --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/LessonController.php @@ -0,0 +1,164 @@ +lessonRepository = $lessonRepo; + } + + /** + * Display a listing of the lesson. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $lessons = $this->lessonRepository->paginate(25); + + return view('admin.lessons.index') + ->with('lessons', $lessons); + } + + /** + * Show the form for creating a new lesson. + * + * @return Response + */ + public function create() + { + $courses = Course::all()->pluck("course_name", "id")->toArray(); + $level = Level::all()->pluck("name","id")->toArray(); + Log::debug($courses); + return view('admin.lessons.create', ["courses" => $courses, "level" => $level]); + } + + /** + * Store a newly created lesson in storage. + * + * @param CreatelessonRequest $request + * + * @return Response + */ + public function store(CreateLessonRequest $request) + { + $input = $request->all(); + + $lesson = $this->lessonRepository->create($input); + + Flash::success('Lesson saved successfully.'); + + return redirect(route('admin.lessons.index')); + } + + /** + * Display the specified lesson. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + Flash::error('Lesson not found'); + + return redirect(route('admin.lessons.index')); + } + + return view('admin.lessons.show', compact('lesson')); + } + + /** + * Show the form for editing the specified lesson. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $lesson = $this->lessonRepository->find($id); + $courses = Course::all()->pluck("course_name", "id")->toArray(); + $level = Level::all()->pluck("name","id")->toArray(); + + if (empty($lesson)) { + Flash::error('Lesson not found'); + + return redirect(route('admin.lessons.index')); + } + + return view('admin.lessons.edit', compact('lesson','courses','level')); + } + + /** + * Update the specified lesson in storage. + * + * @param int $id + * @param UpdatelessonRequest $request + * + * @return Response + */ + public function update($id, UpdateLessonRequest $request) + { + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + Flash::error('Lesson not found'); + + return redirect(route('admin.lessons.index')); + } + + $lesson = $this->lessonRepository->update($request->all(), $id); + + Flash::success('Lesson updated successfully.'); + + return redirect(route('admin.lessons.index')); + } + + /** + * Remove the specified lesson from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $lesson = $this->lessonRepository->find($id); + + if (empty($lesson)) { + Flash::error('Lesson not found'); + + return redirect(route('admin.lessons.index')); + } + + $this->lessonRepository->delete($id); + + Flash::success('Lesson deleted successfully.'); + + return redirect(route('admin.lessons.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/LevelController.php b/Penilaian-Esai/app/Http/Controllers/Admin/LevelController.php new file mode 100644 index 0000000..25fa5bf --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/LevelController.php @@ -0,0 +1,112 @@ +pluck("course_name", "id")->toArray(); + return view('admin.level.create',compact('courses')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $level = Level::create([ + 'name' => $request->name, + 'description' => $request->description, + 'course_id' => $request->course_id, + ]); + + return redirect(route('admin.level.index')); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $level = Level::find($id); + $courses = Course::all()->pluck("course_name", "id")->toArray(); + return view('admin.level.edit', compact('level','courses')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $level = Level::find($id); + $level->name = $request->name; + $level->description = $request->description; + $level->course_id = $request->course_id; + $level->save(); + + Flash::success('Level updated successfully.'); + + return redirect(route('admin.level.index')); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $level = Level::firstwhere('id', $id); + $level->delete(); + + Flash::success('Level delated successfully.'); + + return redirect(route('admin.level.index')); + + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/LevelSettingController.php b/Penilaian-Esai/app/Http/Controllers/Admin/LevelSettingController.php new file mode 100644 index 0000000..2bc2a73 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/LevelSettingController.php @@ -0,0 +1,156 @@ +badgeSettingRepository = $badgeSettingRepo; + } + + /** + * Display a listing of the BadgeSetting. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $badgeSettings = $this->badgeSettingRepository->paginate(10); + + return view('admin.badge_settings.index') + ->with('badgeSettings', $badgeSettings); + } + + /** + * Show the form for creating a new BadgeSetting. + * + * @return Response + */ + public function create() + { + return view('admin.badge_settings.create'); + } + + /** + * Store a newly created BadgeSetting in storage. + * + * @param CreateBadgeSettingRequest $request + * + * @return Response + */ + public function store(CreateBadgeSettingRequest $request) + { + $input = $request->all(); + + $badgeSetting = $this->badgeSettingRepository->create($input); + + Flash::success('Badge Setting saved successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } + + /** + * Display the specified BadgeSetting. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + return view('admin.badge_settings.show')->with('badgeSetting', $badgeSetting); + } + + /** + * Show the form for editing the specified BadgeSetting. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + return view('admin.badge_settings.edit')->with('badgeSetting', $badgeSetting); + } + + /** + * Update the specified BadgeSetting in storage. + * + * @param int $id + * @param UpdateBadgeSettingRequest $request + * + * @return Response + */ + public function update($id, UpdateBadgeSettingRequest $request) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + $badgeSetting = $this->badgeSettingRepository->update($request->all(), $id); + + Flash::success('Badge Setting updated successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } + + /** + * Remove the specified BadgeSetting from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $badgeSetting = $this->badgeSettingRepository->find($id); + + if (empty($badgeSetting)) { + Flash::error('Badge Setting not found'); + + return redirect(route('admin.badgeSettings.index')); + } + + $this->badgeSettingRepository->delete($id); + + Flash::success('Badge Setting deleted successfully.'); + + return redirect(route('admin.badgeSettings.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/QuestionController.php b/Penilaian-Esai/app/Http/Controllers/Admin/QuestionController.php new file mode 100644 index 0000000..41cfb2f --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/QuestionController.php @@ -0,0 +1,274 @@ +questionRepository = $questionRepo; + } + + /** + * Display a listing of the Question. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $questions = $this->questionRepository->paginate(10); + + return view('admin.questions.index') + ->with('questions', $questions); + } + + /** + * Show the form for creating a new Question. + * + * @return Response + */ + public function create() + { + $title = "create"; + $contents = Content::all()->pluck("title", "id"); + return view('admin.questions.create', ["contents" => $contents, "answers" => [], "title" => $title]); + } + + /** + * Store a newly created Question in storage. + * + * @param CreateQuestionRequest $request + * + * @return Response + */ + public function store(Request $request) + { + $input = $request->all(); + $question = $this->questionRepository->create($input); + if ($request['is_essay'] != '1') { + for ($i = 0; $i < 4; $i++) { + $ans = $request["answers_$i"]; + $is_r = @$request["is_right_$i"]; + Answer::create(["question_id" => $question->id, "answer" => $ans, "is_right" => $is_r]); + } + } + + + $essay_question = $request->input('essay_question'); + $key_answer = $request->input('answer_key'); + $key_answer2 = $request->input('answer_key2'); + $key_answer3 = $request->input('answer_key3'); + $key_answer4 = $request->input('answer_key4'); + + foreach ($essay_question as $index => $eques) { + $keys = $key_answer[$index]; + $keys2 = $key_answer2[$index]; + $keys3 = $key_answer3[$index]; + $keys4 = $key_answer4[$index]; + + // $keys = isset($key_answer[$index]) ? $key_answer[$index] : null; + // $keys2 = isset($key_answer2[$index]) ? $key_answer2[$index] : null; + // $keys3 = isset($key_answer3[$index]) ? $key_answer3[$index] : null; + // $keys4 = isset($key_answer4[$index]) ? $key_answer4[$index] : null; + + EssayQuestion::create([ + 'question_id' => $question->id, + 'user_id' => Auth::id(), + 'question' => $eques, + 'answer' => $keys, + 'answer2' => $keys2, + 'answer3' => $keys3, + 'answer4' => $keys4 + ]); + } + + + Flash::success('Question saved successfully.'); + + return redirect(route('admin.questions.index')); + } + + /** + * Display the specified Question. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $question = $this->questionRepository->find($id); + $essay_question = EssayQuestion::where('question_id', $id)->get(); + + if (empty($question)) { + Flash::error('Question not found'); + + return redirect(route('admin.questions.index')); + } + + return view('admin.questions.show')->with('question', $question)->with('essay', $essay_question); + } + + /** + * Show the form for editing the specified Question. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $question = $this->questionRepository->find($id); + + $contents = Content::all()->pluck("title", "id"); + $title = "edit"; + $essay = EssayQuestion::where('question_id', $id)->get(); + if (empty($question)) { + Flash::error('Question not found'); + + return redirect(route('admin.questions.index')); + } + + return view('admin.questions.edit')->with('question', $question)->with("contents", $contents)->with("answers", $question->answers)->with('title', $title)->with('essay', $essay); + } + + /** + * Update the specified Question in storage. + * + * @param int $id + * @param UpdateQuestionRequest $request + * + * @return Response + */ + public function update($id, Request $request) + { + $question = $this->questionRepository->find($id); + + if (empty($question)) { + Flash::error('Question not found'); + + return redirect(route('admin.questions.index')); + } + $question = $this->questionRepository->update($request->all(), $id); + + $answers = $question->answers; + if ($request['is_essay'] != '1') { + if ($answers->count() == 0) { + for ($i = 0; $i < 4; $i++) { + $ans = $request["answers_$i"]; + $is_r = @$request["is_right_$i"]; + + Answer::create(["question_id" => $question->id, "answer" => $ans, "is_right" => $is_r]); + } + } else { + for ($i = 0; $i < 4; $i++) { + $ans = $request["answers_$i"]; + $is_r = @$request["is_right_$i"]; + $id_ans = @$request["answer_id_$i"]; + if (empty($id_ans)) { + Answer::create(["question_id" => $question->id, "answer" => $ans, "is_right" => $is_r]); + } else { + $answ = Answer::find((int)$id_ans); + $answ->update(["question_id" => $question->id, "answer" => $ans, "is_right" => $is_r]); + } + } + } + } else { + $question = $this->questionRepository->update(["is_essay" => 1], $id); + } + + $essay_question = $request->input('essay_question'); + $key_answer = $request->input('answer_key'); + $key_answer2 = $request->input('answer_key2'); + $key_answer3 = $request->input('answer_key3'); + $key_answer4 = $request->input('answer_key4'); + $essay_id = $request->input('essay_id'); + + foreach ($essay_question as $index => $eques) { + $keys = $key_answer[$index]; + $keys2 = $key_answer2[$index]; + $keys3 = $key_answer3[$index]; + $keys4 = $key_answer4[$index]; + $essay = $essay_id[$index]; + + $check_data = EssayQuestion::where('id', $essay); + if ($check_data->count() == 0) { + EssayQuestion::create([ + 'question_id' => $question->id, + 'user_id' => Auth::id(), + 'question' => $eques, + 'answer' => $keys, + 'answer2' => $keys2, + 'answer3' => $keys3, + 'answer4' => $keys4 + ]); + } else { + $data_essay = EssayQuestion::firstwhere('id', $essay); + $data_essay->question = $eques; + $data_essay->answer = $keys; + $data_essay->answer2 = $keys2; + $data_essay->answer3 = $keys3; + $data_essay->answer4 = $keys4; + $data_essay->save(); + } + } + Flash::success('Question updated successfully.'); + Log::debug($request->all()); + + return redirect(route('admin.questions.index')); + } + + /** + * Remove the specified Question from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $question = $this->questionRepository->find($id); + + if (empty($question)) { + Flash::error('Question not found'); + + return redirect(route('admin.questions.index')); + } + $essay = EssayQuestion::where('question_id', $id); + $id_essay = $essay->pluck('id'); + $user_answer = UserAnswer::whereIn('essay_question_id', $id_essay); + $user_score = UserScore::where('question_id', $id); + + $user_score->delete(); + $user_answer->delete(); + $essay->delete(); + $this->questionRepository->delete($id); + + Flash::success('Question deleted successfully.'); + + return redirect(route('admin.questions.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/RoleController.php b/Penilaian-Esai/app/Http/Controllers/Admin/RoleController.php new file mode 100644 index 0000000..7641999 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/RoleController.php @@ -0,0 +1,156 @@ +roleRepository = $roleRepo; + } + + /** + * Display a listing of the Role. + * + * @param Request $request + * + * @return Response + */ + public function index(Request $request) + { + $roles = $this->roleRepository->paginate(10); + + return view('admin.roles.index') + ->with('roles', $roles); + } + + /** + * Show the form for creating a new Role. + * + * @return Response + */ + public function create() + { + return view('admin.roles.create'); + } + + /** + * Store a newly created Role in storage. + * + * @param CreateRoleRequest $request + * + * @return Response + */ + public function store(CreateRoleRequest $request) + { + $input = $request->all(); + + $role = $this->roleRepository->create($input); + + Flash::success('Role saved successfully.'); + + return redirect(route('admin.roles.index')); + } + + /** + * Display the specified Role. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $role = $this->roleRepository->find($id); + + if (empty($role)) { + Flash::error('Role not found'); + + return redirect(route('admin.roles.index')); + } + + return view('admin.roles.show')->with('role', $role); + } + + /** + * Show the form for editing the specified Role. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $role = $this->roleRepository->find($id); + + if (empty($role)) { + Flash::error('Role not found'); + + return redirect(route('admin.roles.index')); + } + + return view('admin.roles.edit')->with('role', $role); + } + + /** + * Update the specified Role in storage. + * + * @param int $id + * @param UpdateRoleRequest $request + * + * @return Response + */ + public function update($id, UpdateRoleRequest $request) + { + $role = $this->roleRepository->find($id); + + if (empty($role)) { + Flash::error('Role not found'); + + return redirect(route('admin.roles.index')); + } + + $role = $this->roleRepository->update($request->all(), $id); + + Flash::success('Role updated successfully.'); + + return redirect(route('admin.roles.index')); + } + + /** + * Remove the specified Role from storage. + * + * @param int $id + * + * @throws \Exception + * + * @return Response + */ + public function destroy($id) + { + $role = $this->roleRepository->find($id); + + if (empty($role)) { + Flash::error('Role not found'); + + return redirect(route('admin.roles.index')); + } + + $this->roleRepository->delete($id); + + Flash::success('Role deleted successfully.'); + + return redirect(route('admin.roles.index')); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Admin/UserController.php b/Penilaian-Esai/app/Http/Controllers/Admin/UserController.php new file mode 100644 index 0000000..e7c9d52 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Admin/UserController.php @@ -0,0 +1,129 @@ +pluck('role', 'id'); + $code = "create"; + + return view('admin.users.create', compact('roles','code')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $user = User::create($request->only('name','email', 'role_id','class') + ['password' => bcrypt($request->password)]); + return redirect()->route('admin.users.index'); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $user = User::find($id); + $roles = Role::all()->pluck("role", "id")->toArray(); + // if (empty($lesson)) { + // Flash::error('Lesson not found'); + // + // return redirect(route('admin.lessons.index')); + // } + return view('admin.users.show')->with('user', $user)->with("roles", $roles); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + + $user = User::find($id); + $roles = Role::all()->pluck("role", "id")->toArray(); + $code = "edit"; + // if (empty($lesson)) { + // Flash::error('Lesson not found'); + // + // return redirect(route('admin.lessons.index')); + // } + return view('admin.users.edit')->with('user', $user)->with("roles", $roles)->with("code", $code); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request,User $user) + { + $user->update($request->only('name','email', 'role_id','class') + ['password' => bcrypt($request->password)]); + return redirect()->route('admin.users.index'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy(Request $data, $id) + { + + User::find($id)->delete([ + 'name' => $data->name, + 'email' => $data->email, + 'password' => $data->password, + 'role_id' => $data->role_id, + 'class' => $data->class, + ]); + return redirect()->route('admin.users.index')->with(['message'=> 'Successfully deleted!!']); + } +} + // $post =User::where('id', $id)->first(); + // + // if ($post != null) { + // $post->delete(); + // return redirect()->route('admin.users.index')->with(['message'=> 'Successfully deleted!!']); + // } + // + // return redirect()->route('admin.users.index')->with(['message'=> 'Wrong ID!!']); + // + // } diff --git a/Penilaian-Esai/app/Http/Controllers/ApiController.php b/Penilaian-Esai/app/Http/Controllers/ApiController.php new file mode 100644 index 0000000..02eaeff --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/ApiController.php @@ -0,0 +1,122 @@ +only('name', 'email', 'password'); + $validator = Validator::make($data, [ + 'name' => 'required|string', + 'email' => 'required|email|unique:users', + 'password' => 'required|string|min:6|max:50' + ]); + + //Send failed response if request is not valid + if ($validator->fails()) { + return response()->json(['error' => $validator->messages()], 200); + } + + //Request is valid, create new user + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => bcrypt($request->password) + ]); + + //User created, return success response + return response()->json([ + 'success' => true, + 'message' => 'User created successfully', + 'data' => $user + ], Response::HTTP_OK); + } + + public function authenticate(Request $request) + { + $credentials = $request->only('email', 'password'); + Log::debug($request->all()); + //valid credential + $validator = Validator::make($credentials, [ + 'email' => 'required|email', + 'password' => 'required|string|min:6|max:50' + ]); + + //Send failed response if request is not valid + if ($validator->fails()) { + return response()->json(['error' => $validator->messages()], 200); + } + + //Request is validated + //Crean token + try { + if (! $token = JWTAuth::attempt($credentials)) { + return response()->json([ + 'success' => false, + 'message' => 'Login credentials are invalid.', + ], 400); + } + } catch (JWTException $e) { + return $credentials; + return response()->json([ + 'success' => false, + 'message' => 'Could not create token.', + ], 500); + } + + //Token created, return with success response and jwt token + return response()->json([ + 'success' => true, + 'token' => $token, + ]); + } + + public function logout(Request $request) + { + //valid credential + $validator = Validator::make($request->only('token'), [ + 'token' => 'required' + ]); + + //Send failed response if request is not valid + if ($validator->fails()) { + return response()->json(['error' => $validator->messages()], 200); + } + + //Request is validated, do logout + try { + JWTAuth::invalidate($request->token); + + return response()->json([ + 'success' => true, + 'message' => 'User has been logged out' + ]); + } catch (JWTException $exception) { + return response()->json([ + 'success' => false, + 'message' => 'Sorry, user cannot be logged out' + ], Response::HTTP_INTERNAL_SERVER_ERROR); + } + } + + public function get_user(Request $request) + { + $this->validate($request, [ + 'token' => 'required' + ]); + + $user = JWTAuth::authenticate($request->token); + + return response()->json(['user' => $user]); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/AppBaseController.php b/Penilaian-Esai/app/Http/Controllers/AppBaseController.php new file mode 100644 index 0000000..1108a7f --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/AppBaseController.php @@ -0,0 +1,38 @@ + true, + 'message' => $message + ], 200); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Auth/ConfirmPasswordController.php b/Penilaian-Esai/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..138c1f0 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,40 @@ +middleware('auth'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Auth/ForgotPasswordController.php b/Penilaian-Esai/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..465c39c --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,22 @@ +middleware('guest')->except('logout'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Auth/RegisterController.php b/Penilaian-Esai/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..9381530 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,77 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + 'class' => ['required','integer'] + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + 'role_id' => '2', + 'class' => $data['class'], + ]); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Auth/ResetPasswordController.php b/Penilaian-Esai/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..b1726a3 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,30 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/CodeTestController.php b/Penilaian-Esai/app/Http/Controllers/CodeTestController.php new file mode 100644 index 0000000..5e9cbc2 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/CodeTestController.php @@ -0,0 +1,264 @@ +where("question_id", $course_id); + $explain = Explains::where("user_id", Auth::id())->where('question_id', $course_id)->get(); + // $data_essay = UserAnswer::where('user_id', Auth::id()) + // $level = Level::firstwhere('id',$request->level_id); + // dd([Auth::id(), $course_id, $explain]); + $essay = EssayQuestion::where('question_id', $course_id)->get(); + $duration = ""; + + $user_score = $score->first(); + $err_logs = ErrorCodeLog::where("user_id", Auth::id())->where("question_id", $course_id)->get(); + $exer_logs = ExerciseCodeLog::where("user_id", Auth::id())->where("question_id", $course_id)->orderBy('id', 'DESC')->get(); + + if ($user_score) { + $a = Carbon::parse($user_score->started_at); + $b = Carbon::parse($user_score->ended_at); + $duration = $b->diff($a)->format('%Hh %Im %Ss'); // Menghitung durasi pengerjaan soal + } + + $isFinish = false; + if ($score->count() > 0) { + $isFinish = true; // Menentukan apakah pengguna telah menyelesaikan soal + } + + return view("student_courses.code_test", [ + "question" => $question, + 'score' => $score->sum('score'), //Menghitung total skor + 'is_finish' => $isFinish, // Menyatakan apakah pengguna telah menyelesaikan soal + 'user_score' => $user_score, + 'duration' => $duration, + 'error_logs' => $err_logs, // Mengirimkan log kesalahan ke tampilan + 'exercise_logs' => $exer_logs, // Mengirimkan log latihan ke tampilan + 'explain' => $explain, // Mengirimkan penjelasan ke tampilan + 'essay' => $essay // Mengirimkan pertanyaan esai ke tampilan + ]); + } + + public function codeTestSubmit(Request $request) + { + DB::beginTransaction(); + try { + // Mendapatkan model skor pengguna berdasarkan ID pengguna dan ID soal + $model = UserScore::where("user_id", $request->get("user_id"))->where("question_id", $request->get("question_id")); + $question = Question::find($request->get("question_id")); + $check_explain = Explains::where("user_id", $request->get("user_id"))->where('question_id', $request->get("question_id")); + Log::debug($model->count()); + + // Jika skor lebih dari 0, lakukan proses penyimpanan + if ($request->score > 0) { + if ($model->count() == 0) { + // Jika belum ada skor, buat entri baru + UserScore::create( + [ + "user_id" => $request->get("user_id"), + "question_id" => $request->get("question_id"), + "content_id" => $request->get("content_id"), + "score" => $request->get('score') == 10 ? $question->score : 0, + "started_at" => $request->get("started_at"), + "ended_at" => $request->get("ended_at"), + "on_timer" => $request->get("on_timer"), + "level_id" => $request->get('level_id') + ] + ); + } else { + // Jika sudah ada skor, update entri yang ada + $check = UserScore::where("user_id", $request->get("user_id"))->where("question_id", $request->get("question_id"))->first(); + $user_score = UserScore::firstwhere('id', $check->id); + // $user_score->score = $request->get('score'); + $user_score->score = $request->get('score') == 10 ? $question->score : 0; + $user_score->save(); + } + + // Memproses jawaban esai + // Mengambil Input dari Pengguna: + $jawaban = $request->input('answer'); + $pertanyaanId = $request->input('essay_id'); + + $nilai = []; + foreach ($pertanyaanId as $key => $id_essay) { + $answer = $jawaban[$key]; // user answere + $essayAnswer = EssayQuestion::find($id_essay)->answer; + $essayAnswer2 = EssayQuestion::find($id_essay)->answer2; + $essayAnswer3 = EssayQuestion::find($id_essay)->answer3; + $essayAnswer4 = EssayQuestion::find($id_essay)->answer4; + $check_data = UserAnswer::where('user_id', Auth::id())->where('essay_question_id', $id_essay); + + // Menyimpan atau memperbarui jawaban pengguna + if ($check_data->count() == 0) { + UserAnswer::create([ + 'user_id' => Auth::id(), + 'essay_question_id' => $id_essay, + 'answer' => $answer + ]); + } else { + $check_rubrik = ExplainingScore::where('user_id', Auth::id())->where('user_answer_id', $check_data->first()->id)->count(); + if ($check_rubrik == 0) { + $data_explain = UserAnswer::firstwhere('id', $check_data->first()->id); + $data_explain->answer = $answer; + $data_explain->save(); + } + } + + + // Memanggil API untuk mengoreksi jawaban esai + try { + $response = Http::asForm()->post(env("GENERATE_GRADE_URL", "http://127.0.0.1:8000/compiler/generate/grade"), [ + 'esay_answer' => $essayAnswer, + 'esay_answer2' => $essayAnswer2, + 'esay_answer3' => $essayAnswer3, + 'esay_answer4' => $essayAnswer4, + 'user_answer' => $answer, + ]); + $data = $response->json(); // $data['output'] | 0 - 1 // Mengambil hasil koreksi + // $nilai[] = $this->convertNilai($data['output']); + $nilai[] = $data['output']; + } catch (Exception $err) { + return response()->json([ + 'status' => '500', + 'message' => 'Error add score', + ], 500); + } + } + + // Mengambil Skor Penjelasan, Wondering, dan Skor Pengguna: + $check_explain = ExplainingScore::where('content_id', $request->content_id)->where('question_id', $request->question_id)->where('user_id', $request->user_id); + $wondering = WonderingScore::where('content_id', $request->content_id)->where('user_id', $request->user_id)->first(); + $user_score = UserScore::where('content_id', $request->content_id)->where('user_id', $request->user_id)->where('question_id', $request->question_id)->first(); + //Menghitung Total Skor: + $tot_score = $wondering->score + $user_score->score + $nilai[0] + $nilai[1] + $nilai[2]; + + if ($check_explain->count() == 0) { + // Membuat entri total skor dan skor penjelasan + $total_score = TotalScore::create([ + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'score' => $tot_score, + 'wondering_score_id' => $wondering->id, + 'user_score_id' => $user_score->id + ]); + + $konteksAnswer = UserAnswer::where('user_id', $request->user_id)->where('essay_question_id', $request->essay_id[0])->first(); + $explainKonteks = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'konteks_penjelasan' => $nilai[0], + 'is_accepted' => false, + 'essay_question_id' => $request->essay_id[0], + 'user_answer_id' => $konteksAnswer->id + ]); + + $runtutAnswer = UserAnswer::where('user_id', $request->user_id)->where('essay_question_id', $request->essay_id[1])->first(); + $explainRuntut = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'keruntutan' => $nilai[1], + 'is_accepted' => false, + 'essay_question_id' => $request->essay_id[1], + 'user_answer_id' => $runtutAnswer->id + + ]); + + $benarAnswer = UserAnswer::where('user_id', $request->user_id)->where('essay_question_id', $request->essay_id[2])->first(); + $explainBenar = ExplainingScore::create([ + 'total_score_id' => $total_score->id, + 'content_id' => $request->content_id, + 'user_id' => $request->user_id, + 'question_id' => $request->question_id, + 'kebenaran' => $nilai[2], + 'is_accepted' => false, + 'essay_question_id' => $request->essay_id[2], + 'user_answer_id' => $benarAnswer->id + ]); + + } else { + $check_total = $check_explain->first()->total->id; + + $check_explain = ExplainingScore::where('content_id', $request->content_id)->where('question_id', $request->question_id)->where('user_id', $request->user_id); + + $total_score = TotalScore::firstwhere('id', $check_total); + $total_score->score = $tot_score; + $total_score->save(); + + $konteks = ExplainingScore::firstwhere('id', $check_explain->get()[0]->id); + $konteks->konteks_penjelasan = $nilai[0]; + $konteks->save(); + + $runtut = ExplainingScore::firstwhere('id', $check_explain->get()[1]->id); + $runtut->keruntutan = $nilai[1]; + $runtut->save(); + + $benar = ExplainingScore::firstwhere('id', $check_explain->get()[2]->id); + $benar->kebenaran = $nilai[2]; + $benar->save(); + } + DB::commit(); + + return response()->json([ + 'status' => '200', + 'message' => 'Success add user score', + 'data' => $data + ], 200); + } else { + return response()->json([ + 'status' => '500', + 'message' => 'Error add user', + ], 500); + } + } catch (Exception $err) { + DB::rollBack(); + return response()->json([ + 'status' => '500', + 'message' => 'Error add score', + ], 500); + } + } + + private function convertNilai($value) + { + if ($value > 0 && $value <= 0.2) { + return 3; + } else if ($value > 0.2 && $value <= 0.4) { + return 5; + } else if ($value > 0.4 && $value <= 0.6) { + return 10; + } else if ($value > 0.6 && $value <= 0.8) { + return 15; + } else if ($value > 0.8 && $value <= 1.0) { + return 20; + } + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/Controller.php b/Penilaian-Esai/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +middleware("auth"); + } + + +} diff --git a/Penilaian-Esai/app/Http/Controllers/ErrorCodeLogController.php b/Penilaian-Esai/app/Http/Controllers/ErrorCodeLogController.php new file mode 100644 index 0000000..e760267 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/ErrorCodeLogController.php @@ -0,0 +1,28 @@ +get("user_id"); + $question = $request->get("question_id"); + $err = $request->get("error_message"); + + $model = ErrorCodeLog::create([ + "user_id" => $user_id, + "question_id" => $question, + "error_message" => $err, + "total_count" => 1 + ]); + + return response($model); + } +} \ No newline at end of file diff --git a/Penilaian-Esai/app/Http/Controllers/ExerciseCodeLogController.php b/Penilaian-Esai/app/Http/Controllers/ExerciseCodeLogController.php new file mode 100644 index 0000000..74f88d3 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/ExerciseCodeLogController.php @@ -0,0 +1,26 @@ +get("user_id"); + $question = $request->get("question_id"); + $message = $request->get("message_content"); + $is_error = $request->get("is_error"); + + $model = ExerciseCodeLog::create([ + "user_id" => $user_id, + "question_id" => $question, + "message" => $message, + "total_count" => 1, + "is_error" => $is_error + ]); + + return response($model); + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/ExplainingController.php b/Penilaian-Esai/app/Http/Controllers/ExplainingController.php new file mode 100644 index 0000000..99e246f --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/ExplainingController.php @@ -0,0 +1,137 @@ +get(); + $title = "summary"; + $ownership = Explains::where('user_id', Auth::id()); + return view('student_courses.explain', compact('explain', 'title')); + } + + public function showCode(){ + $explain = UserAnswer::where('user_id', Auth::id())->paginate(10); + $title = "code"; + return view('student_courses.explain', compact('explain', 'title')); + } + + public function create(Request $request, $level_id){ + DB::beginTransaction(); + + try{ + $explain = Explains::create([ + 'description' => $request->explanation, + 'level_id' => $level_id, + 'user_id' => Auth::user()->id + ]); + + DB::commit(); + + return response()->json([ + 'status' => '200', + 'message' => 'Success add explaination', + 'data' => $explain + ],200); + }catch(Exception $err){ + DB::rollBack(); + + return response()->json([ + 'status' => '500', + 'error' => $err->getMessage(), + ], 500); + } + + } + + public function edit($id){ + $explain = Explains::find($id); + $title = 1; + return view('student_courses.explain_edit', compact('explain','title')); + } + + public function editCode($id){ + $explain = Explains::find($id); + $title = 2; + return view('student_courses.explain_edit', compact('explain','title')); + } + + public function editEssay($id){ + $user_answer = UserAnswer::find($id); + return view('student_courses.essay_edit', compact('user_answer')); + } + + public function updateEssay(Request $request, $id){ + $user_answer= UserAnswer::find($id); + $user_answer->answer = $request->answer; + $user_answer->save(); + + return redirect(route('student_course.show.explain.code')); + } + + public function update(Request $request ,$id, $title){ + $explain = Explains::find($id); + $explain->description = $request->description; + $explain->edited_admin = 0; + $explain->save(); + + if($title == 1){ + return redirect(route('student_course.show.explain')); + } else{ + return redirect(route('student_course.show.explain.code')); + } + } + + public function tableExplain(){ + $explain = Explains::all(); + if (request()->ajax()) { + return Datatables::of($explain) + ->addIndexColumn() + ->addColumn('name', function ($explain) { + $image = + ' +
+
' . $explain->users->name . '
+
'; + + return $image; + }) + ->addColumn('level', function ($explain) { + $image = + ' +
+
' . $explain->level->name . '
+
'; + + return $image; + }) + ->addColumn('action', function ($ekspedisi) { + // if($explain->users->id == Auth::id()){ + $button = + ' +
+
+
edit-ekspedisi + + + +
+
+
+ '; + return $button; + // } + }) + ->rawColumns(['action', 'name','level']) + ->make(true); + } + } +} diff --git a/Penilaian-Esai/app/Http/Controllers/HomeController.php b/Penilaian-Esai/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..e4cb839 --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/HomeController.php @@ -0,0 +1,35 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + $courses = Course::all(); + $takeCourseIds = StudentCourse::where(["user_id" => Auth::user()->id])->pluck("course_id")->toArray(); + + return view('home', ['courses' => $courses, "take_ids" => $takeCourseIds]); + } +} \ No newline at end of file diff --git a/Penilaian-Esai/app/Http/Controllers/StudentCourseController.php b/Penilaian-Esai/app/Http/Controllers/StudentCourseController.php new file mode 100644 index 0000000..920e29d --- /dev/null +++ b/Penilaian-Esai/app/Http/Controllers/StudentCourseController.php @@ -0,0 +1,267 @@ +middleware('auth'); + } + + public function index() + { + if (Auth::check()) { + $user_id = Auth::user()->id; + $student_courses = Course::select(["courses.id", "courses.course_name", "courses.description"]) + ->join("student_courses", "courses.id", "=", "student_courses.course_id") + ->where("student_courses.user_id", $user_id)->get(); + return view("student_courses.index", ["studentCourses" => $student_courses]); + } + } + + public function detail($course_id) + { + $course = Course::find($course_id); + $total_score = UserScore::where("user_id", Auth::id())->sum("score"); + $current_badge = BadgeSetting::all(); +$fullbadge = BadgeSetting::all(); + $getBadge = "(SELECT badge_settings.name FROM badge_settings WHERE badge_settings.min <= 'total_score' and badge_settings.max >= 'total_score' LIMIT 1)"; + + $getBadgeFile = "(SELECT badge_settings.file FROM badge_settings WHERE badge_settings.min <= 'total_score' and badge_settings.max >= 'total_score' LIMIT 1)"; + $leader_board = UserScore::select(DB::raw("user_id, SUM(score) as total_score, $getBadge as badge_name, $getBadgeFile as file"))->groupBy("user_id")->orderBy("total_score", "DESC")->get(); + + $question = Question::where("is_essay", "1")->pluck("id"); + + $lboard = []; + foreach ($leader_board as $key => $lead) { + $answeredQues = UserScore::where("user_id", $lead->user_id)->whereIn("question_id", $question)->count(); + $percentage = number_format((float)$answeredQues / $question->count() * 100, 1, '.', ''); + + $badge = BadgeSetting::where("min", "<=", $lead->total_score)->where("max", ">=", $lead->total_score)->first(); + + $lboard[$key]['user'] = User::find($lead->user_id)->name; + $lboard[$key]['total_score'] = $lead->total_score; + $lboard[$key]['percentage'] = $percentage; + $lboard[$key]['badge_name'] = $badge->name; + $lboard[$key]['file'] = $badge->file; + $lboard[$key]['answered_question'] = $answeredQues; + $lboard[$key]['code_questions'] = $question->count(); + } + + return view("student_courses.detail", [ + "course" => $course, + "total_score" => $total_score, + "current_badge" => $current_badge, + "leader_board" => $lboard + ]); + } + public function takeCourse(Request $request) + { + if (Auth::check()) { + $user_id = Auth::user()->id; + $check_course = StudentCourse::where(["user_id" => $user_id, "course_id" => $request["course_id"]]); + if ($check_course->count() == 0) { + $student_course = StudentCourse::create(["user_id" => $user_id, "course_id" => $request["course_id"]]); + if ($student_course->save()) { + session()->flash('msg_error1', 'You take it success'); + return redirect()->back(); + } + } else { + session()->flash('msg_error', 'You already take it'); + return redirect()->back(); + } + } + } + + public function my_course($course_id , $level_id, $content_id = null) + { + if($content_id == 1){ + $check = WonderingScore::where('user_id', Auth::id())->where('content_id', $content_id); + if($check->count()==0){ + WonderingScore::create([ + 'user_id'=>Auth::id(), + 'content_id' => $content_id, + 'score'=>10, + ]); + } + } + $course = Course::find($course_id); + $level = Level::find($level_id); + $contents = $content_id != null ? Content::find($content_id) : $level->lessons[0]->contents->first(); + // $user_score = UserScore::where(["content_id" => $content_id == null ? $contents->id : $content_id, "user_id" => Auth::id()])->first(); + $user_score = TotalScore::where(["content_id" => $content_id == null ? $contents->id : $content_id, "user_id" => Auth::id()])->first(); + + $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); + $exploring = UserScore::where("user_id", Auth::id())->sum("score"); + $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); + $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); + $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); + $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; + $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); + + $active_lesson = $content_id != null ? Content::find($content_id)->lesson : $level->lessons->first(); + $questions = Question::where(["is_essay" => "0", "content_id" => $content_id])->get(); + $code_test = Question::where(["is_essay" => "1", "content_id" => $content_id])->get(); + $take = UserScore::where("user_id", Auth::id())->pluck("question_id")->toArray(); + + $check_read = WonderingScore::where(["user_id" => Auth::id()])->where('content_id', $content_id)->count(); + + $is_last = 0; + $check_explain = 0; + if($content_id != null){ + $last_lesson = Lesson::where('level_id', $level_id)->orderBy('posisition', 'Desc')->first(); + $content = Content::where('lesson_id', $last_lesson->id)->pluck('id')->toArray(); + $last_question = Question::whereIn('content_id', $content)->pluck('id')->toArray(); + + $last_content = max($content); + $history_question = UserScore::where('user_id', Auth::id())->whereIn('content_id', $content)->pluck('question_id')->toArray(); + $check_explain = Explains::where("user_id", Auth::id())->where('level_id', $level_id)->where('code', 0)->count(); + $check_question = array_diff($last_question, $history_question); + if(empty($check_question) && $last_content == $content_id){ + $is_last = 1; + } + } + + // $tanya = Question::where('content_id', 7)->pluck('id')->toArray(); + + // $check = UserScore::where('user_id', Auth::user()->id)->where('content_id', 7)->orderBy('question_id', 'asc')->pluck('question_id')->toArray(); + // $different = array_diff($tanya, $check); + // if(empty($different)){ + // $pass = 1; + // } else{ + // $pass =0; + // } + // dd([$tanya, $check, $pass]); + //active_lesson untuk melihat course yang dibuka saat ini + return view("student_courses.my_course", [ + "level" => $level, + "course" => $course, + "content" => $contents, + "score" => $user_score, + "final_score" => $final_score, + "active_lesson" => $active_lesson, + "active_content" => $contents, + "current_badge" => $current_badge, + "questions" => $questions, + "code_tests" => $code_test, + "percentage" => UserScore::getPercentage(), + "finish_code_tests" => $take, + "is_last" => $is_last, + "check_explain" => $check_explain, + "check_read" => $check_read + ]); + } + + public function report() + { + $user_score = UserScore::where(["user_id" => Auth::id()])->get(); + $take = UserScore::where("user_id", Auth::id())->pluck("question_id")->toArray(); + $code_test_score = UserScore::where(["user_id" => Auth::id()])->whereNotNull("question_id")->get(); + $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); + $exploring = UserScore::where("user_id", Auth::id())->sum("score"); + $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); + $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); + $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); + $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; + $current_badge = BadgeSetting::where("min", "<=", $final_score)->where("max", ">=", $final_score)->first(); + + // $his_error = ExerciseCodeLog::where() + // $his_success = ExerciseCodeLog::where + + return view("student_courses.report", [ + "score" => $user_score, + "final_score" => $final_score, + "current_badge" => $current_badge, + "percentage" => UserScore::getPercentage(), + "finish_code_tests" => $take, + "code_score" => $code_test_score, + ]); + } + + public function detailReport($question_id){ + $user_id = Auth::id(); + $question = Question::find($question_id); + // $score = UserScore::where("user_id", Auth::id())->where("question_id", $question_id)->first(); + $score = TotalScore::where("user_id", Auth::id())->where("question_id", $question_id)->first(); + $wondering = WonderingScore::where(["user_id" => Auth::id()])->sum("score"); + $exploring = UserScore::where("user_id", Auth::id())->sum("score"); + $explainKonteks = ExplainingScore::where("user_id",Auth::id())->sum("konteks_penjelasan"); + $explainBenar = ExplainingScore::where("user_id", Auth::id())->sum("kebenaran"); + $explainKeruntutan = ExplainingScore::where("user_id", Auth::id())->sum("keruntutan"); + $final_score = $wondering + $exploring + $explainKonteks + $explainBenar + $explainKeruntutan; + $exercise_logs = ExerciseCodeLog::where("user_id", Auth::id())->where("question_id", $question_id)->orderBy('id','DESC')->get(); + + $essay = EssayQuestion::where('question_id', $question_id)->pluck('id'); + $explain = UserAnswer::whereIn('essay_question_id', $essay)->where('user_id', $user_id)->get(); + $title = "code"; + + return view("student_courses.detail_report", compact('exercise_logs', 'score', 'question', 'explain', 'title', 'final_score')); + + } + + public function level($course_id){ + $level = Level::where('course_id', $course_id)->get(); + $l = Level::firstwhere('id',2); + //isi level 1 + $level_down = $l->id - 1; + $lessons1 = Lesson::where('level_id', $level_down)->pluck('id'); + $content1 = Content::whereIn('lesson_id', $lessons1)->pluck('id'); + $question1 = Question::whereIn('content_id', $content1)->pluck('id')->toArray(); + + + $check = UserScore::where('user_id', Auth::user()->id)->where('level_id', $level_down)->orderBy('question_id', 'asc')->pluck('question_id')->toArray(); + + return view("student_courses.level", compact('level', 'course_id')); + } + + public function readScore(Request $request){ + try{ + + $content_id = $request->input('content_id'); + $check = WonderingScore::where('user_id', Auth::id())->where('content_id', $content_id); + if($check->count() == 0){ + WonderingScore::create([ + 'user_id' => Auth::id(), + 'content_id' => $content_id, + 'score' => 10, + ]); + } + + return response()->json([ + 'status' => '200', + 'message' => 'Success add score', + ],200); + + } catch(Exception $err){ + return response()->json([ + 'status' => '500', + 'message' => 'Error add score', + ],500); + } + } +} diff --git a/Penilaian-Esai/app/Http/Kernel.php b/Penilaian-Esai/app/Http/Kernel.php new file mode 100644 index 0000000..88afe73 --- /dev/null +++ b/Penilaian-Esai/app/Http/Kernel.php @@ -0,0 +1,72 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + "admin" => \App\Http\Middleware\IsAdmin::class, + 'jwt.verify' => \App\Http\Middleware\JwtMiddleware::class, + 'jwt.auth' => Tymon\JWTAuth\Middleware\GetUserFromToken::class, + 'jwt.refresh' => Tymon\JWTAuth\Middleware\RefreshToken::class, + ]; +} diff --git a/Penilaian-Esai/app/Http/Middleware/Authenticate.php b/Penilaian-Esai/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/Penilaian-Esai/app/Http/Middleware/EncryptCookies.php b/Penilaian-Esai/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Penilaian-Esai/app/Http/Middleware/IsAdmin.php b/Penilaian-Esai/app/Http/Middleware/IsAdmin.php new file mode 100644 index 0000000..87a87ce --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/IsAdmin.php @@ -0,0 +1,25 @@ +role_id == 1) { + return $next($request); + } + return redirect('/')->with('error','You have not admin access'); + } +} diff --git a/Penilaian-Esai/app/Http/Middleware/JwtMiddleware.php b/Penilaian-Esai/app/Http/Middleware/JwtMiddleware.php new file mode 100644 index 0000000..32f5a22 --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/JwtMiddleware.php @@ -0,0 +1,35 @@ +authenticate(); + } catch (Exception $e) { + if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException){ + return response()->json(['status' => 'Token is Invalid']); + }else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException){ + return response()->json(['status' => 'Token is Expired']); + }else{ + return response()->json(['status' => 'Authorization Token not found']); + } + } + return $next($request); + } +} diff --git a/Penilaian-Esai/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Penilaian-Esai/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Penilaian-Esai/app/Http/Middleware/RedirectIfAuthenticated.php b/Penilaian-Esai/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..a2813a0 --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,32 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/Penilaian-Esai/app/Http/Middleware/TrimStrings.php b/Penilaian-Esai/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/Penilaian-Esai/app/Http/Middleware/TrustHosts.php b/Penilaian-Esai/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..7186414 --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts() + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/Penilaian-Esai/app/Http/Middleware/TrustProxies.php b/Penilaian-Esai/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/Penilaian-Esai/app/Http/Middleware/VerifyCsrfToken.php b/Penilaian-Esai/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/Penilaian-Esai/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Penilaian-Esai/app/Http/Requests/API/CreateBadgeSettingAPIRequest.php b/Penilaian-Esai/app/Http/Requests/API/CreateBadgeSettingAPIRequest.php new file mode 100644 index 0000000..cf87678 --- /dev/null +++ b/Penilaian-Esai/app/Http/Requests/API/CreateBadgeSettingAPIRequest.php @@ -0,0 +1,29 @@ +belongsTo(Question::class); + } +} diff --git a/Penilaian-Esai/app/Models/BadgeSetting.php b/Penilaian-Esai/app/Models/BadgeSetting.php new file mode 100644 index 0000000..d8e03b3 --- /dev/null +++ b/Penilaian-Esai/app/Models/BadgeSetting.php @@ -0,0 +1,57 @@ + 'integer', + 'name' => 'string', + 'file' => 'string', + 'min' => 'integer', + 'max' => 'integer' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = [ + + ]; + + +} diff --git a/Penilaian-Esai/app/Models/Content.php b/Penilaian-Esai/app/Models/Content.php new file mode 100644 index 0000000..ff0ebaa --- /dev/null +++ b/Penilaian-Esai/app/Models/Content.php @@ -0,0 +1,82 @@ + 'integer', + 'title' => 'string', + 'lesson_id' => 'integer', + 'description' => 'string', + 'url_video' => 'string', + 'published' => 'integer' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = []; + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + **/ + public function lesson() + { + return $this->belongsTo(\App\Models\Lesson::class, 'lesson_id'); + } + + public function questions() + { + return $this->hasMany(Question::class); + } + + public function wondering(){ + return $this->hasMany(WonderingScore::class); + } + + public function explainingscore(){ + return $this->hasMany(ExplainingScore::class); + } +} diff --git a/Penilaian-Esai/app/Models/Course.php b/Penilaian-Esai/app/Models/Course.php new file mode 100644 index 0000000..d4db3de --- /dev/null +++ b/Penilaian-Esai/app/Models/Course.php @@ -0,0 +1,70 @@ + 'integer', + 'course_name' => 'string', + 'description' => 'string', + 'image' => 'string', + 'published' => 'integer' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = [ + + ]; + + public function lessons(){ + return $this->hasMany(Lesson::class); + } + + public function student_courses(){ + return $this->hasMany(StudentCourse::class); + } + + public function level(){ + return $this->hasMany(Level::class); + } + + +} diff --git a/Penilaian-Esai/app/Models/ErrorCodeLog.php b/Penilaian-Esai/app/Models/ErrorCodeLog.php new file mode 100644 index 0000000..784dd33 --- /dev/null +++ b/Penilaian-Esai/app/Models/ErrorCodeLog.php @@ -0,0 +1,18 @@ +belongsTo(\App\Models\Question::class, 'question_id'); + } +} diff --git a/Penilaian-Esai/app/Models/EssayQuestion.php b/Penilaian-Esai/app/Models/EssayQuestion.php new file mode 100644 index 0000000..cc51bb5 --- /dev/null +++ b/Penilaian-Esai/app/Models/EssayQuestion.php @@ -0,0 +1,42 @@ +belongsTo(\App\Models\Question::class, 'question_id'); + } + + public function user() + { + return $this->belongsTo(\App\Models\User::class, 'user_id'); + } + + public function userAnswer(){ + return $this->hasMany(UserAnswer::class); + } + + public function explainingscore(){ + return $this->hasMany(ExplainingScore::class); + } +} diff --git a/Penilaian-Esai/app/Models/ExerciseCodeLog.php b/Penilaian-Esai/app/Models/ExerciseCodeLog.php new file mode 100644 index 0000000..8edbce6 --- /dev/null +++ b/Penilaian-Esai/app/Models/ExerciseCodeLog.php @@ -0,0 +1,25 @@ +belongsTo(\App\Models\Question::class, 'question_id'); + } +} diff --git a/Penilaian-Esai/app/Models/ExplainingScore.php b/Penilaian-Esai/app/Models/ExplainingScore.php new file mode 100644 index 0000000..ed4c671 --- /dev/null +++ b/Penilaian-Esai/app/Models/ExplainingScore.php @@ -0,0 +1,50 @@ +belongsTo(\App\Models\User::class, 'user_id'); + } + + public function content() + { + return $this->belongsTo(\App\Models\Content::class, 'content_id'); + } + + public function essay() + { + return $this->belongsTo(\App\Models\EssayQuestion::class, 'essay_question_id'); + } + + public function answer() + { + return $this->belongsTo(\App\Models\UserAnswer::class, 'user_answer_id'); + } + + public function total() + { + return $this->belongsTo(\App\Models\TotalScore::class, 'total_score_id'); + } + +} diff --git a/Penilaian-Esai/app/Models/Explains.php b/Penilaian-Esai/app/Models/Explains.php new file mode 100644 index 0000000..83b1513 --- /dev/null +++ b/Penilaian-Esai/app/Models/Explains.php @@ -0,0 +1,32 @@ +belongsTo(\App\Models\Level::class, 'level_id'); + } + + public function users(){ + return $this->belongsTo(\App\Models\User::class, 'user_id'); + } + + public function question(){ + return $this->belongsTo(\App\Models\Question::class, 'question_id'); + } +} diff --git a/Penilaian-Esai/app/Models/Lesson.php b/Penilaian-Esai/app/Models/Lesson.php new file mode 100644 index 0000000..36201ae --- /dev/null +++ b/Penilaian-Esai/app/Models/Lesson.php @@ -0,0 +1,76 @@ + 'integer', + 'title' => 'string', + 'description' => 'string', + 'course_id' => 'integer', + 'posisition' => 'integer', + 'published' => 'integer', + 'level_id' => 'integer' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = []; + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + **/ + public function course() + { + return $this->belongsTo(\App\Models\Course::class, 'course_id'); + } + + public function contents(){ + return $this->hasMany(Content::class); + } + + public function level(){ + return $this->belongsTo(\App\Models\Level::class, 'level_id'); + } +} diff --git a/Penilaian-Esai/app/Models/Level.php b/Penilaian-Esai/app/Models/Level.php new file mode 100644 index 0000000..938bc77 --- /dev/null +++ b/Penilaian-Esai/app/Models/Level.php @@ -0,0 +1,31 @@ +hasMany(Lesson::class); + } + + public function Explains(){ + return $this->hasMany(Explains::class); + } + + public function course() + { + return $this->belongsTo(\App\Models\Course::class, 'course_id'); + } +} diff --git a/Penilaian-Esai/app/Models/Question.php b/Penilaian-Esai/app/Models/Question.php new file mode 100644 index 0000000..af2bd33 --- /dev/null +++ b/Penilaian-Esai/app/Models/Question.php @@ -0,0 +1,88 @@ + 'integer', + 'content_id' => 'integer', + 'question' => 'string', + 'question_name' => 'string', + 'image' => 'string', + 'score' => 'integer', + 'is_essay' => 'integer' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = []; + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + **/ + public function content() + { + return $this->belongsTo(\App\Models\Content::class, 'content_id'); + } + + public function answers() + { + return $this->hasMany(\App\Models\Answer::class); + } + + public function explains(){ + return $this->hasMany(Explains::class); + } + + public function essay(){ + return $this->hasMany(EssayQuestion::class); + } + public function total(){ + return $this->hasMany(TotalScore::class); + } +} diff --git a/Penilaian-Esai/app/Models/Role.php b/Penilaian-Esai/app/Models/Role.php new file mode 100644 index 0000000..5d80462 --- /dev/null +++ b/Penilaian-Esai/app/Models/Role.php @@ -0,0 +1,47 @@ + 'integer', + 'role' => 'string' + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules = []; + + +} diff --git a/Penilaian-Esai/app/Models/StudentCourse.php b/Penilaian-Esai/app/Models/StudentCourse.php new file mode 100644 index 0000000..d2ee3a8 --- /dev/null +++ b/Penilaian-Esai/app/Models/StudentCourse.php @@ -0,0 +1,20 @@ +hasOne(Course::class); + } + + +} diff --git a/Penilaian-Esai/app/Models/TotalScore.php b/Penilaian-Esai/app/Models/TotalScore.php new file mode 100644 index 0000000..8eb5b00 --- /dev/null +++ b/Penilaian-Esai/app/Models/TotalScore.php @@ -0,0 +1,25 @@ +belongsTo(\App\Models\Question::class, 'question_id'); + } +} diff --git a/Penilaian-Esai/app/Models/User.php b/Penilaian-Esai/app/Models/User.php new file mode 100644 index 0000000..908ba52 --- /dev/null +++ b/Penilaian-Esai/app/Models/User.php @@ -0,0 +1,84 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + 'role_id', + 'class' + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + ]; + + public function getJWTIdentifier() + { + return $this->getKey(); + } + public function getJWTCustomClaims() + { + return []; + } + + public function role() + { + return $this->belongsTo(Role::class); + } + + public function roles(){ + return $this->hasMany(Role::class); + } + + public function Explains(){ + return $this->hasMany(Explains::class); + } + + public function essay(){ + return $this->hasMany(EssayQuestion::class); + } + + public function userAnswer(){ + return $this->hasMany(UserAnswer::class); + } + + public function wondering(){ + return $this->hasMany(WonderingScore::class); + } + public function explainingscore(){ + return $this->hasMany(ExplainingScore::class); + } +} diff --git a/Penilaian-Esai/app/Models/UserAnswer.php b/Penilaian-Esai/app/Models/UserAnswer.php new file mode 100644 index 0000000..c913f39 --- /dev/null +++ b/Penilaian-Esai/app/Models/UserAnswer.php @@ -0,0 +1,34 @@ +belongsTo(\App\Models\EssayQuestion::class, 'essay_question_id'); + } + + public function user() + { + return $this->belongsTo(\App\Models\User::class, 'user_id'); + } + + public function explainingscore(){ + return $this->hasMany(ExplainingScore::class); + } +} diff --git a/Penilaian-Esai/app/Models/UserCodeTestScore.php b/Penilaian-Esai/app/Models/UserCodeTestScore.php new file mode 100644 index 0000000..241ab13 --- /dev/null +++ b/Penilaian-Esai/app/Models/UserCodeTestScore.php @@ -0,0 +1,16 @@ +sum("score"); + return $score; + } + + public function user() + { + return $this->belongsTo(User::class); + } + + public static function getPercentage($user_id = null) + { + $user = !empty($user_id) ? $user_id : Auth::id(); + + $question = Question::where("is_essay", "1")->pluck("id"); + $answeredQues = UserScore::where("user_id", $user)->whereIn("question_id", $question); + + return number_format((float)$answeredQues->count() / $question->count() * 100, 1, '.', ''); + } +} \ No newline at end of file diff --git a/Penilaian-Esai/app/Models/WonderingScore.php b/Penilaian-Esai/app/Models/WonderingScore.php new file mode 100644 index 0000000..a2f2971 --- /dev/null +++ b/Penilaian-Esai/app/Models/WonderingScore.php @@ -0,0 +1,27 @@ +belongsTo(\App\Models\User::class, 'user_id'); + } + + public function content() + { + return $this->belongsTo(\App\Models\Content::class, 'content_id'); + } +} diff --git a/Penilaian-Esai/app/Providers/AppServiceProvider.php b/Penilaian-Esai/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..ee8ca5b --- /dev/null +++ b/Penilaian-Esai/app/Providers/AppServiceProvider.php @@ -0,0 +1,28 @@ + + */ + protected $policies = [ + // 'App\Models\Model' => 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/Penilaian-Esai/app/Providers/BroadcastServiceProvider.php b/Penilaian-Esai/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/Penilaian-Esai/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + * + * @return bool + */ + public function shouldDiscoverEvents() + { + return false; + } +} diff --git a/Penilaian-Esai/app/Providers/RouteServiceProvider.php b/Penilaian-Esai/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1d9865b --- /dev/null +++ b/Penilaian-Esai/app/Providers/RouteServiceProvider.php @@ -0,0 +1,52 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); + } +} diff --git a/Penilaian-Esai/app/Repositories/BadgeSettingRepository.php b/Penilaian-Esai/app/Repositories/BadgeSettingRepository.php new file mode 100644 index 0000000..6795da6 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/BadgeSettingRepository.php @@ -0,0 +1,40 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return BadgeSetting::class; + } +} diff --git a/Penilaian-Esai/app/Repositories/BaseRepository.php b/Penilaian-Esai/app/Repositories/BaseRepository.php new file mode 100644 index 0000000..8fb1beb --- /dev/null +++ b/Penilaian-Esai/app/Repositories/BaseRepository.php @@ -0,0 +1,193 @@ +app = $app; + $this->makeModel(); + } + + /** + * Get searchable fields array + * + * @return array + */ + abstract public function getFieldsSearchable(); + + /** + * Configure the Model + * + * @return string + */ + abstract public function model(); + + /** + * Make Model instance + * + * @throws \Exception + * + * @return Model + */ + public function makeModel() + { + $model = $this->app->make($this->model()); + + if (!$model instanceof Model) { + throw new \Exception("Class {$this->model()} must be an instance of Illuminate\\Database\\Eloquent\\Model"); + } + + return $this->model = $model; + } + + /** + * Paginate records for scaffold. + * + * @param int $perPage + * @param array $columns + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + */ + public function paginate($perPage, $columns = ['*']) + { + $query = $this->allQuery(); + + return $query->paginate($perPage, $columns); + } + + /** + * Build a query for retrieving all records. + * + * @param array $search + * @param int|null $skip + * @param int|null $limit + * @return \Illuminate\Database\Eloquent\Builder + */ + public function allQuery($search = [], $skip = null, $limit = null) + { + $query = $this->model->newQuery(); + + if (count($search)) { + foreach($search as $key => $value) { + if (in_array($key, $this->getFieldsSearchable())) { + $query->where($key, $value); + } + } + } + + if (!is_null($skip)) { + $query->skip($skip); + } + + if (!is_null($limit)) { + $query->limit($limit); + } + + return $query; + } + + /** + * Retrieve all records with given filter criteria + * + * @param array $search + * @param int|null $skip + * @param int|null $limit + * @param array $columns + * + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection + */ + public function all($search = [], $skip = null, $limit = null, $columns = ['*']) + { + $query = $this->allQuery($search, $skip, $limit); + + return $query->get($columns); + } + + /** + * Create model record + * + * @param array $input + * + * @return Model + */ + public function create($input) + { + $model = $this->model->newInstance($input); + + $model->save(); + + return $model; + } + + /** + * Find model record for given id + * + * @param int $id + * @param array $columns + * + * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Model|null + */ + public function find($id, $columns = ['*']) + { + $query = $this->model->newQuery(); + + return $query->find($id, $columns); + } + + /** + * Update model record for given id + * + * @param array $input + * @param int $id + * + * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Model + */ + public function update($input, $id) + { + $query = $this->model->newQuery(); + + $model = $query->findOrFail($id); + + $model->fill($input); + + $model->save(); + + return $model; + } + + /** + * @param int $id + * + * @throws \Exception + * + * @return bool|mixed|null + */ + public function delete($id) + { + $query = $this->model->newQuery(); + + $model = $query->findOrFail($id); + + return $model->delete(); + } +} diff --git a/Penilaian-Esai/app/Repositories/ContentRepository.php b/Penilaian-Esai/app/Repositories/ContentRepository.php new file mode 100644 index 0000000..4e79779 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/ContentRepository.php @@ -0,0 +1,41 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return Content::class; + } +} diff --git a/Penilaian-Esai/app/Repositories/CourseRepository.php b/Penilaian-Esai/app/Repositories/CourseRepository.php new file mode 100644 index 0000000..4bf3878 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/CourseRepository.php @@ -0,0 +1,40 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return Course::class; + } +} diff --git a/Penilaian-Esai/app/Repositories/LessonRepository.php b/Penilaian-Esai/app/Repositories/LessonRepository.php new file mode 100644 index 0000000..e66eea0 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/LessonRepository.php @@ -0,0 +1,40 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return Lesson::class; + } +} diff --git a/Penilaian-Esai/app/Repositories/QuestionRepository.php b/Penilaian-Esai/app/Repositories/QuestionRepository.php new file mode 100644 index 0000000..a0650d9 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/QuestionRepository.php @@ -0,0 +1,45 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return Question::class; + } +} diff --git a/Penilaian-Esai/app/Repositories/RoleRepository.php b/Penilaian-Esai/app/Repositories/RoleRepository.php new file mode 100644 index 0000000..d429506 --- /dev/null +++ b/Penilaian-Esai/app/Repositories/RoleRepository.php @@ -0,0 +1,40 @@ +fieldSearchable; + } + + /** + * Configure the Model + **/ + public function model() + { + return Role::class; + } +} diff --git a/Penilaian-Esai/artisan b/Penilaian-Esai/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/Penilaian-Esai/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/Penilaian-Esai/bootstrap/app.php b/Penilaian-Esai/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/Penilaian-Esai/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/Penilaian-Esai/bootstrap/cache/.gitignore b/Penilaian-Esai/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/composer.json b/Penilaian-Esai/composer.json new file mode 100644 index 0000000..deddc57 --- /dev/null +++ b/Penilaian-Esai/composer.json @@ -0,0 +1,68 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": ["framework", "laravel"], + "license": "MIT", + "require": { + "php": "^8.0.2", + "doctrine/dbal": "^3.3", + "guzzlehttp/guzzle": "^7.2", + "infyomlabs/adminlte-templates": "^4.0", + "infyomlabs/generator-builder": "^1.0", + "infyomlabs/laravel-generator": "^4.0", + "infyomlabs/stisla-templates": "^4.0", + "laravel/framework": "^9.11", + "laravel/sanctum": "^2.14.1", + "laravel/tinker": "^2.7", + "tymon/jwt-auth": "^1.0", + "yajra/laravel-datatables": "9.0" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^6.1", + "phpunit/phpunit": "^9.5.10", + "spatie/laravel-ignition": "^1.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/Penilaian-Esai/composer.lock b/Penilaian-Esai/composer.lock new file mode 100644 index 0000000..e017faf --- /dev/null +++ b/Penilaian-Esai/composer.lock @@ -0,0 +1,10088 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "4b88a193a8069b2e4bece4fec4764b48", + "packages": [ + { + "name": "brick/math", + "version": "0.11.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2022-05-20T20:07:39+00:00" + }, + { + "name": "doctrine/dbal", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.7.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2023-11-19T08:06:58+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + }, + "time": "2023-09-27T20:04:15+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2022-10-12T20:59:15+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2023-06-16T13:40:37+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "84a527db05647743d50373e0ec53a152f2cde568" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-15T16:57:16+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:16:48+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:35:24+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "infyomlabs/adminlte-templates", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/adminlte-templates.git", + "reference": "deed005232c4db249f5f59a8be707709777d4b60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/adminlte-templates/zipball/deed005232c4db249f5f59a8be707709777d4b60", + "reference": "deed005232c4db249f5f59a8be707709777d4b60", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0", + "infyomlabs/laravel-ui-adminlte": "^4.0", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "\\InfyOm\\AdminLTETemplates\\AdminLTETemplatesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "InfyOm\\AdminLTETemplates\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "AdminLTE templates for InfyOm Laravel Generator", + "keywords": [ + "AdminLTE", + "bootstrap", + "generator", + "infyom", + "laravel", + "templates" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/adminlte-templates/issues", + "source": "https://github.com/InfyOmLabs/adminlte-templates/tree/v4.0.2" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "time": "2022-06-23T13:10:16+00:00" + }, + { + "name": "infyomlabs/generator-builder", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/generator-builder.git", + "reference": "7ae76cd061caff7ba31f9ec871626cbfcd040251" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/generator-builder/zipball/7ae76cd061caff7ba31f9ec871626cbfcd040251", + "reference": "7ae76cd061caff7ba31f9ec871626cbfcd040251", + "shasum": "" + }, + "require": { + "illuminate/support": ">=5.0", + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "\\InfyOm\\GeneratorBuilder\\GeneratorBuilderServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "InfyOm\\GeneratorBuilder\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "InfyOm Laravel Generator GUI Builder", + "keywords": [ + "api", + "builder", + "crud", + "generator", + "gui", + "interface", + "laravel", + "view" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/generator-builder/issues", + "source": "https://github.com/InfyOmLabs/generator-builder/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "time": "2022-02-22T06:28:37+00:00" + }, + { + "name": "infyomlabs/laravel-generator", + "version": "v4.2.2", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/laravel-generator.git", + "reference": "51527ad4d940bd7804a9f776cb1940a931033ab8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/laravel-generator/zipball/51527ad4d940bd7804a9f776cb1940a931033ab8", + "reference": "51527ad4d940bd7804a9f776cb1940a931033ab8", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.0", + "illuminate/support": "^9.0", + "laracasts/flash": "^3.2", + "laravelcollective/html": "^6.3", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.4.4", + "phpunit/phpunit": "^9.5.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "\\InfyOm\\Generator\\InfyOmGeneratorServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "InfyOm\\Generator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "InfyOm Laravel Generator", + "keywords": [ + "api", + "crud", + "generator", + "laravel", + "migration", + "model", + "repository", + "request", + "swagger", + "test", + "view" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/laravel-generator/issues", + "source": "https://github.com/InfyOmLabs/laravel-generator/tree/v4.2.2" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "time": "2022-06-29T04:55:26+00:00" + }, + { + "name": "infyomlabs/laravel-generator-helpers", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/laravel-generator-helpers.git", + "reference": "89a83f334a8cfa16bbbad2c60218c9e66536cf9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/laravel-generator-helpers/zipball/89a83f334a8cfa16bbbad2c60218c9e66536cf9a", + "reference": "89a83f334a8cfa16bbbad2c60218c9e66536cf9a", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0", + "php": "^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "InfyOm\\GeneratorHelpers\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "Helper functions for laravel generator packages", + "support": { + "issues": "https://github.com/InfyOmLabs/laravel-generator-helpers/issues", + "source": "https://github.com/InfyOmLabs/laravel-generator-helpers/tree/v4.0.0" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "time": "2022-02-22T10:02:37+00:00" + }, + { + "name": "infyomlabs/laravel-ui-adminlte", + "version": "v4.0.1", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/laravel-ui-adminlte.git", + "reference": "a5064e165e66547a326987d6d1e8de626f2c9b15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/laravel-ui-adminlte/zipball/a5064e165e66547a326987d6d1e8de626f2c9b15", + "reference": "a5064e165e66547a326987d6d1e8de626f2c9b15", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0", + "infyomlabs/laravel-generator-helpers": "^4.0", + "laravel/ui": "^3.0", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "InfyOm\\AdminLTEPreset\\AdminLTEPresetServiceProvider", + "InfyOm\\AdminLTEPreset\\FortifyAdminLTEPresetServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "InfyOm\\AdminLTEPreset\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "Laravel frontend preset for AdminLTE Theme", + "keywords": [ + "AdminLTE", + "laravel", + "preset" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/laravel-ui-adminlte/issues", + "source": "https://github.com/InfyOmLabs/laravel-ui-adminlte/tree/v4.0.1" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "time": "2022-06-29T05:12:51+00:00" + }, + { + "name": "infyomlabs/laravel-ui-stisla", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/laravel-ui-stisla.git", + "reference": "28da57056701b06efa3f36ca6cf900cd5e1ca89a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/laravel-ui-stisla/zipball/28da57056701b06efa3f36ca6cf900cd5e1ca89a", + "reference": "28da57056701b06efa3f36ca6cf900cd5e1ca89a", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0", + "infyomlabs/laravel-generator-helpers": "^4.0", + "laravel/ui": "^3.0", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "InfyOm\\StislaPreset\\StislaPresetServiceProvider", + "InfyOm\\StislaPreset\\FortifyStislaPresetServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "InfyOm\\StislaPreset\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "Laravel frontend preset for Stisla Theme", + "keywords": [ + "laravel", + "preset", + "stisla" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/laravel-ui-stisla/issues", + "source": "https://github.com/InfyOmLabs/laravel-ui-stisla/tree/v4.0.0" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "abandoned": true, + "time": "2022-02-25T05:48:13+00:00" + }, + { + "name": "infyomlabs/stisla-templates", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/InfyOmLabs/stisla-templates.git", + "reference": "cd9e726067eff9cbebfa28c910ef96ebd9c41fe8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/InfyOmLabs/stisla-templates/zipball/cd9e726067eff9cbebfa28c910ef96ebd9c41fe8", + "reference": "cd9e726067eff9cbebfa28c910ef96ebd9c41fe8", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0", + "infyomlabs/laravel-ui-stisla": "^4.0", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "\\InfyOm\\StislaTemplates\\StislaTemplatesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "InfyOm\\StislaTemplates\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mitul Golakiya", + "email": "me@mitul.me" + } + ], + "description": "Stisla templates for InfyOm Laravel Generator", + "keywords": [ + "bootstrap", + "generator", + "infyom", + "laravel", + "stisla", + "stisla-ui", + "templates" + ], + "support": { + "issues": "https://github.com/InfyOmLabs/stisla-templates/issues", + "source": "https://github.com/InfyOmLabs/stisla-templates/tree/v4.0.0" + }, + "funding": [ + { + "url": "https://opencollective.com/infyomlabs", + "type": "opencollective" + } + ], + "abandoned": true, + "time": "2022-02-25T05:56:32+00:00" + }, + { + "name": "laracasts/flash", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/laracasts/flash.git", + "reference": "6330bc3c027d3c03188b41c58133016f8226b8fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laracasts/flash/zipball/6330bc3c027d3c03188b41c58133016f8226b8fb", + "reference": "6330bc3c027d3c03188b41c58133016f8226b8fb", + "shasum": "" + }, + "require": { + "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0|^10.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "dev-master", + "phpunit/phpunit": "^6.1|^9.5.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laracasts\\Flash\\FlashServiceProvider" + ], + "aliases": { + "Flash": "Laracasts\\Flash\\Flash" + } + } + }, + "autoload": { + "files": [ + "src/Laracasts/Flash/functions.php" + ], + "psr-0": { + "Laracasts\\Flash": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeffrey Way", + "email": "jeffrey@laracasts.com" + } + ], + "description": "Easy flash notifications", + "support": { + "source": "https://github.com/laracasts/flash/tree/3.2.2" + }, + "time": "2023-01-30T20:31:40+00:00" + }, + { + "name": "laravel/framework", + "version": "v9.52.16", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "082345d76fc6a55b649572efe10b11b03e279d24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/082345d76fc6a55b649572efe10b11b03e279d24", + "reference": "082345d76fc6a55b649572efe10b11b03e279d24", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/serializable-closure": "^1.2.2", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.62.1", + "nunomaduro/termwind": "^1.13", + "php": "^8.0.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.0.9", + "symfony/error-handler": "^6.0", + "symfony/finder": "^6.0", + "symfony/http-foundation": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/mime": "^6.0", + "symfony/process": "^6.0", + "symfony/routing": "^6.0", + "symfony/uid": "^6.0", + "symfony/var-dumper": "^6.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^2.13.3|^3.1.4", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.24", + "pda/pheanstalk": "^4.0", + "phpstan/phpdoc-parser": "^1.15", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^9.5.8", + "predis/predis": "^1.1.9|^2.0.2", + "symfony/cache": "^6.0", + "symfony/http-client": "^6.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-10-03T13:02:30+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v2.15.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2022-04-08T13:39:49+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.8.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.8.2" + }, + "time": "2023-08-15T14:27:00+00:00" + }, + { + "name": "laravel/ui", + "version": "v3.4.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c", + "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.42|^9.0", + "illuminate/filesystem": "^8.42|^9.0", + "illuminate/support": "^8.82|^9.0", + "illuminate/validation": "^8.42|^9.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.23|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v3.4.6" + }, + "time": "2022-05-20T13:38:08+00:00" + }, + { + "name": "laravelcollective/html", + "version": "v6.4.1", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64ddfdcaeeb8d332bd98bef442bef81e39c3910b", + "reference": "64ddfdcaeeb8d332bd98bef442bef81e39c3910b", + "shasum": "" + }, + "require": { + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": ">=7.2.5" + }, + "require-dev": { + "illuminate/database": "^6.0|^7.0|^8.0|^9.0|^10.0", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~8.5|^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.x-dev" + }, + "laravel": { + "providers": [ + "Collective\\Html\\HtmlServiceProvider" + ], + "aliases": { + "Form": "Collective\\Html\\FormFacade", + "Html": "Collective\\Html\\HtmlFacade" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Collective\\Html\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adam Engebretson", + "email": "adam@laravelcollective.com" + }, + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "description": "HTML and Form Builders for the Laravel Framework", + "homepage": "https://laravelcollective.com", + "support": { + "issues": "https://github.com/LaravelCollective/html/issues", + "source": "https://github.com/LaravelCollective/html" + }, + "abandoned": "spatie/laravel-html", + "time": "2023-04-25T02:46:11+00:00" + }, + { + "name": "lcobucci/clock", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/c7aadcd6fd97ed9e199114269c0be3f335e38876", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0", + "stella-maris/clock": "^0.1.7" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "infection/infection": "^0.26", + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2022-12-19T14:38:11+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "55564265fddf810504110bd68ca311932324b0e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/55564265fddf810504110bd68ca311932324b0e9", + "reference": "55564265fddf810504110bd68ca311932324b0e9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.20", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6", + "phpbench/phpbench": "^0.17", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-09-28T19:18:28+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2023-08-30T16:55:00+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:16:17+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:14:46+00:00" + }, + { + "name": "league/fractal", + "version": "0.20.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/fractal.git", + "reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/fractal/zipball/8b9d39b67624db9195c06f9c1ffd0355151eaf62", + "reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "doctrine/orm": "^2.5", + "illuminate/contracts": "~5.0", + "mockery/mockery": "^1.3", + "pagerfanta/pagerfanta": "~1.0.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "~3.4", + "vimeo/psalm": "^4.22", + "zendframework/zend-paginator": "~2.3" + }, + "suggest": { + "illuminate/pagination": "The Illuminate Pagination component.", + "pagerfanta/pagerfanta": "Pagerfanta Paginator", + "zendframework/zend-paginator": "Zend Framework Paginator" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.20.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Fractal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Sturgeon", + "email": "me@philsturgeon.uk", + "homepage": "http://philsturgeon.uk/", + "role": "Developer" + } + ], + "description": "Handle the output of complex data structures ready for API output.", + "homepage": "http://fractal.thephpleague.com/", + "keywords": [ + "api", + "json", + "league", + "rest" + ], + "support": { + "issues": "https://github.com/thephpleague/fractal/issues", + "source": "https://github.com/thephpleague/fractal/tree/0.20.1" + }, + "time": "2022-04-11T12:47:17+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-10-17T14:13:20+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.9.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-10-27T15:25:26+00:00" + }, + { + "name": "namshi/jose", + "version": "7.2.3", + "source": { + "type": "git", + "url": "https://github.com/namshi/jose.git", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", + "shasum": "" + }, + "require": { + "ext-date": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-spl": "*", + "php": ">=5.5", + "symfony/polyfill-php56": "^1.0" + }, + "require-dev": { + "phpseclib/phpseclib": "^2.0", + "phpunit/phpunit": "^4.5|^5.0", + "satooshi/php-coveralls": "^1.0" + }, + "suggest": { + "ext-openssl": "Allows to use OpenSSL as crypto engine.", + "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." + }, + "type": "library", + "autoload": { + "psr-4": { + "Namshi\\JOSE\\": "src/Namshi/JOSE/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Nadalin", + "email": "alessandro.nadalin@gmail.com" + }, + { + "name": "Alessandro Cinelli (cirpo)", + "email": "alessandro.cinelli@gmail.com" + } + ], + "description": "JSON Object Signing and Encryption library for PHP.", + "keywords": [ + "JSON Web Signature", + "JSON Web Token", + "JWS", + "json", + "jwt", + "token" + ], + "support": { + "issues": "https://github.com/namshi/jose/issues", + "source": "https://github.com/namshi/jose/tree/master" + }, + "time": "2016-12-05T07:27:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2023-12-08T23:47:49+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": "7.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.5" + }, + "time": "2023-10-05T20:37:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.3" + }, + "time": "2023-10-29T21:02:13+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.18.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + }, + "time": "2023-12-10T21:03:43+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2023-02-08T01:06:31+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.22", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + }, + "time": "2023-10-14T21:56:36+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.5", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.5" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-11-08T05:53:05+00:00" + }, + { + "name": "stella-maris/clock", + "version": "0.1.7", + "source": { + "type": "git", + "url": "https://github.com/stella-maris-solutions/clock.git", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "psr/clock": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "StellaMaris\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Heigl", + "role": "Maintainer" + } + ], + "description": "A pre-release of the proposed PSR-20 Clock-Interface", + "homepage": "https://gitlab.com/stella-maris/clock", + "keywords": [ + "clock", + "datetime", + "point in time", + "psr20" + ], + "support": { + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7" + }, + "time": "2022-11-25T16:15:06+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-30T10:54:28+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T08:40:20+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-18T09:43:34+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-27T06:52:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T17:30:12+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-20T16:41:16+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-01T17:02:02+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-12T18:02:22+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-17T11:49:05+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:30:37+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-17T21:06:49+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-01T14:54:37+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-30T20:28:31+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-28T20:41:49+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-29T08:14:36+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-25T15:08:44+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T08:18:17+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-09T08:28:32+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "tymon/jwt-auth", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/tymondesigns/jwt-auth.git", + "reference": "014be8d493d228d14bbc291b24e835d330c092a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/014be8d493d228d14bbc291b24e835d330c092a0", + "reference": "014be8d493d228d14bbc291b24e835d330c092a0", + "shasum": "" + }, + "require": { + "illuminate/auth": "^5.2|^6|^7|^8|^9", + "illuminate/contracts": "^5.2|^6|^7|^8|^9", + "illuminate/http": "^5.2|^6|^7|^8|^9", + "illuminate/support": "^5.2|^6|^7|^8|^9", + "lcobucci/jwt": "^3.4|^4.0", + "namshi/jose": "^7.0", + "nesbot/carbon": "^1.0|^2.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "illuminate/console": "^5.2|^6|^7|^8|^9", + "illuminate/database": "^5.2|^6|^7|^8|^9", + "illuminate/routing": "^5.2|^6|^7|^8|^9", + "mockery/mockery": ">=0.9.9", + "phpunit/phpunit": "^8.5|^9.4", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "1.0-dev" + }, + "laravel": { + "aliases": { + "JWTAuth": "Tymon\\JWTAuth\\Facades\\JWTAuth", + "JWTFactory": "Tymon\\JWTAuth\\Facades\\JWTFactory" + }, + "providers": [ + "Tymon\\JWTAuth\\Providers\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Tymon\\JWTAuth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sean Tymon", + "email": "tymon148@gmail.com", + "homepage": "https://tymon.xyz", + "role": "Developer" + } + ], + "description": "JSON Web Token Authentication for Laravel and Lumen", + "homepage": "https://github.com/tymondesigns/jwt-auth", + "keywords": [ + "Authentication", + "JSON Web Token", + "auth", + "jwt", + "laravel" + ], + "support": { + "issues": "https://github.com/tymondesigns/jwt-auth/issues", + "source": "https://github.com/tymondesigns/jwt-auth" + }, + "funding": [ + { + "url": "https://www.patreon.com/seantymon", + "type": "patreon" + } + ], + "time": "2022-04-27T08:53:50+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:43:29+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "yajra/laravel-datatables", + "version": "v9.0.0", + "source": { + "type": "git", + "url": "https://github.com/yajra/datatables.git", + "reference": "f16d4c701418d4f60a81e5452933b15b312dde90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/datatables/zipball/f16d4c701418d4f60a81e5452933b15b312dde90", + "reference": "f16d4c701418d4f60a81e5452933b15b312dde90", + "shasum": "" + }, + "require": { + "php": "^8.0.2", + "yajra/laravel-datatables-buttons": "9.*", + "yajra/laravel-datatables-editor": "1.*", + "yajra/laravel-datatables-fractal": "9.*", + "yajra/laravel-datatables-html": "9.*", + "yajra/laravel-datatables-oracle": "10.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Laravel DataTables Complete Package.", + "keywords": [ + "datatables", + "jquery", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/datatables/issues", + "source": "https://github.com/yajra/datatables/tree/v9.0.0" + }, + "time": "2022-05-07T16:41:24+00:00" + }, + { + "name": "yajra/laravel-datatables-buttons", + "version": "v9.1.4", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables-buttons.git", + "reference": "afc40285b09b0960180b17b96c5429b4be772143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables-buttons/zipball/afc40285b09b0960180b17b96c5429b4be772143", + "reference": "afc40285b09b0960180b17b96c5429b4be772143", + "shasum": "" + }, + "require": { + "illuminate/console": "*", + "php": "^8.0.2", + "yajra/laravel-datatables-html": "9.*", + "yajra/laravel-datatables-oracle": "10.*" + }, + "require-dev": { + "barryvdh/laravel-snappy": "^1.0", + "maatwebsite/excel": "^3.1.40", + "nunomaduro/larastan": "2.1.*", + "orchestra/testbench": "^7.3", + "rap2hpoutre/fast-excel": "^3.2" + }, + "suggest": { + "barryvdh/laravel-snappy": "Allows exporting of dataTable to PDF using the print view.", + "dompdf/dompdf": "Allows exporting of dataTable to PDF using the DomPDF.", + "maatwebsite/excel": "Exporting of dataTables (excel, csv and PDF) using maatwebsite package.", + "rap2hpoutre/fast-excel": "Faster exporting of dataTables using fast-excel package." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Yajra\\DataTables\\ButtonsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Yajra\\DataTables\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Laravel DataTables Buttons Plugin.", + "keywords": [ + "buttons", + "datatables", + "jquery", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables-buttons/issues", + "source": "https://github.com/yajra/laravel-datatables-buttons/tree/v9.1.4" + }, + "funding": [ + { + "url": "https://www.paypal.me/yajra", + "type": "custom" + }, + { + "url": "https://github.com/yajra", + "type": "github" + }, + { + "url": "https://www.patreon.com/yajra", + "type": "patreon" + } + ], + "time": "2023-02-20T06:11:01+00:00" + }, + { + "name": "yajra/laravel-datatables-editor", + "version": "v1.25.4", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables-editor.git", + "reference": "23962356700d6b31f49bb119665b13e87303e13f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables-editor/zipball/23962356700d6b31f49bb119665b13e87303e13f", + "reference": "23962356700d6b31f49bb119665b13e87303e13f", + "shasum": "" + }, + "require": { + "illuminate/console": "*", + "illuminate/database": "*", + "illuminate/http": "*", + "illuminate/validation": "*", + "php": ">=7.0" + }, + "require-dev": { + "orchestra/testbench": "~3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Yajra\\DataTables\\EditorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Yajra\\DataTables\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Laravel DataTables Editor plugin for Laravel 5.5+.", + "keywords": [ + "JS", + "datatables", + "editor", + "html", + "jquery", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables-editor/issues", + "source": "https://github.com/yajra/laravel-datatables-editor/tree/v1.25.4" + }, + "funding": [ + { + "url": "https://www.paypal.me/yajra", + "type": "custom" + }, + { + "url": "https://github.com/yajra", + "type": "github" + }, + { + "url": "https://www.patreon.com/yajra", + "type": "patreon" + } + ], + "time": "2023-02-21T06:57:59+00:00" + }, + { + "name": "yajra/laravel-datatables-fractal", + "version": "v9.1.0", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables-fractal.git", + "reference": "4b313041247108650c9ce5deb678defb7e00e794" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables-fractal/zipball/4b313041247108650c9ce5deb678defb7e00e794", + "reference": "4b313041247108650c9ce5deb678defb7e00e794", + "shasum": "" + }, + "require": { + "league/fractal": "^0.20.1", + "php": ">=8.0.2", + "yajra/laravel-datatables-oracle": "^10.0" + }, + "require-dev": { + "nunomaduro/larastan": "^2.1", + "orchestra/testbench": "^7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Yajra\\DataTables\\FractalServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Yajra\\DataTables\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Laravel DataTables Fractal Plugin.", + "keywords": [ + "api", + "datatables", + "fractal", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables-fractal/issues", + "source": "https://github.com/yajra/laravel-datatables-fractal/tree/v9.1.0" + }, + "time": "2022-06-20T01:43:31+00:00" + }, + { + "name": "yajra/laravel-datatables-html", + "version": "v9.4.0", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables-html.git", + "reference": "cec3e77746ff68f6f51e22250061b59d4ec1311c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables-html/zipball/cec3e77746ff68f6f51e22250061b59d4ec1311c", + "reference": "cec3e77746ff68f6f51e22250061b59d4ec1311c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravelcollective/html": "^6.3.0", + "php": "^8.0.2", + "yajra/laravel-datatables-oracle": "^10.0" + }, + "require-dev": { + "nunomaduro/larastan": "^2.1", + "orchestra/testbench": "^7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Yajra\\DataTables\\HtmlServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Yajra\\DataTables\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Laravel DataTables HTML builder plugin for Laravel 5.4+.", + "keywords": [ + "JS", + "datatables", + "html", + "jquery", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables-html/issues", + "source": "https://github.com/yajra/laravel-datatables-html/tree/v9.4.0" + }, + "funding": [ + { + "url": "https://www.paypal.me/yajra", + "type": "custom" + }, + { + "url": "https://github.com/yajra", + "type": "github" + }, + { + "url": "https://www.patreon.com/yajra", + "type": "patreon" + } + ], + "time": "2023-02-20T07:44:43+00:00" + }, + { + "name": "yajra/laravel-datatables-oracle", + "version": "v10.11.2", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables.git", + "reference": "22e6ddad629a22b5e7959b27828c28cbb21ca763" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/22e6ddad629a22b5e7959b27828c28cbb21ca763", + "reference": "22e6ddad629a22b5e7959b27828c28cbb21ca763", + "shasum": "" + }, + "require": { + "illuminate/database": "^9|^10", + "illuminate/filesystem": "^9|^10", + "illuminate/http": "^9|^10", + "illuminate/support": "^9|^10", + "illuminate/view": "^9|^10", + "php": "^8.0.2" + }, + "require-dev": { + "algolia/algoliasearch-client-php": "^3.4", + "laravel/scout": "^10.5", + "meilisearch/meilisearch-php": "^1.4", + "nunomaduro/larastan": "^2.4", + "orchestra/testbench": "^8", + "yajra/laravel-datatables-html": "^9.3.4|^10" + }, + "suggest": { + "yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.", + "yajra/laravel-datatables-editor": "Plugin to use DataTables Editor (requires a license).", + "yajra/laravel-datatables-export": "Plugin for server-side exporting using livewire and queue worker.", + "yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.", + "yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + }, + "laravel": { + "providers": [ + "Yajra\\DataTables\\DataTablesServiceProvider" + ], + "aliases": { + "DataTables": "Yajra\\DataTables\\Facades\\DataTables" + } + } + }, + "autoload": { + "files": [ + "src/helper.php" + ], + "psr-4": { + "Yajra\\DataTables\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "jQuery DataTables API for Laravel 4|5|6|7|8|9|10", + "keywords": [ + "datatables", + "jquery", + "laravel" + ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables/issues", + "source": "https://github.com/yajra/laravel-datatables/tree/v10.11.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/yajra", + "type": "github" + } + ], + "time": "2023-12-12T13:39:55+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + }, + "time": "2023-06-12T08:44:38+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.26.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.0|^10.0|^11.0", + "illuminate/contracts": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2023-12-02T18:26:39+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-12-10T02:24:34+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" + }, + "require-dev": { + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "6.x-dev" + }, + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-01-03T12:54:54+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.29", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-19T04:57:46+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.28", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-12-01T16:55:19+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-07T05:35:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T06:03:37+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bde739e7565280bda77be70044ac1047bc007e34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-02T09:26:13+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-17T15:54:07+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.11.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-18T14:09:40+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "1.6.4", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", + "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^8.77|^9.27", + "monolog/monolog": "^2.3", + "php": "^8.0", + "spatie/flare-client-php": "^1.0.1", + "spatie/ignition": "^1.4.1", + "symfony/console": "^5.0|^6.0", + "symfony/var-dumper": "^5.0|^6.0" + }, + "require-dev": { + "filp/whoops": "^2.14", + "livewire/livewire": "^2.8|dev-develop", + "mockery/mockery": "^1.4", + "nunomaduro/larastan": "^1.0", + "orchestra/testbench": "^6.23|^7.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.27" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-01-03T19:28:04+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-06T11:00:25+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2023-11-20T00:12:19+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.0.2" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Penilaian-Esai/config/app.php b/Penilaian-Esai/config/app.php new file mode 100644 index 0000000..504e31d --- /dev/null +++ b/Penilaian-Esai/config/app.php @@ -0,0 +1,224 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + 'python_api' => env('BASE_URL', 'http://127.0.0.1:8000/compiler/run'), + 'generate_grade_api' => env('GENERATE_GRADE', 'http://127.0.0.1:8000/compiler/generate/grade'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + InfyOm\GeneratorBuilder\GeneratorBuilderServiceProvider::class, + Tymon\JWTAuth\Providers\LaravelServiceProvider::class, + Yajra\DataTables\DataTablesServiceProvider::class, + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'ExampleClass' => App\Example\ExampleClass::class, + 'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class, + 'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class, + ])->toArray(), + 'key' => env('APP_KEY', 'base64:oa+jYm0jCM4aoI06sImtVLcqcYTH+G4T/zM35i5t3QA='), + 'cipher' => 'AES-256-CBC', + +]; diff --git a/Penilaian-Esai/config/auth.php b/Penilaian-Esai/config/auth.php new file mode 100644 index 0000000..d8c6cee --- /dev/null +++ b/Penilaian-Esai/config/auth.php @@ -0,0 +1,111 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/Penilaian-Esai/config/broadcasting.php b/Penilaian-Esai/config/broadcasting.php new file mode 100644 index 0000000..67fcbbd --- /dev/null +++ b/Penilaian-Esai/config/broadcasting.php @@ -0,0 +1,67 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/Penilaian-Esai/config/cache.php b/Penilaian-Esai/config/cache.php new file mode 100644 index 0000000..33bb295 --- /dev/null +++ b/Penilaian-Esai/config/cache.php @@ -0,0 +1,110 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/Penilaian-Esai/config/cors.php b/Penilaian-Esai/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/Penilaian-Esai/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/Penilaian-Esai/config/database.php b/Penilaian-Esai/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/Penilaian-Esai/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/Penilaian-Esai/config/datatables.php b/Penilaian-Esai/config/datatables.php new file mode 100644 index 0000000..b6ed653 --- /dev/null +++ b/Penilaian-Esai/config/datatables.php @@ -0,0 +1,127 @@ + [ + /* + * Smart search will enclose search keyword with wildcard string "%keyword%". + * SQL: column LIKE "%keyword%" + */ + 'smart' => true, + + /* + * Multi-term search will explode search keyword using spaces resulting into multiple term search. + */ + 'multi_term' => true, + + /* + * Case insensitive will search the keyword in lower case format. + * SQL: LOWER(column) LIKE LOWER(keyword) + */ + 'case_insensitive' => true, + + /* + * Wild card will add "%" in between every characters of the keyword. + * SQL: column LIKE "%k%e%y%w%o%r%d%" + */ + 'use_wildcards' => false, + + /* + * Perform a search which starts with the given keyword. + * SQL: column LIKE "keyword%" + */ + 'starts_with' => false, + ], + + /* + * DataTables internal index id response column name. + */ + 'index_column' => 'DT_RowIndex', + + /* + * List of available builders for DataTables. + * This is where you can register your custom dataTables builder. + */ + 'engines' => [ + 'eloquent' => Yajra\DataTables\EloquentDataTable::class, + 'query' => Yajra\DataTables\QueryDataTable::class, + 'collection' => Yajra\DataTables\CollectionDataTable::class, + 'resource' => Yajra\DataTables\ApiResourceDataTable::class, + ], + + /* + * DataTables accepted builder to engine mapping. + * This is where you can override which engine a builder should use + * Note, only change this if you know what you are doing! + */ + 'builders' => [ + //Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent', + //Illuminate\Database\Eloquent\Builder::class => 'eloquent', + //Illuminate\Database\Query\Builder::class => 'query', + //Illuminate\Support\Collection::class => 'collection', + ], + + /* + * Nulls last sql pattern for PostgreSQL & Oracle. + * For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction' + */ + 'nulls_last_sql' => ':column :direction NULLS LAST', + + /* + * User friendly message to be displayed on user if error occurs. + * Possible values: + * null - The exception message will be used on error response. + * 'throw' - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed. + * 'custom message' - Any friendly message to be displayed to the user. You can also use translation key. + */ + 'error' => env('DATATABLES_ERROR', null), + + /* + * Default columns definition of dataTable utility functions. + */ + 'columns' => [ + /* + * List of columns hidden/removed on json response. + */ + 'excess' => ['rn', 'row_num'], + + /* + * List of columns to be escaped. If set to *, all columns are escape. + * Note: You can set the value to empty array to disable XSS protection. + */ + 'escape' => '*', + + /* + * List of columns that are allowed to display html content. + * Note: Adding columns to list will make us available to XSS attacks. + */ + 'raw' => ['action'], + + /* + * List of columns are forbidden from being searched/sorted. + */ + 'blacklist' => ['password', 'remember_token'], + + /* + * List of columns that are only allowed fo search/sort. + * If set to *, all columns are allowed. + */ + 'whitelist' => '*', + ], + + /* + * JsonResponse header and options config. + */ + 'json' => [ + 'header' => [], + 'options' => 0, + ], + + /* + * Default condition to determine if a parameter is a callback or not. + * Callbacks needs to start by those terms, or they will be cast to string. + */ + 'callback' => ['$', '$.', 'function'], +]; diff --git a/Penilaian-Esai/config/filesystems.php b/Penilaian-Esai/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/Penilaian-Esai/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/Penilaian-Esai/config/hashing.php b/Penilaian-Esai/config/hashing.php new file mode 100644 index 0000000..bcd3be4 --- /dev/null +++ b/Penilaian-Esai/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/Penilaian-Esai/config/infyom/generator_builder.php b/Penilaian-Esai/config/infyom/generator_builder.php new file mode 100644 index 0000000..a410965 --- /dev/null +++ b/Penilaian-Esai/config/infyom/generator_builder.php @@ -0,0 +1,13 @@ + [ + + 'builder' => 'generator-builder::builder', + + 'field-template' => 'generator-builder::field-template', + + 'relation-field-template' => 'generator-builder::relation-field-template', + ], +]; diff --git a/Penilaian-Esai/config/infyom/laravel_generator.php b/Penilaian-Esai/config/infyom/laravel_generator.php new file mode 100644 index 0000000..8ccc226 --- /dev/null +++ b/Penilaian-Esai/config/infyom/laravel_generator.php @@ -0,0 +1,224 @@ + [ + + 'migration' => database_path('migrations/'), + + 'model' => app_path('Models/'), + + 'datatables' => app_path('DataTables/'), + + 'repository' => app_path('Repositories/'), + + 'routes' => base_path('routes/web.php'), + + 'api_routes' => base_path('routes/api.php'), + + 'request' => app_path('Http/Requests/'), + + 'api_request' => app_path('Http/Requests/API/'), + + 'controller' => app_path('Http/Controllers/'), + + 'api_controller' => app_path('Http/Controllers/API/'), + + 'api_resource' => app_path('Http/Resources/'), + + 'repository_test' => base_path('tests/Repositories/'), + + 'api_test' => base_path('tests/APIs/'), + + 'tests' => base_path('tests/'), + + 'views' => resource_path('views/'), + + 'schema_files' => resource_path('model_schemas/'), + + 'templates_dir' => resource_path('infyom/infyom-generator-templates/'), + + 'seeder' => database_path('seeders/'), + + 'database_seeder' => database_path('seeders/DatabaseSeeder.php'), + + 'factory' => database_path('factories/'), + + 'view_provider' => app_path('Providers/ViewServiceProvider.php'), + ], + + /* + |-------------------------------------------------------------------------- + | Namespaces + |-------------------------------------------------------------------------- + | + */ + + 'namespace' => [ + + 'model' => 'App\Models', + + 'datatables' => 'App\DataTables', + + 'repository' => 'App\Repositories', + + 'controller' => 'App\Http\Controllers', + + 'api_controller' => 'App\Http\Controllers\API', + + 'api_resource' => 'App\Http\Resources', + + 'request' => 'App\Http\Requests', + + 'api_request' => 'App\Http\Requests\API', + + 'seeder' => 'Database\Seeders', + + 'factory' => 'Database\Factories', + + 'repository_test' => 'Tests\Repositories', + + 'api_test' => 'Tests\APIs', + + 'tests' => 'Tests', + ], + + /* + |-------------------------------------------------------------------------- + | Templates + |-------------------------------------------------------------------------- + | + */ + + 'templates' => 'stisla-templates', + + /* + |-------------------------------------------------------------------------- + | Model extend class + |-------------------------------------------------------------------------- + | + */ + + 'model_extend_class' => 'Eloquent', + + /* + |-------------------------------------------------------------------------- + | API routes prefix & version + |-------------------------------------------------------------------------- + | + */ + + 'api_prefix' => 'api', + + 'api_version' => 'v1', + + /* + |-------------------------------------------------------------------------- + | Options + |-------------------------------------------------------------------------- + | + */ + + 'options' => [ + + 'softDelete' => true, + + 'save_schema_file' => true, + + 'localized' => false, + + 'tables_searchable_default' => false, + + 'repository_pattern' => true, + + 'resources' => false, + + 'excluded_fields' => ['id'], // Array of columns that doesn't required while creating module + ], + + /* + |-------------------------------------------------------------------------- + | Prefixes + |-------------------------------------------------------------------------- + | + */ + + 'prefixes' => [ + + 'route' => '', // using admin will create route('admin.?.index') type routes + + 'path' => '', + + 'view' => '', // using backend will create return view('backend.?.index') type the backend views directory + + 'public' => '', + ], + + /* + |-------------------------------------------------------------------------- + | Add-Ons + |-------------------------------------------------------------------------- + | + */ + + 'add_on' => [ + + 'swagger' => false, + + 'tests' => true, + + 'datatables' => false, + + 'menu' => [ + + 'enabled' => true, + + 'menu_file' => 'layouts/menu.blade.php', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Timestamp Fields + |-------------------------------------------------------------------------- + | + */ + + 'timestamps' => [ + + 'enabled' => true, + + 'created_at' => 'created_at', + + 'updated_at' => 'updated_at', + + 'deleted_at' => 'deleted_at', + ], + + /* + |-------------------------------------------------------------------------- + | Save model files to `App/Models` when use `--prefix`. see #208 + |-------------------------------------------------------------------------- + | + */ + 'ignore_model_prefix' => false, + + /* + |-------------------------------------------------------------------------- + | Specify custom doctrine mappings as per your need + |-------------------------------------------------------------------------- + | + */ + 'from_table' => [ + + 'doctrine_mappings' => [], + ], + +]; diff --git a/Penilaian-Esai/config/jwt.php b/Penilaian-Esai/config/jwt.php new file mode 100644 index 0000000..f83234d --- /dev/null +++ b/Penilaian-Esai/config/jwt.php @@ -0,0 +1,301 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Secret + |-------------------------------------------------------------------------- + | + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). + | + */ + + 'secret' => env('JWT_SECRET'), + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + + /* + |-------------------------------------------------------------------------- + | JWT time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token will be valid for. + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | Notice: If you set this to null you should remove 'exp' element from 'required_claims' list. + | + */ + + 'ttl' => env('JWT_TTL', 60), + + /* + |-------------------------------------------------------------------------- + | Refresh time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token can be refreshed + | within. I.E. The user can refresh their token within a 2 week window of + | the original token being created until they must re-authenticate. + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), + + /* + |-------------------------------------------------------------------------- + | JWT hashing algorithm + |-------------------------------------------------------------------------- + | + | Specify the hashing algorithm that will be used to sign the token. + | + */ + + 'algo' => env('JWT_ALGO', Tymon\JWTAuth\Providers\JWT\Provider::ALGO_HS256), + + /* + |-------------------------------------------------------------------------- + | Required Claims + |-------------------------------------------------------------------------- + | + | Specify the required claims that must exist in any token. + | A TokenInvalidException will be thrown if any of these claims are not + | present in the payload. + | + */ + + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), + + /* + |-------------------------------------------------------------------------- + | Blacklist Enabled + |-------------------------------------------------------------------------- + | + | In order to invalidate tokens, you must have the blacklist enabled. + | If you do not want or need this functionality, then set this to false. + | + */ + + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + + /* + |-------------------------------------------------------------------------- + | Providers + |-------------------------------------------------------------------------- + | + | Specify the various providers used throughout the package. + | + */ + + 'providers' => [ + + /* + |-------------------------------------------------------------------------- + | JWT Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to create and decode the tokens. + | + */ + + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to authenticate users. + | + */ + + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, + + /* + |-------------------------------------------------------------------------- + | Storage Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to store tokens in the blacklist. + | + */ + + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, + + ], + +]; diff --git a/Penilaian-Esai/config/logging.php b/Penilaian-Esai/config/logging.php new file mode 100644 index 0000000..5aa1dbb --- /dev/null +++ b/Penilaian-Esai/config/logging.php @@ -0,0 +1,122 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/Penilaian-Esai/config/mail.php b/Penilaian-Esai/config/mail.php new file mode 100644 index 0000000..534395a --- /dev/null +++ b/Penilaian-Esai/config/mail.php @@ -0,0 +1,118 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/Penilaian-Esai/config/queue.php b/Penilaian-Esai/config/queue.php new file mode 100644 index 0000000..25ea5a8 --- /dev/null +++ b/Penilaian-Esai/config/queue.php @@ -0,0 +1,93 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/Penilaian-Esai/config/sanctum.php b/Penilaian-Esai/config/sanctum.php new file mode 100644 index 0000000..529cfdc --- /dev/null +++ b/Penilaian-Esai/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/Penilaian-Esai/config/services.php b/Penilaian-Esai/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/Penilaian-Esai/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/Penilaian-Esai/config/session.php b/Penilaian-Esai/config/session.php new file mode 100644 index 0000000..8fed97c --- /dev/null +++ b/Penilaian-Esai/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/Penilaian-Esai/config/view.php b/Penilaian-Esai/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/Penilaian-Esai/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/Penilaian-Esai/database/.gitignore b/Penilaian-Esai/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/Penilaian-Esai/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/Penilaian-Esai/database/factories/UserFactory.php b/Penilaian-Esai/database/factories/UserFactory.php new file mode 100644 index 0000000..23b61d2 --- /dev/null +++ b/Penilaian-Esai/database/factories/UserFactory.php @@ -0,0 +1,42 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + 'name' => $this->faker->name(), + 'email' => $this->faker->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + * + * @return static + */ + public function unverified() + { + return $this->state(function (array $attributes) { + return [ + 'email_verified_at' => null, + ]; + }); + } +} diff --git a/Penilaian-Esai/database/migrations/2014_10_12_000000_create_users_table.php b/Penilaian-Esai/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..cf6b776 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2014_10_12_100000_create_password_resets_table.php b/Penilaian-Esai/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..fcacb80 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Penilaian-Esai/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..1719198 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Penilaian-Esai/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..fd235f8 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,36 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_30_114700_create_roles_table.php b/Penilaian-Esai/database/migrations/2022_05_30_114700_create_roles_table.php new file mode 100644 index 0000000..3e21b07 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_114700_create_roles_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->string('role'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('roles'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_05_30_115524_create_courses_table.php b/Penilaian-Esai/database/migrations/2022_05_30_115524_create_courses_table.php new file mode 100644 index 0000000..701b413 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_115524_create_courses_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('course_name'); + $table->text('description'); + $table->string('image'); + $table->integer('published'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('courses'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_05_30_120348_create_lessons_table.php b/Penilaian-Esai/database/migrations/2022_05_30_120348_create_lessons_table.php new file mode 100644 index 0000000..be090b0 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_120348_create_lessons_table.php @@ -0,0 +1,38 @@ +increments('id'); + $table->string('title'); + $table->text('description'); + $table->integer("course_id")->unsigned(); + $table->foreign('course_id')->references("id")->on("courses"); + $table->integer('posisition'); + $table->integer('published'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('lessons'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_05_30_141552_create_contents_table.php b/Penilaian-Esai/database/migrations/2022_05_30_141552_create_contents_table.php new file mode 100644 index 0000000..eaab43a --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_141552_create_contents_table.php @@ -0,0 +1,39 @@ +increments('id'); + $table->string('title'); + $table->integer('lesson_id')->unsigned(); + $table->text('description'); + $table->string('url_video'); + $table->integer('published'); + $table->timestamps(); + $table->softDeletes(); + $table->foreign('lesson_id')->references('id')->on('lessons'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('contents'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_05_30_143915_add_role_to_user_column.php b/Penilaian-Esai/database/migrations/2022_05_30_143915_add_role_to_user_column.php new file mode 100644 index 0000000..3f32cb0 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_143915_add_role_to_user_column.php @@ -0,0 +1,34 @@ +integer("role_id")->unsigned()->default(null); + $table->foreign("role_id")->references("id")->on("roles"); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('user_column', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_30_150023_create_questions_table.php b/Penilaian-Esai/database/migrations/2022_05_30_150023_create_questions_table.php new file mode 100644 index 0000000..f3cc2eb --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_150023_create_questions_table.php @@ -0,0 +1,38 @@ +increments('id'); + $table->integer('content_id')->unsigned(); + $table->string('question'); + $table->string('image'); + $table->integer('score'); + $table->timestamps(); + $table->softDeletes(); + $table->foreign('content_id')->references('id')->on('contents'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('questions'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_05_30_180245_create_student_course_table.php b/Penilaian-Esai/database/migrations/2022_05_30_180245_create_student_course_table.php new file mode 100644 index 0000000..303b89b --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_30_180245_create_student_course_table.php @@ -0,0 +1,37 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign("user_id")->references("id")->on("users"); + + $table->unsignedInteger("course_id"); + + $table->foreign("course_id")->references("id")->on("courses"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('student_courses'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_31_015033_create_answers_table.php b/Penilaian-Esai/database/migrations/2022_05_31_015033_create_answers_table.php new file mode 100644 index 0000000..1434e4e --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_31_015033_create_answers_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedInteger("question_id")->nullable(); + $table->foreign("question_id")->references("id")->on("questions"); + + $table->string("answer"); + $table->string("is_right"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('answers'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_31_023057_add_nullable_to_answers.php b/Penilaian-Esai/database/migrations/2022_05_31_023057_add_nullable_to_answers.php new file mode 100644 index 0000000..8506680 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_31_023057_add_nullable_to_answers.php @@ -0,0 +1,34 @@ +string("is_right")->nullable()->change(); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('answers', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_31_030846_add_null_to_question.php b/Penilaian-Esai/database/migrations/2022_05_31_030846_add_null_to_question.php new file mode 100644 index 0000000..c883f4c --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_31_030846_add_null_to_question.php @@ -0,0 +1,33 @@ +string("image")->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('questions', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_31_070600_create_user_scores_table.php b/Penilaian-Esai/database/migrations/2022_05_31_070600_create_user_scores_table.php new file mode 100644 index 0000000..d0882af --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_31_070600_create_user_scores_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger("user_id")->nullable(); + $table->foreign("user_id")->references("id")->on("users"); + $table->unsignedInteger("content_id")->nullable(); + $table->foreign("content_id")->references("id")->on("contents"); + $table->integer("score"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_scores'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_05_31_151123_create_badge_settings_table.php b/Penilaian-Esai/database/migrations/2022_05_31_151123_create_badge_settings_table.php new file mode 100644 index 0000000..6392b64 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_05_31_151123_create_badge_settings_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->text('name'); + $table->integer('min'); + $table->integer('max'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('badge_settings'); + } +} diff --git a/Penilaian-Esai/database/migrations/2022_06_02_055725_change_column_in_contents.php b/Penilaian-Esai/database/migrations/2022_06_02_055725_change_column_in_contents.php new file mode 100644 index 0000000..30ac01d --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_06_02_055725_change_column_in_contents.php @@ -0,0 +1,33 @@ +longText("description")->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('contents', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_06_13_155450_add_column_is_essay_to_question_table.php b/Penilaian-Esai/database/migrations/2022_06_13_155450_add_column_is_essay_to_question_table.php new file mode 100644 index 0000000..1612b88 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_06_13_155450_add_column_is_essay_to_question_table.php @@ -0,0 +1,33 @@ +addColumn("integer", "is_essay")->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('questions', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_06_16_105917_change_column_question_on_question_table.php b/Penilaian-Esai/database/migrations/2022_06_16_105917_change_column_question_on_question_table.php new file mode 100644 index 0000000..14ae6b1 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_06_16_105917_change_column_question_on_question_table.php @@ -0,0 +1,31 @@ +longText("question")->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_06_20_121634_create_user_code_test_score_table.php b/Penilaian-Esai/database/migrations/2022_06_20_121634_create_user_code_test_score_table.php new file mode 100644 index 0000000..a6d39fb --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_06_20_121634_create_user_code_test_score_table.php @@ -0,0 +1,37 @@ +id(); + $table->unsignedInteger('question_id'); + $table->foreign("question_id")->references("id")->on("questions"); + $table->unsignedBigInteger("user_id")->nullable(); + $table->foreign("user_id")->references("id")->on("users"); + $table->integer('score')->default(0); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_code_test_score'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_06_20_152419_add_question_id_on_user_scores_table.php b/Penilaian-Esai/database/migrations/2022_06_20_152419_add_question_id_on_user_scores_table.php new file mode 100644 index 0000000..c75acd5 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_06_20_152419_add_question_id_on_user_scores_table.php @@ -0,0 +1,32 @@ +addColumn('integer',"question_id")->nullable()->unsigned(); + $table->foreign("question_id")->references('id')->on("questions"); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}; diff --git a/Penilaian-Esai/database/migrations/2022_07_19_073038_add_column_timer_to_question_table.php b/Penilaian-Esai/database/migrations/2022_07_19_073038_add_column_timer_to_question_table.php new file mode 100644 index 0000000..6ced4cc --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_07_19_073038_add_column_timer_to_question_table.php @@ -0,0 +1,33 @@ +addColumn("integer", "timer")->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('questions', function (Blueprint $table) { + // + }); + } +}; \ No newline at end of file diff --git a/Penilaian-Esai/database/migrations/2022_07_25_112343_add_column_start_time_to_user_scores_table.php b/Penilaian-Esai/database/migrations/2022_07_25_112343_add_column_start_time_to_user_scores_table.php new file mode 100644 index 0000000..2637c1c --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_07_25_112343_add_column_start_time_to_user_scores_table.php @@ -0,0 +1,34 @@ +timestamp("started_at")->nullable(true); + $table->timestamp("ended_at")->nullable(true); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('user_scores', function (Blueprint $table) { + // + }); + } +}; \ No newline at end of file diff --git a/Penilaian-Esai/database/migrations/2022_07_25_125721_create_table_code_error_logs.php b/Penilaian-Esai/database/migrations/2022_07_25_125721_create_table_code_error_logs.php new file mode 100644 index 0000000..5d5a308 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_07_25_125721_create_table_code_error_logs.php @@ -0,0 +1,39 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign("user_id")->references("id")->on("users"); + + $table->unsignedInteger("question_id"); + $table->foreign("question_id")->references("id")->on("questions"); + + $table->integer("total_count"); + $table->longText("error_message"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('table_code_error_logs'); + } +}; \ No newline at end of file diff --git a/Penilaian-Esai/database/migrations/2022_07_25_214126_add_column_on_timer_on_code_error_logs.php b/Penilaian-Esai/database/migrations/2022_07_25_214126_add_column_on_timer_on_code_error_logs.php new file mode 100644 index 0000000..f545c0b --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_07_25_214126_add_column_on_timer_on_code_error_logs.php @@ -0,0 +1,31 @@ +string("on_timer")->nullable(true); + // }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}; \ No newline at end of file diff --git a/Penilaian-Esai/database/migrations/2022_07_25_220037_add_column_on_timer_on_user_scores_table.php b/Penilaian-Esai/database/migrations/2022_07_25_220037_add_column_on_timer_on_user_scores_table.php new file mode 100644 index 0000000..1aa90ba --- /dev/null +++ b/Penilaian-Esai/database/migrations/2022_07_25_220037_add_column_on_timer_on_user_scores_table.php @@ -0,0 +1,30 @@ +string("on_timer")->nullable(true); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}; \ No newline at end of file diff --git a/Penilaian-Esai/database/migrations/2023_02_28_031855_create_levels_table.php b/Penilaian-Esai/database/migrations/2023_02_28_031855_create_levels_table.php new file mode 100644 index 0000000..ff1508c --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_02_28_031855_create_levels_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->String('name'); + $table->integer("course_id")->unsigned(); + $table->foreign('course_id')->references("id")->on("courses"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('levels'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_02_28_033936_add_level_id_to_lessons.php b/Penilaian-Esai/database/migrations/2023_02_28_033936_add_level_id_to_lessons.php new file mode 100644 index 0000000..4b15f67 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_02_28_033936_add_level_id_to_lessons.php @@ -0,0 +1,33 @@ +integer('level_id')->unsigned(); + $table->foreign('level_id')->references("id")->on("levels"); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('lessons', function (Blueprint $table) { + $table->dropColumn('level_id'); + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_02_28_062544_add_description_to_levels_table.php b/Penilaian-Esai/database/migrations/2023_02_28_062544_add_description_to_levels_table.php new file mode 100644 index 0000000..330ebc1 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_02_28_062544_add_description_to_levels_table.php @@ -0,0 +1,32 @@ +text('description'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('levels', function (Blueprint $table) { + $table->dropColumn('description'); + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_03_10_074326_create_code_history_logs_table.php b/Penilaian-Esai/database/migrations/2023_03_10_074326_create_code_history_logs_table.php new file mode 100644 index 0000000..8448ae2 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_03_10_074326_create_code_history_logs_table.php @@ -0,0 +1,40 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign("user_id")->references("id")->on("users"); + + $table->unsignedInteger("question_id"); + $table->foreign("question_id")->references("id")->on("questions"); + + $table->integer("total_count"); + $table->longText("message"); + $table->integer("is_error")->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('code_history_logs'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_03_17_071601_create_explains_table.php b/Penilaian-Esai/database/migrations/2023_03_17_071601_create_explains_table.php new file mode 100644 index 0000000..004f16a --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_03_17_071601_create_explains_table.php @@ -0,0 +1,36 @@ +id(); + $table->text('description'); + $table->integer('level_id')->unsigned(); + $table->foreign('level_id')->references('id')->on('levels'); + $table->unsignedBigInteger("user_id"); + $table->foreign("user_id")->references("id")->on("users"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('explains'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_05_18_144701_create_essay_question_table.php b/Penilaian-Esai/database/migrations/2023_05_18_144701_create_essay_question_table.php new file mode 100644 index 0000000..8eca195 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_05_18_144701_create_essay_question_table.php @@ -0,0 +1,37 @@ +id(); + $table->integer("question_id")->unsigned(); + $table->foreign('question_id')->references("id")->on("questions"); + $table->unsignedBigInteger("user_id"); + $table->foreign('user_id')->references("id")->on("users"); + $table->text('question'); + $table->text('answer'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('essay_question'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_05_18_145219_create_user_answer_table.php b/Penilaian-Esai/database/migrations/2023_05_18_145219_create_user_answer_table.php new file mode 100644 index 0000000..b74ae86 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_05_18_145219_create_user_answer_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign('user_id')->references("id")->on("users"); + $table->unsignedBigInteger("essay_question_id"); + $table->foreign('essay_question_id')->references("id")->on("essay_question"); + $table->text('answer'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_answer'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_05_23_060818_create_wondering_score_table.php b/Penilaian-Esai/database/migrations/2023_05_23_060818_create_wondering_score_table.php new file mode 100644 index 0000000..9cb9136 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_05_23_060818_create_wondering_score_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign('user_id')->references("id")->on("users"); + $table->integer('content_id')->unsigned(); + $table->foreign('content_id')->references('id')->on('contents'); + $table->integer("score"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('wondering_score'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_05_23_061330_create_explaining_score_table.php b/Penilaian-Esai/database/migrations/2023_05_23_061330_create_explaining_score_table.php new file mode 100644 index 0000000..f6fdfd2 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_05_23_061330_create_explaining_score_table.php @@ -0,0 +1,43 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign('user_id')->references("id")->on("users"); + $table->integer('content_id')->unsigned(); + $table->foreign('content_id')->references('id')->on('contents'); + $table->integer('konteks_penjelasan'); + $table->integer('keruntutan'); + $table->integer('kebenaran'); + $table->boolean('is_accepted')->default(false); + $table->unsignedBigInteger("essay_question_id"); + $table->foreign('essay_question_id')->references("id")->on("essay_question"); + $table->unsignedBigInteger("user_answer_id"); + $table->foreign('user_answer_id')->references("id")->on("user_answer"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('explaining_score'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_05_28_125135_create_total_score_table.php b/Penilaian-Esai/database/migrations/2023_05_28_125135_create_total_score_table.php new file mode 100644 index 0000000..661ffbf --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_05_28_125135_create_total_score_table.php @@ -0,0 +1,42 @@ +id(); + $table->unsignedBigInteger("user_id"); + $table->foreign('user_id')->references("id")->on("users"); + $table->integer('content_id')->unsigned(); + $table->foreign('content_id')->references('id')->on('contents'); + $table->integer('question_id')->unsigned(); + $table->foreign('question_id')->references('id')->on('questions'); + $table->integer('score'); + $table->unsignedBigInteger('wondering_score_id'); + $table->foreign('wondering_score_id')->references('id')->on('wondering_score'); + $table->unsignedBigInteger('user_score_id'); + $table->foreign('user_score_id')->references('id')->on('user_scores'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('total_score'); + } +}; diff --git a/Penilaian-Esai/database/migrations/2023_06_23_042517_add_class_to_users_table.php b/Penilaian-Esai/database/migrations/2023_06_23_042517_add_class_to_users_table.php new file mode 100644 index 0000000..1e2c240 --- /dev/null +++ b/Penilaian-Esai/database/migrations/2023_06_23_042517_add_class_to_users_table.php @@ -0,0 +1,32 @@ +bigInteger('class')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/Penilaian-Esai/database/migrations/2024_03_22_180425_add_additional_answers_to_essay_question_table.php b/Penilaian-Esai/database/migrations/2024_03_22_180425_add_additional_answers_to_essay_question_table.php new file mode 100644 index 0000000..476a66e --- /dev/null +++ b/Penilaian-Esai/database/migrations/2024_03_22_180425_add_additional_answers_to_essay_question_table.php @@ -0,0 +1,35 @@ +text('answer2')->nullable()->after('answer'); + $table->text('answer3')->nullable()->after('answer2'); + $table->text('answer4')->nullable()->after('answer3'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('essay_question', function (Blueprint $table) { + $table->dropColumn(['answer2', 'answer3', 'answer4']); + }); + } +} + diff --git a/Penilaian-Esai/database/seeders/DatabaseSeeder.php b/Penilaian-Esai/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..c1c48a0 --- /dev/null +++ b/Penilaian-Esai/database/seeders/DatabaseSeeder.php @@ -0,0 +1,24 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/Penilaian-Esai/database/seeders/UsersTableSeeder.php b/Penilaian-Esai/database/seeders/UsersTableSeeder.php new file mode 100644 index 0000000..c2887bb --- /dev/null +++ b/Penilaian-Esai/database/seeders/UsersTableSeeder.php @@ -0,0 +1,46 @@ +insert([ + ['id' => 1, 'role' => 'Admin', 'created_at' => now(), 'updated_at' => now()], + ['id' => 2, 'role' => 'Students', 'created_at' => now(), 'updated_at' => now()], + ['id' => 3, 'role' => 'Teacher', 'created_at' => now(), 'updated_at' => now()], + ]); + + DB::table('users')->insert([ + [ + 'name' => 'Admin', + 'email' => 'admin@gmail.com', + 'email_verified_at' => now(), + 'password' => Hash::make('password'), // password + 'role_id' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ], + [ + 'name' => 'Rossa', + 'email' => 'rossa@gmail.com', + 'email_verified_at' => now(), + 'password' => Hash::make('password'), // password + 'role_id' => 2, + 'created_at' => now(), + 'updated_at' => now(), + ], + ]); + } +} diff --git a/Penilaian-Esai/lang/en/auth.php b/Penilaian-Esai/lang/en/auth.php new file mode 100644 index 0000000..6598e2c --- /dev/null +++ b/Penilaian-Esai/lang/en/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/Penilaian-Esai/lang/en/pagination.php b/Penilaian-Esai/lang/en/pagination.php new file mode 100644 index 0000000..d481411 --- /dev/null +++ b/Penilaian-Esai/lang/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/Penilaian-Esai/lang/en/passwords.php b/Penilaian-Esai/lang/en/passwords.php new file mode 100644 index 0000000..2345a56 --- /dev/null +++ b/Penilaian-Esai/lang/en/passwords.php @@ -0,0 +1,22 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that email address.", + +]; diff --git a/Penilaian-Esai/lang/en/validation.php b/Penilaian-Esai/lang/en/validation.php new file mode 100644 index 0000000..724b5ac --- /dev/null +++ b/Penilaian-Esai/lang/en/validation.php @@ -0,0 +1,169 @@ + 'The :attribute must be accepted.', + 'accepted_if' => 'The :attribute must be accepted when :other is :value.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute must have between :min and :max items.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute must be between :min and :max.', + 'string' => 'The :attribute must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute is not a valid date.', + 'date_equals' => 'The :attribute must be a date equal to :date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'declined' => 'The :attribute must be declined.', + 'declined_if' => 'The :attribute must be declined when :other is :value.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute must have more than :value items.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'numeric' => 'The :attribute must be greater than :value.', + 'string' => 'The :attribute must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute must have :value items or more.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'array' => 'The :attribute must have less than :value items.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'numeric' => 'The :attribute must be less than :value.', + 'string' => 'The :attribute must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute must not have more than :value items.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute must have at least :min items.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'numeric' => 'The :attribute must be at least :min.', + 'string' => 'The :attribute must be at least :min characters.', + ], + 'multiple_of' => 'The :attribute must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'password' => [ + 'letters' => 'The :attribute must contain at least one letter.', + 'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute must contain at least one number.', + 'symbols' => 'The :attribute must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'array' => 'The :attribute must contain :size items.', + 'file' => 'The :attribute must be :size kilobytes.', + 'numeric' => 'The :attribute must be :size.', + 'string' => 'The :attribute must be :size characters.', + ], + 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute must be a valid URL.', + 'uuid' => 'The :attribute must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; diff --git a/Penilaian-Esai/package-lock.json b/Penilaian-Esai/package-lock.json new file mode 100644 index 0000000..cd6b08d --- /dev/null +++ b/Penilaian-Esai/package-lock.json @@ -0,0 +1,20030 @@ +{ + "name": "bajapro_v3", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@fortawesome/fontawesome-free": "^5.13.1", + "bootstrap": "^4.0.0", + "datatables.net-dt": "^1.10.21", + "izitoast": "^1.4.0", + "jquery": "^3.2", + "jquery.nicescroll": "^3.7.6", + "jsrender": "^1.0.5", + "popper.js": "^1.12", + "select2": "^4.0.13", + "sweetalert": "^1.1.3", + "sweetalert2": "^11.10.8", + "vue": "^2.5.17", + "vue-template-compiler": "^2.6.12" + }, + "devDependencies": { + "@popperjs/core": "^2.10.2", + "admin-lte": "3.1.0", + "axios": "^0.25", + "bootstrap": "^4.6.0", + "jquery": "^3.6", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "popper.js": "^1.16.1", + "postcss": "^8.1.14", + "resolve-url-loader": "^3.1.2", + "sass": "^1.15.2", + "sass-loader": "^8.0.0", + "vue": "^2.6.12", + "vue-loader": "^15.9.8", + "vue-template-compiler": "^2.6.12" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@lgaitan/pace-progress": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lgaitan/pace-progress/-/pace-progress-1.0.7.tgz", + "integrity": "sha512-GMoTcF6WBpno7a7Iyx7M79os26d5bCDbh7YTZmXZM8YuLR3DDtwo0/CBYddStGD6QIBTieFDz4IAQiO0dAdRGw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@swc/helpers": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.16.tgz", + "integrity": "sha512-xOhhpOruRcroQ0Nb5a5IgP94AJ0DuJnhEfXL+icJ1gn7uls5DXX2mRrlBqmrd0rAj/+/BRU8RB2VN8mA8DuFYQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@sweetalert2/theme-bootstrap-4": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@sweetalert2/theme-bootstrap-4/-/theme-bootstrap-4-4.0.5.tgz", + "integrity": "sha512-pe5mQ98sgrphNVq6Xe5BsWxsfI1Z8zT9C2oux6+4B6Qt30qYo58Q+bnzRs8pV95O9/URt/QJZyl+R8SabMeW6g==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@ttskch/select2-bootstrap4-theme": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@ttskch/select2-bootstrap4-theme/-/select2-bootstrap4-theme-1.5.2.tgz", + "integrity": "sha512-gAj8qNy/VYwQDBkACm0USM66kxFai8flX83ayRXPNhzZckEgSqIBB9sM74SCM3ssgeX+ZVy4BifTnLis+KpIyg==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dev": true, + "dependencies": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/admin-lte": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/admin-lte/-/admin-lte-3.1.0.tgz", + "integrity": "sha512-JkmmkjbGgB5RCPwpaUCEktpZz/Ez/vBdfCNx8J3u8doaRRUUV1/oj4PuIiOV+xrNMt05q87131xoGySr/eA4uA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-free": "^5.15.3", + "@lgaitan/pace-progress": "^1.0.7", + "@sweetalert2/theme-bootstrap-4": "^4.0.3", + "@ttskch/select2-bootstrap4-theme": "^1.5.2", + "bootstrap": "^4.6.0", + "bootstrap-colorpicker": "^3.2.0", + "bootstrap-slider": "^11.0.2", + "bootstrap-switch": "3.3.4", + "bootstrap4-duallistbox": "^4.0.2", + "bs-custom-file-input": "^1.3.4", + "bs-stepper": "^1.7.0", + "chart.js": "^2.9.4", + "codemirror": "^5.60.0", + "datatables.net": "^1.10.24", + "datatables.net-autofill-bs4": "^2.3.5", + "datatables.net-bs4": "^1.10.24", + "datatables.net-buttons-bs4": "^1.7.0", + "datatables.net-colreorder-bs4": "^1.5.3", + "datatables.net-fixedcolumns-bs4": "^3.3.2", + "datatables.net-fixedheader-bs4": "^3.1.8", + "datatables.net-keytable-bs4": "^2.6.1", + "datatables.net-responsive-bs4": "^2.2.7", + "datatables.net-rowgroup-bs4": "^1.1.2", + "datatables.net-rowreorder-bs4": "^1.2.7", + "datatables.net-scroller-bs4": "^2.0.3", + "datatables.net-searchbuilder-bs4": "^1.0.1", + "datatables.net-searchpanes-bs4": "^1.2.2", + "datatables.net-select-bs4": "^1.3.2", + "daterangepicker": "^3.1.0", + "dropzone": "^5.8.1", + "ekko-lightbox": "^5.3.0", + "fastclick": "^1.0.6", + "filterizr": "^2.2.4", + "flag-icon-css": "^3.5.0", + "flot": "^4.2.2", + "fs-extra": "^9.1.0", + "fullcalendar": "^5.5.1", + "icheck-bootstrap": "^3.0.1", + "inputmask": "^5.0.5", + "ion-rangeslider": "^2.3.1", + "jquery": "^3.6.0", + "jquery-knob-chif": "^1.2.13", + "jquery-mapael": "^2.2.0", + "jquery-mousewheel": "^3.1.13", + "jquery-ui-dist": "^1.12.1", + "jquery-validation": "^1.19.3", + "jqvmap-novulnerability": "^1.5.1", + "jsgrid": "^1.5.3", + "jszip": "^3.6.0", + "moment": "^2.29.1", + "overlayscrollbars": "^1.13.1", + "pdfmake": "^0.1.70", + "popper.js": "^1.16.1", + "raphael": "^2.3.0", + "select2": "^4.0.13", + "sparklines": "^1.3.0", + "summernote": "^0.8.18", + "sweetalert2": "^10.15.6", + "tempusdominus-bootstrap-4": "^5.39.0", + "toastr": "^2.1.4", + "uplot": "^1.6.7" + } + }, + "node_modules/admin-lte/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/admin-lte/node_modules/sweetalert2": { + "version": "10.16.11", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.16.11.tgz", + "integrity": "sha512-Rdfabv2G89Tr8vmUTb1auWCYYesKBEWnkYPSi7XaiCIW0ZXXGK8Nw1wYKPEMLU6O8gMSMJe5m6MRKqMQsAQy9A==", + "dev": true, + "funding": { + "url": "https://sweetalert2.github.io/#donations" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/bootstrap-colorpicker": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.4.0.tgz", + "integrity": "sha512-7vA0hvLrat3ptobEKlT9+6amzBUJcDAoh6hJRQY/AD+5dVZYXXf1ivRfrTwmuwiVLJo9rZwM8YB4lYzp6agzqg==", + "dev": true, + "dependencies": { + "bootstrap": ">=4.0", + "jquery": ">=2.2", + "popper.js": ">=1.10" + } + }, + "node_modules/bootstrap-slider": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/bootstrap-slider/-/bootstrap-slider-11.0.2.tgz", + "integrity": "sha512-CdwS+Z6X79OkLes9RfDgPB9UIY/+81wTkm6ktdSB6hdyiRbjJLFQIjZdnEr55tDyXZfgC7U6yeSXkNN9ZdGqjA==", + "dev": true + }, + "node_modules/bootstrap-switch": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/bootstrap-switch/-/bootstrap-switch-3.3.4.tgz", + "integrity": "sha512-7YQo+Ir6gCUqC36FFp1Zvec5dRF/+obq+1drMtdIMi9Xc84Kx63Evi0kdcp4HfiGsZpiz6IskyYDNlSKcxsL7w==", + "dev": true, + "peerDependencies": { + "bootstrap": "^3.1.1", + "jquery": ">=1.9.0" + } + }, + "node_modules/bootstrap4-duallistbox": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bootstrap4-duallistbox/-/bootstrap4-duallistbox-4.0.2.tgz", + "integrity": "sha512-vQdANVE2NN0HMaZO9qWJy0C7u04uTpAmtUGO3KLq3xAZKCboJweQ437hDTszI6pbYV2olJCGZMbdhvIkBNGeGQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/brotli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", + "integrity": "sha512-K0HNa0RRpUpcF8yS4yNSd6vmkrvA+wRd+symIcwhfqGLAi7YgGlKfO4oDYVgiahiLGNviO9uY7Zlb1MCPeTmSA==", + "dev": true, + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-custom-file-input": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-custom-file-input/-/bs-custom-file-input-1.3.4.tgz", + "integrity": "sha512-NBsQzTnef3OW1MvdKBbMHAYHssCd613MSeJV7z2McXznWtVMnJCy7Ckyc+PwxV6Pk16cu6YBcYWh/ZE0XWNKCA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bs-stepper": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/bs-stepper/-/bs-stepper-1.7.0.tgz", + "integrity": "sha512-+DX7UKKgw2GI6ucsSCRd19VHYrxf/8znRCLs1lQVVLxz+h7EqgIOxoHcJ0/QTaaNoR9Cwg78ydo6hXIasyd3LA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chart.js": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", + "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", + "dev": true, + "dependencies": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "node_modules/chartjs-color": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", + "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", + "dev": true, + "dependencies": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^1.9.3" + } + }, + "node_modules/chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0" + } + }, + "node_modules/chartjs-color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/chartjs-color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "5.65.5", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.5.tgz", + "integrity": "sha512-HNyhvGLnYz5c+kIsB9QKVitiZUevha3ovbIYaQiGzKo7ECSL/elWD9RXt3JgNr0NdnyqE9/Rc/7uLfkJQL638w==", + "dev": true + }, + "node_modules/collect.js": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.33.0.tgz", + "integrity": "sha512-jEFD39H+09JyvjxwwHGX6Z7j+SB4OdXxHWG8Dus5eVQmwngWGNluRBQ2qS92K9MkRH+fjh91u1TGa31LIeBKhQ==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==", + "dev": true, + "dependencies": { + "arity-n": "^1.0.4" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==", + "dev": true, + "dependencies": { + "commander": "^2.9.0" + }, + "bin": { + "concat": "bin/concat" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", + "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.10.tgz", + "integrity": "sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.10", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz", + "integrity": "sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.5", + "postcss-merge-rules": "^5.1.2", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/datatables.net": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.12.1.tgz", + "integrity": "sha512-e6XAMUoV41JdQPS/r9YRfRcmTPcCVvyZbWI+xog1Zg+kjVliMQbEkvWK5XFItmi64Cvwg+IqsZbTUJ1KSY3umA==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-autofill": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-autofill/-/datatables.net-autofill-2.4.0.tgz", + "integrity": "sha512-qUUSXJv5rNx2TrAltq/RP/PK0UC/l5x3FMv9TEzeR4NYh0FCEeNlzdwz7QYWTi0nR+iW126SQbPAvkHVJdLEiA==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-autofill-bs4": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-autofill-bs4/-/datatables.net-autofill-bs4-2.4.0.tgz", + "integrity": "sha512-0NvmQvuxkFLUBe5/iRal+GGlWKMUJT36/jobiTeySaQabbIFqHgOZ6cgLHCKas6zq1x9LCMDI0SL5c19NZ893w==", + "dev": true, + "dependencies": { + "datatables.net-autofill": ">=2.3.7", + "datatables.net-bs4": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-bs4": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.12.1.tgz", + "integrity": "sha512-LBeC8zUNVYyQT7ytC2lYqyXDn+k2kYpqvijC83oOjlcnEtb/8Tduzgquox5FrNKUJPcUrj9r+h5B0TDBbob/Gg==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-buttons": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-1.7.1.tgz", + "integrity": "sha512-D2OxZeR18jhSx+l0xcfAJzfUH7l3LHCu0e606fV7+v3hMhphOfljjZYLaiRmGiR9lqO/f5xE/w2a+OtG/QMavw==", + "dev": true, + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-buttons-bs4": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs4/-/datatables.net-buttons-bs4-1.7.1.tgz", + "integrity": "sha512-s+fwsgAAWp7mOKwuztPH06kaw2JNAJ71VNTw/TqGQTL6BK9FshweDKZSRIB/ePcc/Psiy8fhNEj3XHxx4OO6BA==", + "dev": true, + "dependencies": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-buttons": "1.7.1", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-colreorder": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder/-/datatables.net-colreorder-1.5.6.tgz", + "integrity": "sha512-TgPEQDIib2K4QsnX/Plk+eMS9ROL4idZvEqo6wvQrvksanERgxzcfwJuev4Yx8GRZ3+BwasXmFvtdSzvjWN3iQ==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-colreorder-bs4": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder-bs4/-/datatables.net-colreorder-bs4-1.5.6.tgz", + "integrity": "sha512-D4BPo/7EcHXPq+eA0NHYemnV2G1lf1VJklgYmWmSap6O1xgU9YhPARj5PgyeB9Sm3bCERoQugwzH2YDddgDe4g==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-colreorder": ">=1.5.4", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-dt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net-dt/-/datatables.net-dt-1.12.1.tgz", + "integrity": "sha512-HYsHbSYqOqlgsgjKMH/kkCB5455t51GmmtXRxgnDMRbjPLEIKo5CZmAlUe5mdD/RVPRtAUaj5K3SDlkEZ1bUmw==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedcolumns": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns/-/datatables.net-fixedcolumns-3.3.3.tgz", + "integrity": "sha512-xo6MeI2xc/Ufk4ffrpao+OiPo8/GPB8cO80gA6NFgYBVw6eP9pPa2NsV+gSWRVr7d3A8iZC7mUZT5WdtliNHEA==", + "dev": true, + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedcolumns-bs4": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns-bs4/-/datatables.net-fixedcolumns-bs4-3.3.3.tgz", + "integrity": "sha512-d0dqCYk93wnCT382hW2Y1YMwgJXpTfdTu3Tb+UKQvt7OApxKYuWUFfKde+wHtIhqodswZ1jrMfYmxZHJYAysZQ==", + "dev": true, + "dependencies": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-fixedcolumns": "3.3.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedheader": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader/-/datatables.net-fixedheader-3.2.3.tgz", + "integrity": "sha512-z+YOTgKquPqXREiATuH8yAGZcpRRZQW+I2NVu5H/+rnIYO1CJIi63hQD/nnv51J7RaTXSUk1OQtriN/VUs4YMQ==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedheader-bs4": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader-bs4/-/datatables.net-fixedheader-bs4-3.2.3.tgz", + "integrity": "sha512-aTvNTcyHPNetwQZzvH7G8uXkE9EtrIOnIz4daHDwq3Uh3QvHcJfQMNLZUHe0PgrEeUXZVEUhrJpoi1je9lVAXw==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-fixedheader": ">=3.2.0", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-keytable": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/datatables.net-keytable/-/datatables.net-keytable-2.7.0.tgz", + "integrity": "sha512-U/+frQ0bSk0VeKuRy2h4FQfrbTYaQHpWLCylcEHYDzDZ9/cR0spHD+mVUJy22oAMvfHa9py73D/e4LD09uxHNg==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-keytable-bs4": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/datatables.net-keytable-bs4/-/datatables.net-keytable-bs4-2.7.0.tgz", + "integrity": "sha512-1Bxw2sPjOVscTr2sZg5AMJ2hJK7921XhK3Mqrz7bO7ZCwpf/u7tna8d3ZeeTy45qp28zAQARE5BLXht5W/tN4g==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-keytable": ">=2.6.4", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-responsive": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.3.0.tgz", + "integrity": "sha512-QA5QsD1sJQRQ7/IFi3rSd33O84f/Augz2KnaehjfuEANtK4KeC9Lbkut5tPuuMcK4jOpQPOOPYTbmfrt+tfh9w==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-responsive-bs4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs4/-/datatables.net-responsive-bs4-2.3.0.tgz", + "integrity": "sha512-6ZeFeM6PHh3A5BodxUvHU1ipIrMYMbBcOgB3BfXMHxr4maS96RIQdTmXK3owJ5sy88dF68V8fjkquvybS7kwvw==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-responsive": ">=2.2.9", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowgroup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup/-/datatables.net-rowgroup-1.2.0.tgz", + "integrity": "sha512-YQWL9Z70/XqBQK5YkBk/BhnmgQ1jux0ntHGpi+PYgeHEzS5lM1/oMoJEKiqIT02mVbUQOUE3z7t6rLSA0JbdvQ==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowgroup-bs4": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup-bs4/-/datatables.net-rowgroup-bs4-1.2.0.tgz", + "integrity": "sha512-sALXn7+VdMBC1TNWXbHNAiKCUSIwexO2frpxt/RBenJXR6DzmDuHLFaKJPEeeMtPJdBaxN1yc7J/GNwV+188Fw==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-rowgroup": ">=1.1.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowreorder": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder/-/datatables.net-rowreorder-1.2.8.tgz", + "integrity": "sha512-gFNKMa5DtigbjhSs96ZKT3uICC1z87EuLUIYLVPEXHc7v/WVOiQ3AaRvIQtExORPi/jQzxEoO5wO9UGZ0ldsUQ==", + "dev": true, + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowreorder-bs4": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder-bs4/-/datatables.net-rowreorder-bs4-1.2.8.tgz", + "integrity": "sha512-9J36fc/Ywdy9o5SkX+ZLMXYwcKGC+wa1RAiNRFywxT3u5nBrLvcDlOnYLBNae5XO1wBr/3jbj9ka/ZWyd9hnVg==", + "dev": true, + "dependencies": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-rowreorder": "1.2.8", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-scroller": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/datatables.net-scroller/-/datatables.net-scroller-2.0.6.tgz", + "integrity": "sha512-isFFxocRU19jrQITvyLzh4zODbYNZtxFtfLlUGyE3x+0Nyq6Hu7JOsWiVPhqf9Jo2I8Yt5MecqICaZ3DEfggZA==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-scroller-bs4": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/datatables.net-scroller-bs4/-/datatables.net-scroller-bs4-2.0.6.tgz", + "integrity": "sha512-RbcwSNOG9Oo2BZI4xzey3ndCglkmEHSW+wIyZAYXcttdqUGyXFx6t7qiGzm+VnAyqZ9aU3oGfJ+nl7QnJeVQTA==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-scroller": ">=2.0.5", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-searchbuilder": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-searchbuilder/-/datatables.net-searchbuilder-1.3.3.tgz", + "integrity": "sha512-EgraZhrLk0RcUjeSiF1yeQa+7eoleQAOz9vhFKuJ5G9n2H+q7JKK3D8bHlNQLwX60pAzXDTD39b4KhFOj0FO4Q==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-searchbuilder-bs4": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-searchbuilder-bs4/-/datatables.net-searchbuilder-bs4-1.3.3.tgz", + "integrity": "sha512-/+Ecw6kzYyDNg9ZtsgopJfssRca6hFxc1qvdrnbsU71dHYjUFvUJOedDJtdmTjyZ3EH/GmxoJR7rCyjcyW2Tew==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-searchbuilder": ">=1.2.2", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-searchpanes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/datatables.net-searchpanes/-/datatables.net-searchpanes-2.0.1.tgz", + "integrity": "sha512-NZ4tj4NNEe8+RxaQVAOEuyCiVWiI0uGke1jXUlCFdrKUq+XecZIauf+Bf3HMeNEL4G/6I7wXqJ9LY6mGpna4zQ==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-searchpanes-bs4": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-searchpanes-bs4/-/datatables.net-searchpanes-bs4-1.4.0.tgz", + "integrity": "sha512-Floxzmw2cQkUQdI7Vv4IWtLqLmwPrmY6MPncbEWq4YvkSeaZW7OHzSmZLLUjMn2P6Huvz59WUVcwL0lSDui6GQ==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.10.25", + "datatables.net-searchpanes": ">=1.3.0", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-select": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-1.4.0.tgz", + "integrity": "sha512-CWEIpODzKXupZOx5KdPUnX5pDPO0xLrCxezE1MNktolFSz0duMw1w3ae25cEynP+w8wkaXbRfCiyGeBXx1YIvw==", + "dev": true, + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-select-bs4": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-select-bs4/-/datatables.net-select-bs4-1.4.0.tgz", + "integrity": "sha512-5DWRyKo+YwX+J8CHbvexbipam/7tqZXp0R/1Ayrk7e1YP3jPE0X0XybguxBspifgjD49uu3fDLYyjKFVwpif9Q==", + "dev": true, + "dependencies": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-select": ">=1.3.3", + "jquery": ">=1.7" + } + }, + "node_modules/daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/daterangepicker/-/daterangepicker-3.1.0.tgz", + "integrity": "sha512-DxWXvvPq4srWLCqFugqSV+6CBt/CvQ0dnpXhQ3gl0autcIDAruG1PuGG3gC7yPRNytAD1oU1AcUOzaYhOawhTw==", + "dev": true, + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/dropzone": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", + "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ekko-lightbox": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ekko-lightbox/-/ekko-lightbox-5.3.0.tgz", + "integrity": "sha512-mbacwySuVD3Ad6F2hTkjSTvJt59bcVv2l/TmBerp4xZnLak8tPtA4AScUn4DL42c1ksTiAO6sGhJZ52P/1Qgew==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "dev": true + }, + "node_modules/eve-raphael": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz", + "integrity": "sha512-jrxnPsCGqng1UZuEp9DecX/AuSyAszATSjf4oEcRxvfxa1Oux4KkIPKBAAWWnpdwfARtr+Q0o9aPYWjsROD7ug==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "node_modules/fastclick": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz", + "integrity": "sha512-cXyDBT4g0uWl/Xe75QspBDAgAWQ0lkPi/zgp6YFEUHj6WV6VIZl7R6TiDZhdOVU3W4ehp/8tG61Jev1jit+ztQ==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filterizr": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/filterizr/-/filterizr-2.2.4.tgz", + "integrity": "sha512-hqyEdg7RrvJMVFOeF0yysS75HP6jLu0wBSUtSPAc3BysAtHpwcXaPnR1kYp2uZtd3YXyhH6JRfF9+H4SRvrqXg==", + "dev": true, + "dependencies": { + "fast-memoize": "^2.5.1", + "imagesloaded": "^4.1.4" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flag-icon-css": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-3.5.0.tgz", + "integrity": "sha512-pgJnJLrtb0tcDgU1fzGaQXmR8h++nXvILJ+r5SmOXaaL/2pocunQo2a8TAXhjQnBpRLPtZ1KCz/TYpqeNuE2ew==", + "deprecated": "The project has been renamed to flag-icons", + "dev": true + }, + "node_modules/flot": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/flot/-/flot-4.2.2.tgz", + "integrity": "sha512-Strct/A27o0TA25X7Z0pxKhwK4djiP1Kjeqj0tkiqrkRu1qYPqfbp5BYuxEL8CWDNtj85Uc0PnG2E2plo1+VMg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontkit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", + "dev": true, + "dependencies": { + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", + "dfa": "^1.2.0", + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fullcalendar": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.0.tgz", + "integrity": "sha512-R3yQMKJtP6jWZ3o9fNB0WUOl6Oi+vus3ciLtt3eva7ISutkMm6nE4lA+xhfTS3OIevxVQOv0O646R6G8o7sMXA==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dev": true, + "dependencies": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/html-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/html-minifier-terser/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/icheck-bootstrap": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/icheck-bootstrap/-/icheck-bootstrap-3.0.1.tgz", + "integrity": "sha512-Rj3SybdcMcayhsP4IJ+hmCNgCKclaFcs/5zwCuLXH1WMo468NegjhZVxbSNKhEjJjnwc4gKETogUmPYSQ9lEZQ==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "dev": true, + "dependencies": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imagesloaded": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz", + "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==", + "dev": true, + "dependencies": { + "ev-emitter": "^1.0.0" + } + }, + "node_modules/img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/img-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/img-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inputmask": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/inputmask/-/inputmask-5.0.7.tgz", + "integrity": "sha512-rUxbRDS25KEib+c/Ow+K01oprU/+EK9t9SOPC8ov94/ftULGDqj1zOgRU/Hko6uzoKRMdwCfuhAafJ/Wk2wffQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ion-rangeslider": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ion-rangeslider/-/ion-rangeslider-2.3.1.tgz", + "integrity": "sha512-6V+24FD13/feliI485gnRHZYD9Ev64M5NAFTxnVib516ATHa9PlXQrC+nOiPngouRYTCLPJyokAJEi3e1Umi5g==", + "dev": true, + "peerDependencies": { + "jquery": ">=1.8" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/izitoast": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/izitoast/-/izitoast-1.4.0.tgz", + "integrity": "sha512-Oc1X2wiQtPp39i5VpIjf3GJf5sfCtHKXZ5szx7RareyEeFLUlcEW0FSfBni28+Ul6KNKZRKzhVuWzSP4Xngh0w==" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/jquery-knob-chif": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/jquery-knob-chif/-/jquery-knob-chif-1.2.13.tgz", + "integrity": "sha512-dveq9MZCr68bRrsziuRusKS+/ciT1yOOHdENOSTcXVRM9MsEyCK/DjqR9nc7V3on41269PFdDE2Fuib8Cw4jAA==", + "dev": true + }, + "node_modules/jquery-mapael": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jquery-mapael/-/jquery-mapael-2.2.0.tgz", + "integrity": "sha512-B5cVcCkfs7Ezia1Zs8bEfVacYD/GvaASyqQeidApR/NJ1C4igcExk9VULVsgLcTPkxohcZrrz5uCaPXvuKeZWw==", + "dev": true, + "dependencies": { + "jquery": "^3.0 || ^2.0 || ^1.0", + "raphael": "^2.2.0 || ^2.1.1" + }, + "optionalDependencies": { + "jquery-mousewheel": "^3.1" + }, + "peerDependencies": { + "jquery": "^3.0 || ^2.0 || ^1.0" + } + }, + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==", + "dev": true + }, + "node_modules/jquery-ui-dist": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.1.tgz", + "integrity": "sha512-Y711Pu4BRVrAlL58KSxX4ail74jaCJZaZcdNDLava+MgZeNwmVWmyYiK7KxyoJu1MB73eSunjJvYDbOuNrOA7w==", + "dev": true, + "dependencies": { + "jquery": ">=1.8.0 <4.0.0" + } + }, + "node_modules/jquery-validation": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.4.tgz", + "integrity": "sha512-PcwKcATCR+JL77m9kkWd84NAHAunJP9iasF6IbMxUgl73xDAimxjt5oYFmYHDXBmTZM4rpkXxMNR/jGI5TlSjA==", + "dev": true, + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1" + } + }, + "node_modules/jquery.nicescroll": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/jquery.nicescroll/-/jquery.nicescroll-3.7.6.tgz", + "integrity": "sha512-H4XOzQDw/fJIFftYGemNDAr9sz52zr35+JEubsTNGrTAtxQra4qnu6UnOe+avEHVPy8HnyoHgIpvPXedGSCfTw==", + "dependencies": { + "jquery": ">=1.8.3" + } + }, + "node_modules/jqvmap-novulnerability": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jqvmap-novulnerability/-/jqvmap-novulnerability-1.5.1.tgz", + "integrity": "sha512-O6Jr7AGiut9iNJMelPdy8pH83tNXadOqmhJm5FZy9gtaZ5uuhZK3VNu+YLFuTpXeZI8YXUvlFUYbJJi5XHA+tw==", + "dev": true, + "dependencies": { + "jquery": "^3.4.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jsgrid": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/jsgrid/-/jsgrid-1.5.3.tgz", + "integrity": "sha512-/BJgQp7gZe8o/VgNelwXc21jHc9HN+l7WPOkBhC9b9jPXFtOrU9ftNLPVBmKYCNlIulAbGTW8SDJI0mpw7uWxQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsrender": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/jsrender/-/jsrender-1.0.11.tgz", + "integrity": "sha512-1BFRSKCgO8T1o3QB16/CYqnxLVxgIdXnXBmZcyLQOlEwxVfktCHXcC7n2o9lziI//pKEc5QzI92vglvBnoddRw==", + "dependencies": { + "through2": "^3.0.1" + } + }, + "node_modules/jszip": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + }, + "bin": { + "laravel-mix": "bin/cli.js", + "mix": "bin/cli.js" + }, + "engines": { + "node": ">=12.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "postcss": "^8.3.11", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dev": true, + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dev": true, + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/overlayscrollbars": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz", + "integrity": "sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ==", + "dev": true + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pdfkit": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.12.3.tgz", + "integrity": "sha512-+qDLgm2yq6WOKcxTb43lDeo3EtMIDQs0CK1RNqhHC9iT6u0KOmgwAClkYh9xFw2ATbmUZzt4f7KMwDCOfPDluA==", + "dev": true, + "dependencies": { + "crypto-js": "^4.0.0", + "fontkit": "^1.8.1", + "linebreak": "^1.0.2", + "png-js": "^1.0.0" + } + }, + "node_modules/pdfmake": { + "version": "0.1.72", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.1.72.tgz", + "integrity": "sha512-xZrPS+Safjf1I8ZYtMoXX83E6C6Pd1zFwa168yNTeeJWHclqf1z9DoYajjlY2uviN7gGyxwVZeou39uSk1oh1g==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.2", + "linebreak": "^1.0.2", + "pdfkit": "^0.12.0", + "svg-to-pdfkit": "^0.1.8", + "xmldoc": "^1.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pdfmake/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", + "dev": true + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", + "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raphael": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/raphael/-/raphael-2.3.0.tgz", + "integrity": "sha512-w2yIenZAQnp257XUWGni4bLMVxpUpcIl7qgxEgDIXtmSypYtlNxfXWpOBxs7LBTps5sDwhRnrToJrMUrivqNTQ==", + "dev": true, + "dependencies": { + "eve-raphael": "0.5.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/resolve-url-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.36", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/resolve-url-loader/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/resolve-url-loader/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url-loader/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/resolve-url-loader/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/restructure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==", + "dev": true + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "dependencies": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + } + }, + "node_modules/rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "node_modules/rework/node_modules/convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", + "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/sass-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/sass-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/sass-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sparklines": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sparklines/-/sparklines-1.3.0.tgz", + "integrity": "sha512-CkFtpDE3hmOeu1IJyIQIOH0AQtHnPj1c61ALxJZQ9cPEFKDgWC1fcNAHuwPi1i1klTDYvlKKseoYHSwe7JmdLA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", + "dev": true + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/summernote": { + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/summernote/-/summernote-0.8.20.tgz", + "integrity": "sha512-W9RhjQjsn+b1s9xiJQgJbCiYGJaDAc9CdEqXo+D13WuStG8lCdtKaO5AiNiSSMJsQJN2EfGSwbBQt+SFE2B8Kw==", + "dev": true, + "hasInstallScript": true + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-to-pdfkit": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.8.tgz", + "integrity": "sha512-QItiGZBy5TstGy+q8mjQTMGRlDDOARXLxH+sgVm1n/LYeo0zFcQlcCh8m4zi8QxctrxB9Kue/lStc/RD5iLadQ==", + "dev": true, + "dependencies": { + "pdfkit": ">=0.8.1" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/sweetalert": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-1.1.3.tgz", + "integrity": "sha1-0sMepJKyK2qNiHrqFZiaI4/AhK4=" + }, + "node_modules/sweetalert2": { + "version": "11.10.8", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.8.tgz", + "integrity": "sha512-oAkYROBfXBY+4sVbQEIcN+ZxAx69lsmz5WEBwdEpyS4m59vOBNlRU5/fJpAI1MVfiDwFZiGwVzB/KBpOyfLNtg==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tempusdominus-bootstrap-4": { + "version": "5.39.2", + "resolved": "https://registry.npmjs.org/tempusdominus-bootstrap-4/-/tempusdominus-bootstrap-4-5.39.2.tgz", + "integrity": "sha512-8Au4miSAsMGdsElPg87EUmsN7aGJFaRA5Y8Ale7dDTfhhnQL1Za53LclIJkq+t/7NO5+Ufr1jY7tmEPvWGHaVg==", + "dev": true, + "dependencies": { + "bootstrap": "^4.6.1", + "jquery": "^3.6.0", + "moment": "^2.29.2", + "moment-timezone": "^0.5.34", + "popper.js": "^1.16.1" + }, + "peerDependencies": { + "bootstrap": ">=4.5.2", + "jquery": "^3.5.1", + "moment": "^2.29.0", + "moment-timezone": "^0.5.31", + "popper.js": "^1.16.1", + "tempusdominus-core": "5.19.3" + } + }, + "node_modules/tempusdominus-core": { + "version": "5.19.3", + "resolved": "https://registry.npmjs.org/tempusdominus-core/-/tempusdominus-core-5.19.3.tgz", + "integrity": "sha512-WXBVXcBG/hErB6u9gdUs+vzANvCU1kd1ykzL4kolPB3h1OEv20OKUW5qz1iynxyqRFPa1NWY9gwRu5d+MjXEuQ==", + "dev": true, + "peer": true, + "dependencies": { + "jquery": "^3.6.0", + "moment": "~2.29.2", + "moment-timezone": "^0.5.34" + }, + "peerDependencies": { + "jquery": "^3.0", + "moment": "^2.29.2", + "moment-timezone": "^0.5.0" + } + }, + "node_modules/terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", + "dev": true, + "dependencies": { + "jquery": ">=1.12.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-properties": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", + "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dev": true, + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uplot": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.20.tgz", + "integrity": "sha512-Jl4Z51Sns4xKLLQeBeiGdcgv4eW1UkKwukSTndIP3YcnlU4za9qGhejlX+XzRbvjaB32C0pxRsdq8m8Gwbq1Eg==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-style-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dev": true, + "dependencies": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + }, + "peerDependencies": { + "@types/webpack": ">4.41.31" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "dev": true, + "dependencies": { + "sax": "^1.2.1" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@lgaitan/pace-progress": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@lgaitan/pace-progress/-/pace-progress-1.0.7.tgz", + "integrity": "sha512-GMoTcF6WBpno7a7Iyx7M79os26d5bCDbh7YTZmXZM8YuLR3DDtwo0/CBYddStGD6QIBTieFDz4IAQiO0dAdRGw==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true + }, + "@swc/helpers": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.16.tgz", + "integrity": "sha512-xOhhpOruRcroQ0Nb5a5IgP94AJ0DuJnhEfXL+icJ1gn7uls5DXX2mRrlBqmrd0rAj/+/BRU8RB2VN8mA8DuFYQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@sweetalert2/theme-bootstrap-4": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@sweetalert2/theme-bootstrap-4/-/theme-bootstrap-4-4.0.5.tgz", + "integrity": "sha512-pe5mQ98sgrphNVq6Xe5BsWxsfI1Z8zT9C2oux6+4B6Qt30qYo58Q+bnzRs8pV95O9/URt/QJZyl+R8SabMeW6g==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@ttskch/select2-bootstrap4-theme": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@ttskch/select2-bootstrap4-theme/-/select2-bootstrap4-theme-1.5.2.tgz", + "integrity": "sha512-gAj8qNy/VYwQDBkACm0USM66kxFai8flX83ayRXPNhzZckEgSqIBB9sM74SCM3ssgeX+ZVy4BifTnLis+KpIyg==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "dev": true, + "requires": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dev": true, + "requires": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "adjust-sourcemap-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "admin-lte": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/admin-lte/-/admin-lte-3.1.0.tgz", + "integrity": "sha512-JkmmkjbGgB5RCPwpaUCEktpZz/Ez/vBdfCNx8J3u8doaRRUUV1/oj4PuIiOV+xrNMt05q87131xoGySr/eA4uA==", + "dev": true, + "requires": { + "@fortawesome/fontawesome-free": "^5.15.3", + "@lgaitan/pace-progress": "^1.0.7", + "@sweetalert2/theme-bootstrap-4": "^4.0.3", + "@ttskch/select2-bootstrap4-theme": "^1.5.2", + "bootstrap": "^4.6.0", + "bootstrap-colorpicker": "^3.2.0", + "bootstrap-slider": "^11.0.2", + "bootstrap-switch": "3.3.4", + "bootstrap4-duallistbox": "^4.0.2", + "bs-custom-file-input": "^1.3.4", + "bs-stepper": "^1.7.0", + "chart.js": "^2.9.4", + "codemirror": "^5.60.0", + "datatables.net": "^1.10.24", + "datatables.net-autofill-bs4": "^2.3.5", + "datatables.net-bs4": "^1.10.24", + "datatables.net-buttons-bs4": "^1.7.0", + "datatables.net-colreorder-bs4": "^1.5.3", + "datatables.net-fixedcolumns-bs4": "^3.3.2", + "datatables.net-fixedheader-bs4": "^3.1.8", + "datatables.net-keytable-bs4": "^2.6.1", + "datatables.net-responsive-bs4": "^2.2.7", + "datatables.net-rowgroup-bs4": "^1.1.2", + "datatables.net-rowreorder-bs4": "^1.2.7", + "datatables.net-scroller-bs4": "^2.0.3", + "datatables.net-searchbuilder-bs4": "^1.0.1", + "datatables.net-searchpanes-bs4": "^1.2.2", + "datatables.net-select-bs4": "^1.3.2", + "daterangepicker": "^3.1.0", + "dropzone": "^5.8.1", + "ekko-lightbox": "^5.3.0", + "fastclick": "^1.0.6", + "filterizr": "^2.2.4", + "flag-icon-css": "^3.5.0", + "flot": "^4.2.2", + "fs-extra": "^9.1.0", + "fullcalendar": "^5.5.1", + "icheck-bootstrap": "^3.0.1", + "inputmask": "^5.0.5", + "ion-rangeslider": "^2.3.1", + "jquery": "^3.6.0", + "jquery-knob-chif": "^1.2.13", + "jquery-mapael": "^2.2.0", + "jquery-mousewheel": "^3.1.13", + "jquery-ui-dist": "^1.12.1", + "jquery-validation": "^1.19.3", + "jqvmap-novulnerability": "^1.5.1", + "jsgrid": "^1.5.3", + "jszip": "^3.6.0", + "moment": "^2.29.1", + "overlayscrollbars": "^1.13.1", + "pdfmake": "^0.1.70", + "popper.js": "^1.16.1", + "raphael": "^2.3.0", + "select2": "^4.0.13", + "sparklines": "^1.3.0", + "summernote": "^0.8.18", + "sweetalert2": "^10.15.6", + "tempusdominus-bootstrap-4": "^5.39.0", + "toastr": "^2.1.4", + "uplot": "^1.6.7" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "sweetalert2": { + "version": "10.16.11", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.16.11.tgz", + "integrity": "sha512-Rdfabv2G89Tr8vmUTb1auWCYYesKBEWnkYPSi7XaiCIW0ZXXGK8Nw1wYKPEMLU6O8gMSMJe5m6MRKqMQsAQy9A==", + "dev": true + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootstrap": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "dev": true, + "requires": {} + }, + "bootstrap-colorpicker": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/bootstrap-colorpicker/-/bootstrap-colorpicker-3.4.0.tgz", + "integrity": "sha512-7vA0hvLrat3ptobEKlT9+6amzBUJcDAoh6hJRQY/AD+5dVZYXXf1ivRfrTwmuwiVLJo9rZwM8YB4lYzp6agzqg==", + "dev": true, + "requires": { + "bootstrap": ">=4.0", + "jquery": ">=2.2", + "popper.js": ">=1.10" + } + }, + "bootstrap-slider": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/bootstrap-slider/-/bootstrap-slider-11.0.2.tgz", + "integrity": "sha512-CdwS+Z6X79OkLes9RfDgPB9UIY/+81wTkm6ktdSB6hdyiRbjJLFQIjZdnEr55tDyXZfgC7U6yeSXkNN9ZdGqjA==", + "dev": true + }, + "bootstrap-switch": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/bootstrap-switch/-/bootstrap-switch-3.3.4.tgz", + "integrity": "sha512-7YQo+Ir6gCUqC36FFp1Zvec5dRF/+obq+1drMtdIMi9Xc84Kx63Evi0kdcp4HfiGsZpiz6IskyYDNlSKcxsL7w==", + "dev": true, + "requires": {} + }, + "bootstrap4-duallistbox": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bootstrap4-duallistbox/-/bootstrap4-duallistbox-4.0.2.tgz", + "integrity": "sha512-vQdANVE2NN0HMaZO9qWJy0C7u04uTpAmtUGO3KLq3xAZKCboJweQ437hDTszI6pbYV2olJCGZMbdhvIkBNGeGQ==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "brotli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", + "integrity": "sha512-K0HNa0RRpUpcF8yS4yNSd6vmkrvA+wRd+symIcwhfqGLAi7YgGlKfO4oDYVgiahiLGNviO9uY7Zlb1MCPeTmSA==", + "dev": true, + "requires": { + "base64-js": "^1.1.2" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, + "bs-custom-file-input": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-custom-file-input/-/bs-custom-file-input-1.3.4.tgz", + "integrity": "sha512-NBsQzTnef3OW1MvdKBbMHAYHssCd613MSeJV7z2McXznWtVMnJCy7Ckyc+PwxV6Pk16cu6YBcYWh/ZE0XWNKCA==", + "dev": true + }, + "bs-stepper": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/bs-stepper/-/bs-stepper-1.7.0.tgz", + "integrity": "sha512-+DX7UKKgw2GI6ucsSCRd19VHYrxf/8znRCLs1lQVVLxz+h7EqgIOxoHcJ0/QTaaNoR9Cwg78ydo6hXIasyd3LA==", + "dev": true + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001344", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", + "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, + "chart.js": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", + "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", + "dev": true, + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", + "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", + "dev": true, + "requires": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^1.9.3" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + } + } + }, + "chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "codemirror": { + "version": "5.65.5", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.5.tgz", + "integrity": "sha512-HNyhvGLnYz5c+kIsB9QKVitiZUevha3ovbIYaQiGzKo7ECSL/elWD9RXt3JgNr0NdnyqE9/Rc/7uLfkJQL638w==", + "dev": true + }, + "collect.js": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.33.0.tgz", + "integrity": "sha512-jEFD39H+09JyvjxwwHGX6Z7j+SB4OdXxHWG8Dus5eVQmwngWGNluRBQ2qS92K9MkRH+fjh91u1TGa31LIeBKhQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==", + "dev": true, + "requires": { + "commander": "^2.9.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.22.7", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.7.tgz", + "integrity": "sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.10.tgz", + "integrity": "sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.10", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz", + "integrity": "sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.5", + "postcss-merge-rules": "^5.1.2", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "datatables.net": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.12.1.tgz", + "integrity": "sha512-e6XAMUoV41JdQPS/r9YRfRcmTPcCVvyZbWI+xog1Zg+kjVliMQbEkvWK5XFItmi64Cvwg+IqsZbTUJ1KSY3umA==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-autofill": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-autofill/-/datatables.net-autofill-2.4.0.tgz", + "integrity": "sha512-qUUSXJv5rNx2TrAltq/RP/PK0UC/l5x3FMv9TEzeR4NYh0FCEeNlzdwz7QYWTi0nR+iW126SQbPAvkHVJdLEiA==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-autofill-bs4": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-autofill-bs4/-/datatables.net-autofill-bs4-2.4.0.tgz", + "integrity": "sha512-0NvmQvuxkFLUBe5/iRal+GGlWKMUJT36/jobiTeySaQabbIFqHgOZ6cgLHCKas6zq1x9LCMDI0SL5c19NZ893w==", + "dev": true, + "requires": { + "datatables.net-autofill": ">=2.3.7", + "datatables.net-bs4": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-bs4": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net-bs4/-/datatables.net-bs4-1.12.1.tgz", + "integrity": "sha512-LBeC8zUNVYyQT7ytC2lYqyXDn+k2kYpqvijC83oOjlcnEtb/8Tduzgquox5FrNKUJPcUrj9r+h5B0TDBbob/Gg==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-buttons": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-1.7.1.tgz", + "integrity": "sha512-D2OxZeR18jhSx+l0xcfAJzfUH7l3LHCu0e606fV7+v3hMhphOfljjZYLaiRmGiR9lqO/f5xE/w2a+OtG/QMavw==", + "dev": true, + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-buttons-bs4": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs4/-/datatables.net-buttons-bs4-1.7.1.tgz", + "integrity": "sha512-s+fwsgAAWp7mOKwuztPH06kaw2JNAJ71VNTw/TqGQTL6BK9FshweDKZSRIB/ePcc/Psiy8fhNEj3XHxx4OO6BA==", + "dev": true, + "requires": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-buttons": "1.7.1", + "jquery": ">=1.7" + } + }, + "datatables.net-colreorder": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder/-/datatables.net-colreorder-1.5.6.tgz", + "integrity": "sha512-TgPEQDIib2K4QsnX/Plk+eMS9ROL4idZvEqo6wvQrvksanERgxzcfwJuev4Yx8GRZ3+BwasXmFvtdSzvjWN3iQ==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-colreorder-bs4": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder-bs4/-/datatables.net-colreorder-bs4-1.5.6.tgz", + "integrity": "sha512-D4BPo/7EcHXPq+eA0NHYemnV2G1lf1VJklgYmWmSap6O1xgU9YhPARj5PgyeB9Sm3bCERoQugwzH2YDddgDe4g==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-colreorder": ">=1.5.4", + "jquery": ">=1.7" + } + }, + "datatables.net-dt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/datatables.net-dt/-/datatables.net-dt-1.12.1.tgz", + "integrity": "sha512-HYsHbSYqOqlgsgjKMH/kkCB5455t51GmmtXRxgnDMRbjPLEIKo5CZmAlUe5mdD/RVPRtAUaj5K3SDlkEZ1bUmw==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedcolumns": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns/-/datatables.net-fixedcolumns-3.3.3.tgz", + "integrity": "sha512-xo6MeI2xc/Ufk4ffrpao+OiPo8/GPB8cO80gA6NFgYBVw6eP9pPa2NsV+gSWRVr7d3A8iZC7mUZT5WdtliNHEA==", + "dev": true, + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedcolumns-bs4": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns-bs4/-/datatables.net-fixedcolumns-bs4-3.3.3.tgz", + "integrity": "sha512-d0dqCYk93wnCT382hW2Y1YMwgJXpTfdTu3Tb+UKQvt7OApxKYuWUFfKde+wHtIhqodswZ1jrMfYmxZHJYAysZQ==", + "dev": true, + "requires": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-fixedcolumns": "3.3.3", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedheader": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader/-/datatables.net-fixedheader-3.2.3.tgz", + "integrity": "sha512-z+YOTgKquPqXREiATuH8yAGZcpRRZQW+I2NVu5H/+rnIYO1CJIi63hQD/nnv51J7RaTXSUk1OQtriN/VUs4YMQ==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedheader-bs4": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader-bs4/-/datatables.net-fixedheader-bs4-3.2.3.tgz", + "integrity": "sha512-aTvNTcyHPNetwQZzvH7G8uXkE9EtrIOnIz4daHDwq3Uh3QvHcJfQMNLZUHe0PgrEeUXZVEUhrJpoi1je9lVAXw==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-fixedheader": ">=3.2.0", + "jquery": ">=1.7" + } + }, + "datatables.net-keytable": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/datatables.net-keytable/-/datatables.net-keytable-2.7.0.tgz", + "integrity": "sha512-U/+frQ0bSk0VeKuRy2h4FQfrbTYaQHpWLCylcEHYDzDZ9/cR0spHD+mVUJy22oAMvfHa9py73D/e4LD09uxHNg==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-keytable-bs4": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/datatables.net-keytable-bs4/-/datatables.net-keytable-bs4-2.7.0.tgz", + "integrity": "sha512-1Bxw2sPjOVscTr2sZg5AMJ2hJK7921XhK3Mqrz7bO7ZCwpf/u7tna8d3ZeeTy45qp28zAQARE5BLXht5W/tN4g==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-keytable": ">=2.6.4", + "jquery": ">=1.7" + } + }, + "datatables.net-responsive": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.3.0.tgz", + "integrity": "sha512-QA5QsD1sJQRQ7/IFi3rSd33O84f/Augz2KnaehjfuEANtK4KeC9Lbkut5tPuuMcK4jOpQPOOPYTbmfrt+tfh9w==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-responsive-bs4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs4/-/datatables.net-responsive-bs4-2.3.0.tgz", + "integrity": "sha512-6ZeFeM6PHh3A5BodxUvHU1ipIrMYMbBcOgB3BfXMHxr4maS96RIQdTmXK3owJ5sy88dF68V8fjkquvybS7kwvw==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-responsive": ">=2.2.9", + "jquery": ">=1.7" + } + }, + "datatables.net-rowgroup": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup/-/datatables.net-rowgroup-1.2.0.tgz", + "integrity": "sha512-YQWL9Z70/XqBQK5YkBk/BhnmgQ1jux0ntHGpi+PYgeHEzS5lM1/oMoJEKiqIT02mVbUQOUE3z7t6rLSA0JbdvQ==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-rowgroup-bs4": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup-bs4/-/datatables.net-rowgroup-bs4-1.2.0.tgz", + "integrity": "sha512-sALXn7+VdMBC1TNWXbHNAiKCUSIwexO2frpxt/RBenJXR6DzmDuHLFaKJPEeeMtPJdBaxN1yc7J/GNwV+188Fw==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-rowgroup": ">=1.1.3", + "jquery": ">=1.7" + } + }, + "datatables.net-rowreorder": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder/-/datatables.net-rowreorder-1.2.8.tgz", + "integrity": "sha512-gFNKMa5DtigbjhSs96ZKT3uICC1z87EuLUIYLVPEXHc7v/WVOiQ3AaRvIQtExORPi/jQzxEoO5wO9UGZ0ldsUQ==", + "dev": true, + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-rowreorder-bs4": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder-bs4/-/datatables.net-rowreorder-bs4-1.2.8.tgz", + "integrity": "sha512-9J36fc/Ywdy9o5SkX+ZLMXYwcKGC+wa1RAiNRFywxT3u5nBrLvcDlOnYLBNae5XO1wBr/3jbj9ka/ZWyd9hnVg==", + "dev": true, + "requires": { + "datatables.net-bs4": "^1.10.15", + "datatables.net-rowreorder": "1.2.8", + "jquery": ">=1.7" + } + }, + "datatables.net-scroller": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/datatables.net-scroller/-/datatables.net-scroller-2.0.6.tgz", + "integrity": "sha512-isFFxocRU19jrQITvyLzh4zODbYNZtxFtfLlUGyE3x+0Nyq6Hu7JOsWiVPhqf9Jo2I8Yt5MecqICaZ3DEfggZA==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-scroller-bs4": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/datatables.net-scroller-bs4/-/datatables.net-scroller-bs4-2.0.6.tgz", + "integrity": "sha512-RbcwSNOG9Oo2BZI4xzey3ndCglkmEHSW+wIyZAYXcttdqUGyXFx6t7qiGzm+VnAyqZ9aU3oGfJ+nl7QnJeVQTA==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-scroller": ">=2.0.5", + "jquery": ">=1.7" + } + }, + "datatables.net-searchbuilder": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-searchbuilder/-/datatables.net-searchbuilder-1.3.3.tgz", + "integrity": "sha512-EgraZhrLk0RcUjeSiF1yeQa+7eoleQAOz9vhFKuJ5G9n2H+q7JKK3D8bHlNQLwX60pAzXDTD39b4KhFOj0FO4Q==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-searchbuilder-bs4": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-searchbuilder-bs4/-/datatables.net-searchbuilder-bs4-1.3.3.tgz", + "integrity": "sha512-/+Ecw6kzYyDNg9ZtsgopJfssRca6hFxc1qvdrnbsU71dHYjUFvUJOedDJtdmTjyZ3EH/GmxoJR7rCyjcyW2Tew==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-searchbuilder": ">=1.2.2", + "jquery": ">=1.7" + } + }, + "datatables.net-searchpanes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/datatables.net-searchpanes/-/datatables.net-searchpanes-2.0.1.tgz", + "integrity": "sha512-NZ4tj4NNEe8+RxaQVAOEuyCiVWiI0uGke1jXUlCFdrKUq+XecZIauf+Bf3HMeNEL4G/6I7wXqJ9LY6mGpna4zQ==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-searchpanes-bs4": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-searchpanes-bs4/-/datatables.net-searchpanes-bs4-1.4.0.tgz", + "integrity": "sha512-Floxzmw2cQkUQdI7Vv4IWtLqLmwPrmY6MPncbEWq4YvkSeaZW7OHzSmZLLUjMn2P6Huvz59WUVcwL0lSDui6GQ==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.10.25", + "datatables.net-searchpanes": ">=1.3.0", + "jquery": ">=1.7" + } + }, + "datatables.net-select": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-1.4.0.tgz", + "integrity": "sha512-CWEIpODzKXupZOx5KdPUnX5pDPO0xLrCxezE1MNktolFSz0duMw1w3ae25cEynP+w8wkaXbRfCiyGeBXx1YIvw==", + "dev": true, + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-select-bs4": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/datatables.net-select-bs4/-/datatables.net-select-bs4-1.4.0.tgz", + "integrity": "sha512-5DWRyKo+YwX+J8CHbvexbipam/7tqZXp0R/1Ayrk7e1YP3jPE0X0XybguxBspifgjD49uu3fDLYyjKFVwpif9Q==", + "dev": true, + "requires": { + "datatables.net-bs4": ">=1.11.3", + "datatables.net-select": ">=1.3.3", + "jquery": ">=1.7" + } + }, + "daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/daterangepicker/-/daterangepicker-3.1.0.tgz", + "integrity": "sha512-DxWXvvPq4srWLCqFugqSV+6CBt/CvQ0dnpXhQ3gl0autcIDAruG1PuGG3gC7yPRNytAD1oU1AcUOzaYhOawhTw==", + "dev": true, + "requires": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "deep-equal": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dropzone": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", + "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ekko-lightbox": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ekko-lightbox/-/ekko-lightbox-5.3.0.tgz", + "integrity": "sha512-mbacwySuVD3Ad6F2hTkjSTvJt59bcVv2l/TmBerp4xZnLak8tPtA4AScUn4DL42c1ksTiAO6sGhJZ52P/1Qgew==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.141", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", + "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.61", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", + "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==", + "dev": true + }, + "eve-raphael": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eve-raphael/-/eve-raphael-0.5.0.tgz", + "integrity": "sha512-jrxnPsCGqng1UZuEp9DecX/AuSyAszATSjf4oEcRxvfxa1Oux4KkIPKBAAWWnpdwfARtr+Q0o9aPYWjsROD7ug==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dev": true, + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true + }, + "fastclick": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz", + "integrity": "sha512-cXyDBT4g0uWl/Xe75QspBDAgAWQ0lkPi/zgp6YFEUHj6WV6VIZl7R6TiDZhdOVU3W4ehp/8tG61Jev1jit+ztQ==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filterizr": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/filterizr/-/filterizr-2.2.4.tgz", + "integrity": "sha512-hqyEdg7RrvJMVFOeF0yysS75HP6jLu0wBSUtSPAc3BysAtHpwcXaPnR1kYp2uZtd3YXyhH6JRfF9+H4SRvrqXg==", + "dev": true, + "requires": { + "fast-memoize": "^2.5.1", + "imagesloaded": "^4.1.4" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flag-icon-css": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/flag-icon-css/-/flag-icon-css-3.5.0.tgz", + "integrity": "sha512-pgJnJLrtb0tcDgU1fzGaQXmR8h++nXvILJ+r5SmOXaaL/2pocunQo2a8TAXhjQnBpRLPtZ1KCz/TYpqeNuE2ew==", + "dev": true + }, + "flot": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/flot/-/flot-4.2.2.tgz", + "integrity": "sha512-Strct/A27o0TA25X7Z0pxKhwK4djiP1Kjeqj0tkiqrkRu1qYPqfbp5BYuxEL8CWDNtj85Uc0PnG2E2plo1+VMg==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "fontkit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz", + "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==", + "dev": true, + "requires": { + "@swc/helpers": "^0.3.13", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "deep-equal": "^2.0.5", + "dfa": "^1.2.0", + "restructure": "^2.0.1", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.3.1", + "unicode-trie": "^2.0.0" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fullcalendar": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.0.tgz", + "integrity": "sha512-R3yQMKJtP6jWZ3o9fNB0WUOl6Oi+vus3ciLtt3eva7ISutkMm6nE4lA+xhfTS3OIevxVQOv0O646R6G8o7sMXA==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dev": true, + "requires": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "icheck-bootstrap": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/icheck-bootstrap/-/icheck-bootstrap-3.0.1.tgz", + "integrity": "sha512-Rj3SybdcMcayhsP4IJ+hmCNgCKclaFcs/5zwCuLXH1WMo468NegjhZVxbSNKhEjJjnwc4gKETogUmPYSQ9lEZQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "dev": true, + "requires": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + } + }, + "imagesloaded": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.4.tgz", + "integrity": "sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==", + "dev": true, + "requires": { + "ev-emitter": "^1.0.0" + } + }, + "img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inputmask": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/inputmask/-/inputmask-5.0.7.tgz", + "integrity": "sha512-rUxbRDS25KEib+c/Ow+K01oprU/+EK9t9SOPC8ov94/ftULGDqj1zOgRU/Hko6uzoKRMdwCfuhAafJ/Wk2wffQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ion-rangeslider": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ion-rangeslider/-/ion-rangeslider-2.3.1.tgz", + "integrity": "sha512-6V+24FD13/feliI485gnRHZYD9Ev64M5NAFTxnVib516ATHa9PlXQrC+nOiPngouRYTCLPJyokAJEi3e1Umi5g==", + "dev": true, + "requires": {} + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0" + } + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "izitoast": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/izitoast/-/izitoast-1.4.0.tgz", + "integrity": "sha512-Oc1X2wiQtPp39i5VpIjf3GJf5sfCtHKXZ5szx7RareyEeFLUlcEW0FSfBni28+Ul6KNKZRKzhVuWzSP4Xngh0w==" + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "jquery-knob-chif": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/jquery-knob-chif/-/jquery-knob-chif-1.2.13.tgz", + "integrity": "sha512-dveq9MZCr68bRrsziuRusKS+/ciT1yOOHdENOSTcXVRM9MsEyCK/DjqR9nc7V3on41269PFdDE2Fuib8Cw4jAA==", + "dev": true + }, + "jquery-mapael": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jquery-mapael/-/jquery-mapael-2.2.0.tgz", + "integrity": "sha512-B5cVcCkfs7Ezia1Zs8bEfVacYD/GvaASyqQeidApR/NJ1C4igcExk9VULVsgLcTPkxohcZrrz5uCaPXvuKeZWw==", + "dev": true, + "requires": { + "jquery": "^3.0 || ^2.0 || ^1.0", + "jquery-mousewheel": "^3.1", + "raphael": "^2.2.0 || ^2.1.1" + } + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==", + "dev": true + }, + "jquery-ui-dist": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.1.tgz", + "integrity": "sha512-Y711Pu4BRVrAlL58KSxX4ail74jaCJZaZcdNDLava+MgZeNwmVWmyYiK7KxyoJu1MB73eSunjJvYDbOuNrOA7w==", + "dev": true, + "requires": { + "jquery": ">=1.8.0 <4.0.0" + } + }, + "jquery-validation": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.4.tgz", + "integrity": "sha512-PcwKcATCR+JL77m9kkWd84NAHAunJP9iasF6IbMxUgl73xDAimxjt5oYFmYHDXBmTZM4rpkXxMNR/jGI5TlSjA==", + "dev": true, + "requires": {} + }, + "jquery.nicescroll": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/jquery.nicescroll/-/jquery.nicescroll-3.7.6.tgz", + "integrity": "sha512-H4XOzQDw/fJIFftYGemNDAr9sz52zr35+JEubsTNGrTAtxQra4qnu6UnOe+avEHVPy8HnyoHgIpvPXedGSCfTw==", + "requires": { + "jquery": ">=1.8.3" + } + }, + "jqvmap-novulnerability": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jqvmap-novulnerability/-/jqvmap-novulnerability-1.5.1.tgz", + "integrity": "sha512-O6Jr7AGiut9iNJMelPdy8pH83tNXadOqmhJm5FZy9gtaZ5uuhZK3VNu+YLFuTpXeZI8YXUvlFUYbJJi5XHA+tw==", + "dev": true, + "requires": { + "jquery": "^3.4.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "jsgrid": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/jsgrid/-/jsgrid-1.5.3.tgz", + "integrity": "sha512-/BJgQp7gZe8o/VgNelwXc21jHc9HN+l7WPOkBhC9b9jPXFtOrU9ftNLPVBmKYCNlIulAbGTW8SDJI0mpw7uWxQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsrender": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/jsrender/-/jsrender-1.0.11.tgz", + "integrity": "sha512-1BFRSKCgO8T1o3QB16/CYqnxLVxgIdXnXBmZcyLQOlEwxVfktCHXcC7n2o9lziI//pKEc5QzI92vglvBnoddRw==", + "requires": { + "through2": "^3.0.1" + } + }, + "jszip": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz", + "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "dev": true, + "requires": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + }, + "dependencies": { + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "dev": true + } + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", + "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "dev": true + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dev": true, + "requires": { + "moment": ">= 2.9.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "overlayscrollbars": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz", + "integrity": "sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pdfkit": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.12.3.tgz", + "integrity": "sha512-+qDLgm2yq6WOKcxTb43lDeo3EtMIDQs0CK1RNqhHC9iT6u0KOmgwAClkYh9xFw2ATbmUZzt4f7KMwDCOfPDluA==", + "dev": true, + "requires": { + "crypto-js": "^4.0.0", + "fontkit": "^1.8.1", + "linebreak": "^1.0.2", + "png-js": "^1.0.0" + } + }, + "pdfmake": { + "version": "0.1.72", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.1.72.tgz", + "integrity": "sha512-xZrPS+Safjf1I8ZYtMoXX83E6C6Pd1zFwa168yNTeeJWHclqf1z9DoYajjlY2uviN7gGyxwVZeou39uSk1oh1g==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2", + "linebreak": "^1.0.2", + "pdfkit": "^0.12.0", + "svg-to-pdfkit": "^0.1.8", + "xmldoc": "^1.1.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", + "dev": true + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-merge-longhand": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", + "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "optional": true + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raphael": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/raphael/-/raphael-2.3.0.tgz", + "integrity": "sha512-w2yIenZAQnp257XUWGni4bLMVxpUpcIl7qgxEgDIXtmSypYtlNxfXWpOBxs7LBTps5sDwhRnrToJrMUrivqNTQ==", + "dev": true, + "requires": { + "eve-raphael": "0.5.0" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.36", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restructure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz", + "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==", + "dev": true + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", + "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sparklines": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sparklines/-/sparklines-1.3.0.tgz", + "integrity": "sha512-CkFtpDE3hmOeu1IJyIQIOH0AQtHnPj1c61ALxJZQ9cPEFKDgWC1fcNAHuwPi1i1klTDYvlKKseoYHSwe7JmdLA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "summernote": { + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/summernote/-/summernote-0.8.20.tgz", + "integrity": "sha512-W9RhjQjsn+b1s9xiJQgJbCiYGJaDAc9CdEqXo+D13WuStG8lCdtKaO5AiNiSSMJsQJN2EfGSwbBQt+SFE2B8Kw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-to-pdfkit": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/svg-to-pdfkit/-/svg-to-pdfkit-0.1.8.tgz", + "integrity": "sha512-QItiGZBy5TstGy+q8mjQTMGRlDDOARXLxH+sgVm1n/LYeo0zFcQlcCh8m4zi8QxctrxB9Kue/lStc/RD5iLadQ==", + "dev": true, + "requires": { + "pdfkit": ">=0.8.1" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "sweetalert": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-1.1.3.tgz", + "integrity": "sha1-0sMepJKyK2qNiHrqFZiaI4/AhK4=" + }, + "sweetalert2": { + "version": "11.10.8", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.8.tgz", + "integrity": "sha512-oAkYROBfXBY+4sVbQEIcN+ZxAx69lsmz5WEBwdEpyS4m59vOBNlRU5/fJpAI1MVfiDwFZiGwVzB/KBpOyfLNtg==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tempusdominus-bootstrap-4": { + "version": "5.39.2", + "resolved": "https://registry.npmjs.org/tempusdominus-bootstrap-4/-/tempusdominus-bootstrap-4-5.39.2.tgz", + "integrity": "sha512-8Au4miSAsMGdsElPg87EUmsN7aGJFaRA5Y8Ale7dDTfhhnQL1Za53LclIJkq+t/7NO5+Ufr1jY7tmEPvWGHaVg==", + "dev": true, + "requires": { + "bootstrap": "^4.6.1", + "jquery": "^3.6.0", + "moment": "^2.29.2", + "moment-timezone": "^0.5.34", + "popper.js": "^1.16.1" + } + }, + "tempusdominus-core": { + "version": "5.19.3", + "resolved": "https://registry.npmjs.org/tempusdominus-core/-/tempusdominus-core-5.19.3.tgz", + "integrity": "sha512-WXBVXcBG/hErB6u9gdUs+vzANvCU1kd1ykzL4kolPB3h1OEv20OKUW5qz1iynxyqRFPa1NWY9gwRu5d+MjXEuQ==", + "dev": true, + "peer": true, + "requires": { + "jquery": "^3.6.0", + "moment": "~2.29.2", + "moment-timezone": "^0.5.34" + } + }, + "terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", + "dev": true, + "requires": { + "jquery": ">=1.12.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-properties": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", + "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", + "dev": true, + "requires": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + } + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uplot": { + "version": "1.6.20", + "resolved": "https://registry.npmjs.org/uplot/-/uplot-1.6.20.tgz", + "integrity": "sha512-Jl4Z51Sns4xKLLQeBeiGdcgv4eW1UkKwukSTndIP3YcnlU4za9qGhejlX+XzRbvjaB32C0pxRsdq8m8Gwbq1Eg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dev": true, + "requires": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.9" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", + "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", + "dev": true, + "requires": {} + }, + "xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "dev": true, + "requires": { + "sax": "^1.2.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } + } +} diff --git a/Penilaian-Esai/package.json b/Penilaian-Esai/package.json new file mode 100644 index 0000000..23ff7ef --- /dev/null +++ b/Penilaian-Esai/package.json @@ -0,0 +1,44 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "@popperjs/core": "^2.10.2", + "admin-lte": "3.1.0", + "axios": "^0.25", + "bootstrap": "^4.6.0", + "jquery": "^3.6", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "popper.js": "^1.16.1", + "postcss": "^8.1.14", + "resolve-url-loader": "^3.1.2", + "sass": "^1.15.2", + "sass-loader": "^8.0.0", + "vue": "^2.6.12", + "vue-loader": "^15.9.8", + "vue-template-compiler": "^2.6.12" + }, + "dependencies": { + "@fortawesome/fontawesome-free": "^5.13.1", + "bootstrap": "^4.0.0", + "datatables.net-dt": "^1.10.21", + "izitoast": "^1.4.0", + "jquery": "^3.2", + "jquery.nicescroll": "^3.7.6", + "jsrender": "^1.0.5", + "popper.js": "^1.12", + "select2": "^4.0.13", + "sweetalert": "^1.1.3", + "sweetalert2": "^11.10.8", + "vue": "^2.5.17", + "vue-template-compiler": "^2.6.12" + } +} diff --git a/Penilaian-Esai/phpunit.xml b/Penilaian-Esai/phpunit.xml new file mode 100644 index 0000000..2ac86a1 --- /dev/null +++ b/Penilaian-Esai/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/Penilaian-Esai/public/.htaccess b/Penilaian-Esai/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/Penilaian-Esai/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.css new file mode 100644 index 0000000..d9ade75 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.css @@ -0,0 +1,4616 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, +.fas, +.far, +.fal, +.fad, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-flip-both { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-acquisitions-incorporated:before { + content: "\f6af"; } + +.fa-ad:before { + content: "\f641"; } + +.fa-address-book:before { + content: "\f2b9"; } + +.fa-address-card:before { + content: "\f2bb"; } + +.fa-adjust:before { + content: "\f042"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-air-freshener:before { + content: "\f5d0"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-align-center:before { + content: "\f037"; } + +.fa-align-justify:before { + content: "\f039"; } + +.fa-align-left:before { + content: "\f036"; } + +.fa-align-right:before { + content: "\f038"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-allergies:before { + content: "\f461"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-ambulance:before { + content: "\f0f9"; } + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-anchor:before { + content: "\f13d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angle-double-down:before { + content: "\f103"; } + +.fa-angle-double-left:before { + content: "\f100"; } + +.fa-angle-double-right:before { + content: "\f101"; } + +.fa-angle-double-up:before { + content: "\f102"; } + +.fa-angle-down:before { + content: "\f107"; } + +.fa-angle-left:before { + content: "\f104"; } + +.fa-angle-right:before { + content: "\f105"; } + +.fa-angle-up:before { + content: "\f106"; } + +.fa-angry:before { + content: "\f556"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-ankh:before { + content: "\f644"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-alt:before { + content: "\f5d1"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-archive:before { + content: "\f187"; } + +.fa-archway:before { + content: "\f557"; } + +.fa-arrow-alt-circle-down:before { + content: "\f358"; } + +.fa-arrow-alt-circle-left:before { + content: "\f359"; } + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; } + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; } + +.fa-arrow-circle-down:before { + content: "\f0ab"; } + +.fa-arrow-circle-left:before { + content: "\f0a8"; } + +.fa-arrow-circle-right:before { + content: "\f0a9"; } + +.fa-arrow-circle-up:before { + content: "\f0aa"; } + +.fa-arrow-down:before { + content: "\f063"; } + +.fa-arrow-left:before { + content: "\f060"; } + +.fa-arrow-right:before { + content: "\f061"; } + +.fa-arrow-up:before { + content: "\f062"; } + +.fa-arrows-alt:before { + content: "\f0b2"; } + +.fa-arrows-alt-h:before { + content: "\f337"; } + +.fa-arrows-alt-v:before { + content: "\f338"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-assistive-listening-systems:before { + content: "\f2a2"; } + +.fa-asterisk:before { + content: "\f069"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-at:before { + content: "\f1fa"; } + +.fa-atlas:before { + content: "\f558"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-atom:before { + content: "\f5d2"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-audio-description:before { + content: "\f29e"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-award:before { + content: "\f559"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-baby:before { + content: "\f77c"; } + +.fa-baby-carriage:before { + content: "\f77d"; } + +.fa-backspace:before { + content: "\f55a"; } + +.fa-backward:before { + content: "\f04a"; } + +.fa-bacon:before { + content: "\f7e5"; } + +.fa-bacteria:before { + content: "\e059"; } + +.fa-bacterium:before { + content: "\e05a"; } + +.fa-bahai:before { + content: "\f666"; } + +.fa-balance-scale:before { + content: "\f24e"; } + +.fa-balance-scale-left:before { + content: "\f515"; } + +.fa-balance-scale-right:before { + content: "\f516"; } + +.fa-ban:before { + content: "\f05e"; } + +.fa-band-aid:before { + content: "\f462"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-barcode:before { + content: "\f02a"; } + +.fa-bars:before { + content: "\f0c9"; } + +.fa-baseball-ball:before { + content: "\f433"; } + +.fa-basketball-ball:before { + content: "\f434"; } + +.fa-bath:before { + content: "\f2cd"; } + +.fa-battery-empty:before { + content: "\f244"; } + +.fa-battery-full:before { + content: "\f240"; } + +.fa-battery-half:before { + content: "\f242"; } + +.fa-battery-quarter:before { + content: "\f243"; } + +.fa-battery-three-quarters:before { + content: "\f241"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-bed:before { + content: "\f236"; } + +.fa-beer:before { + content: "\f0fc"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bell:before { + content: "\f0f3"; } + +.fa-bell-slash:before { + content: "\f1f6"; } + +.fa-bezier-curve:before { + content: "\f55b"; } + +.fa-bible:before { + content: "\f647"; } + +.fa-bicycle:before { + content: "\f206"; } + +.fa-biking:before { + content: "\f84a"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-binoculars:before { + content: "\f1e5"; } + +.fa-biohazard:before { + content: "\f780"; } + +.fa-birthday-cake:before { + content: "\f1fd"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blender:before { + content: "\f517"; } + +.fa-blender-phone:before { + content: "\f6b6"; } + +.fa-blind:before { + content: "\f29d"; } + +.fa-blog:before { + content: "\f781"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bold:before { + content: "\f032"; } + +.fa-bolt:before { + content: "\f0e7"; } + +.fa-bomb:before { + content: "\f1e2"; } + +.fa-bone:before { + content: "\f5d7"; } + +.fa-bong:before { + content: "\f55c"; } + +.fa-book:before { + content: "\f02d"; } + +.fa-book-dead:before { + content: "\f6b7"; } + +.fa-book-medical:before { + content: "\f7e6"; } + +.fa-book-open:before { + content: "\f518"; } + +.fa-book-reader:before { + content: "\f5da"; } + +.fa-bookmark:before { + content: "\f02e"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-border-all:before { + content: "\f84c"; } + +.fa-border-none:before { + content: "\f850"; } + +.fa-border-style:before { + content: "\f853"; } + +.fa-bowling-ball:before { + content: "\f436"; } + +.fa-box:before { + content: "\f466"; } + +.fa-box-open:before { + content: "\f49e"; } + +.fa-box-tissue:before { + content: "\e05b"; } + +.fa-boxes:before { + content: "\f468"; } + +.fa-braille:before { + content: "\f2a1"; } + +.fa-brain:before { + content: "\f5dc"; } + +.fa-bread-slice:before { + content: "\f7ec"; } + +.fa-briefcase:before { + content: "\f0b1"; } + +.fa-briefcase-medical:before { + content: "\f469"; } + +.fa-broadcast-tower:before { + content: "\f519"; } + +.fa-broom:before { + content: "\f51a"; } + +.fa-brush:before { + content: "\f55d"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-bug:before { + content: "\f188"; } + +.fa-building:before { + content: "\f1ad"; } + +.fa-bullhorn:before { + content: "\f0a1"; } + +.fa-bullseye:before { + content: "\f140"; } + +.fa-burn:before { + content: "\f46a"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-bus:before { + content: "\f207"; } + +.fa-bus-alt:before { + content: "\f55e"; } + +.fa-business-time:before { + content: "\f64a"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-calculator:before { + content: "\f1ec"; } + +.fa-calendar:before { + content: "\f133"; } + +.fa-calendar-alt:before { + content: "\f073"; } + +.fa-calendar-check:before { + content: "\f274"; } + +.fa-calendar-day:before { + content: "\f783"; } + +.fa-calendar-minus:before { + content: "\f272"; } + +.fa-calendar-plus:before { + content: "\f271"; } + +.fa-calendar-times:before { + content: "\f273"; } + +.fa-calendar-week:before { + content: "\f784"; } + +.fa-camera:before { + content: "\f030"; } + +.fa-camera-retro:before { + content: "\f083"; } + +.fa-campground:before { + content: "\f6bb"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-candy-cane:before { + content: "\f786"; } + +.fa-cannabis:before { + content: "\f55f"; } + +.fa-capsules:before { + content: "\f46b"; } + +.fa-car:before { + content: "\f1b9"; } + +.fa-car-alt:before { + content: "\f5de"; } + +.fa-car-battery:before { + content: "\f5df"; } + +.fa-car-crash:before { + content: "\f5e1"; } + +.fa-car-side:before { + content: "\f5e4"; } + +.fa-caravan:before { + content: "\f8ff"; } + +.fa-caret-down:before { + content: "\f0d7"; } + +.fa-caret-left:before { + content: "\f0d9"; } + +.fa-caret-right:before { + content: "\f0da"; } + +.fa-caret-square-down:before { + content: "\f150"; } + +.fa-caret-square-left:before { + content: "\f191"; } + +.fa-caret-square-right:before { + content: "\f152"; } + +.fa-caret-square-up:before { + content: "\f151"; } + +.fa-caret-up:before { + content: "\f0d8"; } + +.fa-carrot:before { + content: "\f787"; } + +.fa-cart-arrow-down:before { + content: "\f218"; } + +.fa-cart-plus:before { + content: "\f217"; } + +.fa-cash-register:before { + content: "\f788"; } + +.fa-cat:before { + content: "\f6be"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-certificate:before { + content: "\f0a3"; } + +.fa-chair:before { + content: "\f6c0"; } + +.fa-chalkboard:before { + content: "\f51b"; } + +.fa-chalkboard-teacher:before { + content: "\f51c"; } + +.fa-charging-station:before { + content: "\f5e7"; } + +.fa-chart-area:before { + content: "\f1fe"; } + +.fa-chart-bar:before { + content: "\f080"; } + +.fa-chart-line:before { + content: "\f201"; } + +.fa-chart-pie:before { + content: "\f200"; } + +.fa-check:before { + content: "\f00c"; } + +.fa-check-circle:before { + content: "\f058"; } + +.fa-check-double:before { + content: "\f560"; } + +.fa-check-square:before { + content: "\f14a"; } + +.fa-cheese:before { + content: "\f7ef"; } + +.fa-chess:before { + content: "\f439"; } + +.fa-chess-bishop:before { + content: "\f43a"; } + +.fa-chess-board:before { + content: "\f43c"; } + +.fa-chess-king:before { + content: "\f43f"; } + +.fa-chess-knight:before { + content: "\f441"; } + +.fa-chess-pawn:before { + content: "\f443"; } + +.fa-chess-queen:before { + content: "\f445"; } + +.fa-chess-rook:before { + content: "\f447"; } + +.fa-chevron-circle-down:before { + content: "\f13a"; } + +.fa-chevron-circle-left:before { + content: "\f137"; } + +.fa-chevron-circle-right:before { + content: "\f138"; } + +.fa-chevron-circle-up:before { + content: "\f139"; } + +.fa-chevron-down:before { + content: "\f078"; } + +.fa-chevron-left:before { + content: "\f053"; } + +.fa-chevron-right:before { + content: "\f054"; } + +.fa-chevron-up:before { + content: "\f077"; } + +.fa-child:before { + content: "\f1ae"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-church:before { + content: "\f51d"; } + +.fa-circle:before { + content: "\f111"; } + +.fa-circle-notch:before { + content: "\f1ce"; } + +.fa-city:before { + content: "\f64f"; } + +.fa-clinic-medical:before { + content: "\f7f2"; } + +.fa-clipboard:before { + content: "\f328"; } + +.fa-clipboard-check:before { + content: "\f46c"; } + +.fa-clipboard-list:before { + content: "\f46d"; } + +.fa-clock:before { + content: "\f017"; } + +.fa-clone:before { + content: "\f24d"; } + +.fa-closed-captioning:before { + content: "\f20a"; } + +.fa-cloud:before { + content: "\f0c2"; } + +.fa-cloud-download-alt:before { + content: "\f381"; } + +.fa-cloud-meatball:before { + content: "\f73b"; } + +.fa-cloud-moon:before { + content: "\f6c3"; } + +.fa-cloud-moon-rain:before { + content: "\f73c"; } + +.fa-cloud-rain:before { + content: "\f73d"; } + +.fa-cloud-showers-heavy:before { + content: "\f740"; } + +.fa-cloud-sun:before { + content: "\f6c4"; } + +.fa-cloud-sun-rain:before { + content: "\f743"; } + +.fa-cloud-upload-alt:before { + content: "\f382"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cocktail:before { + content: "\f561"; } + +.fa-code:before { + content: "\f121"; } + +.fa-code-branch:before { + content: "\f126"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-coffee:before { + content: "\f0f4"; } + +.fa-cog:before { + content: "\f013"; } + +.fa-cogs:before { + content: "\f085"; } + +.fa-coins:before { + content: "\f51e"; } + +.fa-columns:before { + content: "\f0db"; } + +.fa-comment:before { + content: "\f075"; } + +.fa-comment-alt:before { + content: "\f27a"; } + +.fa-comment-dollar:before { + content: "\f651"; } + +.fa-comment-dots:before { + content: "\f4ad"; } + +.fa-comment-medical:before { + content: "\f7f5"; } + +.fa-comment-slash:before { + content: "\f4b3"; } + +.fa-comments:before { + content: "\f086"; } + +.fa-comments-dollar:before { + content: "\f653"; } + +.fa-compact-disc:before { + content: "\f51f"; } + +.fa-compass:before { + content: "\f14e"; } + +.fa-compress:before { + content: "\f066"; } + +.fa-compress-alt:before { + content: "\f422"; } + +.fa-compress-arrows-alt:before { + content: "\f78c"; } + +.fa-concierge-bell:before { + content: "\f562"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cookie:before { + content: "\f563"; } + +.fa-cookie-bite:before { + content: "\f564"; } + +.fa-copy:before { + content: "\f0c5"; } + +.fa-copyright:before { + content: "\f1f9"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-couch:before { + content: "\f4b8"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-credit-card:before { + content: "\f09d"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-crop:before { + content: "\f125"; } + +.fa-crop-alt:before { + content: "\f565"; } + +.fa-cross:before { + content: "\f654"; } + +.fa-crosshairs:before { + content: "\f05b"; } + +.fa-crow:before { + content: "\f520"; } + +.fa-crown:before { + content: "\f521"; } + +.fa-crutch:before { + content: "\f7f7"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cube:before { + content: "\f1b2"; } + +.fa-cubes:before { + content: "\f1b3"; } + +.fa-cut:before { + content: "\f0c4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-database:before { + content: "\f1c0"; } + +.fa-deaf:before { + content: "\f2a4"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-democrat:before { + content: "\f747"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-desktop:before { + content: "\f108"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dharmachakra:before { + content: "\f655"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diagnoses:before { + content: "\f470"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-dice:before { + content: "\f522"; } + +.fa-dice-d20:before { + content: "\f6cf"; } + +.fa-dice-d6:before { + content: "\f6d1"; } + +.fa-dice-five:before { + content: "\f523"; } + +.fa-dice-four:before { + content: "\f524"; } + +.fa-dice-one:before { + content: "\f525"; } + +.fa-dice-six:before { + content: "\f526"; } + +.fa-dice-three:before { + content: "\f527"; } + +.fa-dice-two:before { + content: "\f528"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-digital-tachograph:before { + content: "\f566"; } + +.fa-directions:before { + content: "\f5eb"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-disease:before { + content: "\f7fa"; } + +.fa-divide:before { + content: "\f529"; } + +.fa-dizzy:before { + content: "\f567"; } + +.fa-dna:before { + content: "\f471"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-dog:before { + content: "\f6d3"; } + +.fa-dollar-sign:before { + content: "\f155"; } + +.fa-dolly:before { + content: "\f472"; } + +.fa-dolly-flatbed:before { + content: "\f474"; } + +.fa-donate:before { + content: "\f4b9"; } + +.fa-door-closed:before { + content: "\f52a"; } + +.fa-door-open:before { + content: "\f52b"; } + +.fa-dot-circle:before { + content: "\f192"; } + +.fa-dove:before { + content: "\f4ba"; } + +.fa-download:before { + content: "\f019"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-drafting-compass:before { + content: "\f568"; } + +.fa-dragon:before { + content: "\f6d5"; } + +.fa-draw-polygon:before { + content: "\f5ee"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drum:before { + content: "\f569"; } + +.fa-drum-steelpan:before { + content: "\f56a"; } + +.fa-drumstick-bite:before { + content: "\f6d7"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dumbbell:before { + content: "\f44b"; } + +.fa-dumpster:before { + content: "\f793"; } + +.fa-dumpster-fire:before { + content: "\f794"; } + +.fa-dungeon:before { + content: "\f6d9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-edit:before { + content: "\f044"; } + +.fa-egg:before { + content: "\f7fb"; } + +.fa-eject:before { + content: "\f052"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ellipsis-h:before { + content: "\f141"; } + +.fa-ellipsis-v:before { + content: "\f142"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envelope:before { + content: "\f0e0"; } + +.fa-envelope-open:before { + content: "\f2b6"; } + +.fa-envelope-open-text:before { + content: "\f658"; } + +.fa-envelope-square:before { + content: "\f199"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-equals:before { + content: "\f52c"; } + +.fa-eraser:before { + content: "\f12d"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-ethernet:before { + content: "\f796"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-euro-sign:before { + content: "\f153"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-exchange-alt:before { + content: "\f362"; } + +.fa-exclamation:before { + content: "\f12a"; } + +.fa-exclamation-circle:before { + content: "\f06a"; } + +.fa-exclamation-triangle:before { + content: "\f071"; } + +.fa-expand:before { + content: "\f065"; } + +.fa-expand-alt:before { + content: "\f424"; } + +.fa-expand-arrows-alt:before { + content: "\f31e"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-external-link-alt:before { + content: "\f35d"; } + +.fa-external-link-square-alt:before { + content: "\f360"; } + +.fa-eye:before { + content: "\f06e"; } + +.fa-eye-dropper:before { + content: "\f1fb"; } + +.fa-eye-slash:before { + content: "\f070"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fan:before { + content: "\f863"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-fast-backward:before { + content: "\f049"; } + +.fa-fast-forward:before { + content: "\f050"; } + +.fa-faucet:before { + content: "\e005"; } + +.fa-fax:before { + content: "\f1ac"; } + +.fa-feather:before { + content: "\f52d"; } + +.fa-feather-alt:before { + content: "\f56b"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-female:before { + content: "\f182"; } + +.fa-fighter-jet:before { + content: "\f0fb"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-file:before { + content: "\f15b"; } + +.fa-file-alt:before { + content: "\f15c"; } + +.fa-file-archive:before { + content: "\f1c6"; } + +.fa-file-audio:before { + content: "\f1c7"; } + +.fa-file-code:before { + content: "\f1c9"; } + +.fa-file-contract:before { + content: "\f56c"; } + +.fa-file-csv:before { + content: "\f6dd"; } + +.fa-file-download:before { + content: "\f56d"; } + +.fa-file-excel:before { + content: "\f1c3"; } + +.fa-file-export:before { + content: "\f56e"; } + +.fa-file-image:before { + content: "\f1c5"; } + +.fa-file-import:before { + content: "\f56f"; } + +.fa-file-invoice:before { + content: "\f570"; } + +.fa-file-invoice-dollar:before { + content: "\f571"; } + +.fa-file-medical:before { + content: "\f477"; } + +.fa-file-medical-alt:before { + content: "\f478"; } + +.fa-file-pdf:before { + content: "\f1c1"; } + +.fa-file-powerpoint:before { + content: "\f1c4"; } + +.fa-file-prescription:before { + content: "\f572"; } + +.fa-file-signature:before { + content: "\f573"; } + +.fa-file-upload:before { + content: "\f574"; } + +.fa-file-video:before { + content: "\f1c8"; } + +.fa-file-word:before { + content: "\f1c2"; } + +.fa-fill:before { + content: "\f575"; } + +.fa-fill-drip:before { + content: "\f576"; } + +.fa-film:before { + content: "\f008"; } + +.fa-filter:before { + content: "\f0b0"; } + +.fa-fingerprint:before { + content: "\f577"; } + +.fa-fire:before { + content: "\f06d"; } + +.fa-fire-alt:before { + content: "\f7e4"; } + +.fa-fire-extinguisher:before { + content: "\f134"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-first-aid:before { + content: "\f479"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-fish:before { + content: "\f578"; } + +.fa-fist-raised:before { + content: "\f6de"; } + +.fa-flag:before { + content: "\f024"; } + +.fa-flag-checkered:before { + content: "\f11e"; } + +.fa-flag-usa:before { + content: "\f74d"; } + +.fa-flask:before { + content: "\f0c3"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-flushed:before { + content: "\f579"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-folder:before { + content: "\f07b"; } + +.fa-folder-minus:before { + content: "\f65d"; } + +.fa-folder-open:before { + content: "\f07c"; } + +.fa-folder-plus:before { + content: "\f65e"; } + +.fa-font:before { + content: "\f031"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-font-awesome-flag:before { + content: "\f425"; } + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-football-ball:before { + content: "\f44e"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-forward:before { + content: "\f04e"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-frog:before { + content: "\f52e"; } + +.fa-frown:before { + content: "\f119"; } + +.fa-frown-open:before { + content: "\f57a"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-funnel-dollar:before { + content: "\f662"; } + +.fa-futbol:before { + content: "\f1e3"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-gamepad:before { + content: "\f11b"; } + +.fa-gas-pump:before { + content: "\f52f"; } + +.fa-gavel:before { + content: "\f0e3"; } + +.fa-gem:before { + content: "\f3a5"; } + +.fa-genderless:before { + content: "\f22d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-ghost:before { + content: "\f6e2"; } + +.fa-gift:before { + content: "\f06b"; } + +.fa-gifts:before { + content: "\f79c"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glass-cheers:before { + content: "\f79f"; } + +.fa-glass-martini:before { + content: "\f000"; } + +.fa-glass-martini-alt:before { + content: "\f57b"; } + +.fa-glass-whiskey:before { + content: "\f7a0"; } + +.fa-glasses:before { + content: "\f530"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-globe:before { + content: "\f0ac"; } + +.fa-globe-africa:before { + content: "\f57c"; } + +.fa-globe-americas:before { + content: "\f57d"; } + +.fa-globe-asia:before { + content: "\f57e"; } + +.fa-globe-europe:before { + content: "\f7a2"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golf-ball:before { + content: "\f450"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gopuram:before { + content: "\f664"; } + +.fa-graduation-cap:before { + content: "\f19d"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-greater-than:before { + content: "\f531"; } + +.fa-greater-than-equal:before { + content: "\f532"; } + +.fa-grimace:before { + content: "\f57f"; } + +.fa-grin:before { + content: "\f580"; } + +.fa-grin-alt:before { + content: "\f581"; } + +.fa-grin-beam:before { + content: "\f582"; } + +.fa-grin-beam-sweat:before { + content: "\f583"; } + +.fa-grin-hearts:before { + content: "\f584"; } + +.fa-grin-squint:before { + content: "\f585"; } + +.fa-grin-squint-tears:before { + content: "\f586"; } + +.fa-grin-stars:before { + content: "\f587"; } + +.fa-grin-tears:before { + content: "\f588"; } + +.fa-grin-tongue:before { + content: "\f589"; } + +.fa-grin-tongue-squint:before { + content: "\f58a"; } + +.fa-grin-tongue-wink:before { + content: "\f58b"; } + +.fa-grin-wink:before { + content: "\f58c"; } + +.fa-grip-horizontal:before { + content: "\f58d"; } + +.fa-grip-lines:before { + content: "\f7a4"; } + +.fa-grip-lines-vertical:before { + content: "\f7a5"; } + +.fa-grip-vertical:before { + content: "\f58e"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-guitar:before { + content: "\f7a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-h-square:before { + content: "\f0fd"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hamburger:before { + content: "\f805"; } + +.fa-hammer:before { + content: "\f6e3"; } + +.fa-hamsa:before { + content: "\f665"; } + +.fa-hand-holding:before { + content: "\f4bd"; } + +.fa-hand-holding-heart:before { + content: "\f4be"; } + +.fa-hand-holding-medical:before { + content: "\e05c"; } + +.fa-hand-holding-usd:before { + content: "\f4c0"; } + +.fa-hand-holding-water:before { + content: "\f4c1"; } + +.fa-hand-lizard:before { + content: "\f258"; } + +.fa-hand-middle-finger:before { + content: "\f806"; } + +.fa-hand-paper:before { + content: "\f256"; } + +.fa-hand-peace:before { + content: "\f25b"; } + +.fa-hand-point-down:before { + content: "\f0a7"; } + +.fa-hand-point-left:before { + content: "\f0a5"; } + +.fa-hand-point-right:before { + content: "\f0a4"; } + +.fa-hand-point-up:before { + content: "\f0a6"; } + +.fa-hand-pointer:before { + content: "\f25a"; } + +.fa-hand-rock:before { + content: "\f255"; } + +.fa-hand-scissors:before { + content: "\f257"; } + +.fa-hand-sparkles:before { + content: "\e05d"; } + +.fa-hand-spock:before { + content: "\f259"; } + +.fa-hands:before { + content: "\f4c2"; } + +.fa-hands-helping:before { + content: "\f4c4"; } + +.fa-hands-wash:before { + content: "\e05e"; } + +.fa-handshake:before { + content: "\f2b5"; } + +.fa-handshake-alt-slash:before { + content: "\e05f"; } + +.fa-handshake-slash:before { + content: "\e060"; } + +.fa-hanukiah:before { + content: "\f6e6"; } + +.fa-hard-hat:before { + content: "\f807"; } + +.fa-hashtag:before { + content: "\f292"; } + +.fa-hat-cowboy:before { + content: "\f8c0"; } + +.fa-hat-cowboy-side:before { + content: "\f8c1"; } + +.fa-hat-wizard:before { + content: "\f6e8"; } + +.fa-hdd:before { + content: "\f0a0"; } + +.fa-head-side-cough:before { + content: "\e061"; } + +.fa-head-side-cough-slash:before { + content: "\e062"; } + +.fa-head-side-mask:before { + content: "\e063"; } + +.fa-head-side-virus:before { + content: "\e064"; } + +.fa-heading:before { + content: "\f1dc"; } + +.fa-headphones:before { + content: "\f025"; } + +.fa-headphones-alt:before { + content: "\f58f"; } + +.fa-headset:before { + content: "\f590"; } + +.fa-heart:before { + content: "\f004"; } + +.fa-heart-broken:before { + content: "\f7a9"; } + +.fa-heartbeat:before { + content: "\f21e"; } + +.fa-helicopter:before { + content: "\f533"; } + +.fa-highlighter:before { + content: "\f591"; } + +.fa-hiking:before { + content: "\f6ec"; } + +.fa-hippo:before { + content: "\f6ed"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-history:before { + content: "\f1da"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-hockey-puck:before { + content: "\f453"; } + +.fa-holly-berry:before { + content: "\f7aa"; } + +.fa-home:before { + content: "\f015"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-horse:before { + content: "\f6f0"; } + +.fa-horse-head:before { + content: "\f7ab"; } + +.fa-hospital:before { + content: "\f0f8"; } + +.fa-hospital-alt:before { + content: "\f47d"; } + +.fa-hospital-symbol:before { + content: "\f47e"; } + +.fa-hospital-user:before { + content: "\f80d"; } + +.fa-hot-tub:before { + content: "\f593"; } + +.fa-hotdog:before { + content: "\f80f"; } + +.fa-hotel:before { + content: "\f594"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-hourglass:before { + content: "\f254"; } + +.fa-hourglass-end:before { + content: "\f253"; } + +.fa-hourglass-half:before { + content: "\f252"; } + +.fa-hourglass-start:before { + content: "\f251"; } + +.fa-house-damage:before { + content: "\f6f1"; } + +.fa-house-user:before { + content: "\e065"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-hryvnia:before { + content: "\f6f2"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-i-cursor:before { + content: "\f246"; } + +.fa-ice-cream:before { + content: "\f810"; } + +.fa-icicles:before { + content: "\f7ad"; } + +.fa-icons:before { + content: "\f86d"; } + +.fa-id-badge:before { + content: "\f2c1"; } + +.fa-id-card:before { + content: "\f2c2"; } + +.fa-id-card-alt:before { + content: "\f47f"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-igloo:before { + content: "\f7ae"; } + +.fa-image:before { + content: "\f03e"; } + +.fa-images:before { + content: "\f302"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-inbox:before { + content: "\f01c"; } + +.fa-indent:before { + content: "\f03c"; } + +.fa-industry:before { + content: "\f275"; } + +.fa-infinity:before { + content: "\f534"; } + +.fa-info:before { + content: "\f129"; } + +.fa-info-circle:before { + content: "\f05a"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-italic:before { + content: "\f033"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi:before { + content: "\f669"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joint:before { + content: "\f595"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-journal-whills:before { + content: "\f66a"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaaba:before { + content: "\f66b"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-key:before { + content: "\f084"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keyboard:before { + content: "\f11c"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-khanda:before { + content: "\f66d"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-kiss:before { + content: "\f596"; } + +.fa-kiss-beam:before { + content: "\f597"; } + +.fa-kiss-wink-heart:before { + content: "\f598"; } + +.fa-kiwi-bird:before { + content: "\f535"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-landmark:before { + content: "\f66f"; } + +.fa-language:before { + content: "\f1ab"; } + +.fa-laptop:before { + content: "\f109"; } + +.fa-laptop-code:before { + content: "\f5fc"; } + +.fa-laptop-house:before { + content: "\e066"; } + +.fa-laptop-medical:before { + content: "\f812"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-laugh:before { + content: "\f599"; } + +.fa-laugh-beam:before { + content: "\f59a"; } + +.fa-laugh-squint:before { + content: "\f59b"; } + +.fa-laugh-wink:before { + content: "\f59c"; } + +.fa-layer-group:before { + content: "\f5fd"; } + +.fa-leaf:before { + content: "\f06c"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-lemon:before { + content: "\f094"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-less-than:before { + content: "\f536"; } + +.fa-less-than-equal:before { + content: "\f537"; } + +.fa-level-down-alt:before { + content: "\f3be"; } + +.fa-level-up-alt:before { + content: "\f3bf"; } + +.fa-life-ring:before { + content: "\f1cd"; } + +.fa-lightbulb:before { + content: "\f0eb"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-link:before { + content: "\f0c1"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lira-sign:before { + content: "\f195"; } + +.fa-list:before { + content: "\f03a"; } + +.fa-list-alt:before { + content: "\f022"; } + +.fa-list-ol:before { + content: "\f0cb"; } + +.fa-list-ul:before { + content: "\f0ca"; } + +.fa-location-arrow:before { + content: "\f124"; } + +.fa-lock:before { + content: "\f023"; } + +.fa-lock-open:before { + content: "\f3c1"; } + +.fa-long-arrow-alt-down:before { + content: "\f309"; } + +.fa-long-arrow-alt-left:before { + content: "\f30a"; } + +.fa-long-arrow-alt-right:before { + content: "\f30b"; } + +.fa-long-arrow-alt-up:before { + content: "\f30c"; } + +.fa-low-vision:before { + content: "\f2a8"; } + +.fa-luggage-cart:before { + content: "\f59d"; } + +.fa-lungs:before { + content: "\f604"; } + +.fa-lungs-virus:before { + content: "\e067"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-magic:before { + content: "\f0d0"; } + +.fa-magnet:before { + content: "\f076"; } + +.fa-mail-bulk:before { + content: "\f674"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-male:before { + content: "\f183"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-map:before { + content: "\f279"; } + +.fa-map-marked:before { + content: "\f59f"; } + +.fa-map-marked-alt:before { + content: "\f5a0"; } + +.fa-map-marker:before { + content: "\f041"; } + +.fa-map-marker-alt:before { + content: "\f3c5"; } + +.fa-map-pin:before { + content: "\f276"; } + +.fa-map-signs:before { + content: "\f277"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-marker:before { + content: "\f5a1"; } + +.fa-mars:before { + content: "\f222"; } + +.fa-mars-double:before { + content: "\f227"; } + +.fa-mars-stroke:before { + content: "\f229"; } + +.fa-mars-stroke-h:before { + content: "\f22b"; } + +.fa-mars-stroke-v:before { + content: "\f22a"; } + +.fa-mask:before { + content: "\f6fa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-medal:before { + content: "\f5a2"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f3c7"; } + +.fa-medkit:before { + content: "\f0fa"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-meh:before { + content: "\f11a"; } + +.fa-meh-blank:before { + content: "\f5a4"; } + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; } + +.fa-memory:before { + content: "\f538"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-menorah:before { + content: "\f676"; } + +.fa-mercury:before { + content: "\f223"; } + +.fa-meteor:before { + content: "\f753"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-microchip:before { + content: "\f2db"; } + +.fa-microphone:before { + content: "\f130"; } + +.fa-microphone-alt:before { + content: "\f3c9"; } + +.fa-microphone-alt-slash:before { + content: "\f539"; } + +.fa-microphone-slash:before { + content: "\f131"; } + +.fa-microscope:before { + content: "\f610"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-minus:before { + content: "\f068"; } + +.fa-minus-circle:before { + content: "\f056"; } + +.fa-minus-square:before { + content: "\f146"; } + +.fa-mitten:before { + content: "\f7b5"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-mobile:before { + content: "\f10b"; } + +.fa-mobile-alt:before { + content: "\f3cd"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-money-bill:before { + content: "\f0d6"; } + +.fa-money-bill-alt:before { + content: "\f3d1"; } + +.fa-money-bill-wave:before { + content: "\f53a"; } + +.fa-money-bill-wave-alt:before { + content: "\f53b"; } + +.fa-money-check:before { + content: "\f53c"; } + +.fa-money-check-alt:before { + content: "\f53d"; } + +.fa-monument:before { + content: "\f5a6"; } + +.fa-moon:before { + content: "\f186"; } + +.fa-mortar-pestle:before { + content: "\f5a7"; } + +.fa-mosque:before { + content: "\f678"; } + +.fa-motorcycle:before { + content: "\f21c"; } + +.fa-mountain:before { + content: "\f6fc"; } + +.fa-mouse:before { + content: "\f8cc"; } + +.fa-mouse-pointer:before { + content: "\f245"; } + +.fa-mug-hot:before { + content: "\f7b6"; } + +.fa-music:before { + content: "\f001"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-network-wired:before { + content: "\f6ff"; } + +.fa-neuter:before { + content: "\f22c"; } + +.fa-newspaper:before { + content: "\f1ea"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-not-equal:before { + content: "\f53e"; } + +.fa-notes-medical:before { + content: "\f481"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-object-group:before { + content: "\f247"; } + +.fa-object-ungroup:before { + content: "\f248"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-oil-can:before { + content: "\f613"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-om:before { + content: "\f679"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-otter:before { + content: "\f700"; } + +.fa-outdent:before { + content: "\f03b"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-pager:before { + content: "\f815"; } + +.fa-paint-brush:before { + content: "\f1fc"; } + +.fa-paint-roller:before { + content: "\f5aa"; } + +.fa-palette:before { + content: "\f53f"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-pallet:before { + content: "\f482"; } + +.fa-paper-plane:before { + content: "\f1d8"; } + +.fa-paperclip:before { + content: "\f0c6"; } + +.fa-parachute-box:before { + content: "\f4cd"; } + +.fa-paragraph:before { + content: "\f1dd"; } + +.fa-parking:before { + content: "\f540"; } + +.fa-passport:before { + content: "\f5ab"; } + +.fa-pastafarianism:before { + content: "\f67b"; } + +.fa-paste:before { + content: "\f0ea"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-pause:before { + content: "\f04c"; } + +.fa-pause-circle:before { + content: "\f28b"; } + +.fa-paw:before { + content: "\f1b0"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-peace:before { + content: "\f67c"; } + +.fa-pen:before { + content: "\f304"; } + +.fa-pen-alt:before { + content: "\f305"; } + +.fa-pen-fancy:before { + content: "\f5ac"; } + +.fa-pen-nib:before { + content: "\f5ad"; } + +.fa-pen-square:before { + content: "\f14b"; } + +.fa-pencil-alt:before { + content: "\f303"; } + +.fa-pencil-ruler:before { + content: "\f5ae"; } + +.fa-penny-arcade:before { + content: "\f704"; } + +.fa-people-arrows:before { + content: "\e068"; } + +.fa-people-carry:before { + content: "\f4ce"; } + +.fa-pepper-hot:before { + content: "\f816"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-percent:before { + content: "\f295"; } + +.fa-percentage:before { + content: "\f541"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-person-booth:before { + content: "\f756"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-phone:before { + content: "\f095"; } + +.fa-phone-alt:before { + content: "\f879"; } + +.fa-phone-slash:before { + content: "\f3dd"; } + +.fa-phone-square:before { + content: "\f098"; } + +.fa-phone-square-alt:before { + content: "\f87b"; } + +.fa-phone-volume:before { + content: "\f2a0"; } + +.fa-photo-video:before { + content: "\f87c"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-piggy-bank:before { + content: "\f4d3"; } + +.fa-pills:before { + content: "\f484"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-pizza-slice:before { + content: "\f818"; } + +.fa-place-of-worship:before { + content: "\f67f"; } + +.fa-plane:before { + content: "\f072"; } + +.fa-plane-arrival:before { + content: "\f5af"; } + +.fa-plane-departure:before { + content: "\f5b0"; } + +.fa-plane-slash:before { + content: "\e069"; } + +.fa-play:before { + content: "\f04b"; } + +.fa-play-circle:before { + content: "\f144"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-plug:before { + content: "\f1e6"; } + +.fa-plus:before { + content: "\f067"; } + +.fa-plus-circle:before { + content: "\f055"; } + +.fa-plus-square:before { + content: "\f0fe"; } + +.fa-podcast:before { + content: "\f2ce"; } + +.fa-poll:before { + content: "\f681"; } + +.fa-poll-h:before { + content: "\f682"; } + +.fa-poo:before { + content: "\f2fe"; } + +.fa-poo-storm:before { + content: "\f75a"; } + +.fa-poop:before { + content: "\f619"; } + +.fa-portrait:before { + content: "\f3e0"; } + +.fa-pound-sign:before { + content: "\f154"; } + +.fa-power-off:before { + content: "\f011"; } + +.fa-pray:before { + content: "\f683"; } + +.fa-praying-hands:before { + content: "\f684"; } + +.fa-prescription:before { + content: "\f5b1"; } + +.fa-prescription-bottle:before { + content: "\f485"; } + +.fa-prescription-bottle-alt:before { + content: "\f486"; } + +.fa-print:before { + content: "\f02f"; } + +.fa-procedures:before { + content: "\f487"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-project-diagram:before { + content: "\f542"; } + +.fa-pump-medical:before { + content: "\e06a"; } + +.fa-pump-soap:before { + content: "\e06b"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-puzzle-piece:before { + content: "\f12e"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-qrcode:before { + content: "\f029"; } + +.fa-question:before { + content: "\f128"; } + +.fa-question-circle:before { + content: "\f059"; } + +.fa-quidditch:before { + content: "\f458"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-quote-left:before { + content: "\f10d"; } + +.fa-quote-right:before { + content: "\f10e"; } + +.fa-quran:before { + content: "\f687"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-radiation:before { + content: "\f7b9"; } + +.fa-radiation-alt:before { + content: "\f7ba"; } + +.fa-rainbow:before { + content: "\f75b"; } + +.fa-random:before { + content: "\f074"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-receipt:before { + content: "\f543"; } + +.fa-record-vinyl:before { + content: "\f8d9"; } + +.fa-recycle:before { + content: "\f1b8"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-redo:before { + content: "\f01e"; } + +.fa-redo-alt:before { + content: "\f2f9"; } + +.fa-registered:before { + content: "\f25d"; } + +.fa-remove-format:before { + content: "\f87d"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-reply:before { + content: "\f3e5"; } + +.fa-reply-all:before { + content: "\f122"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-republican:before { + content: "\f75e"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-restroom:before { + content: "\f7bd"; } + +.fa-retweet:before { + content: "\f079"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-ribbon:before { + content: "\f4d6"; } + +.fa-ring:before { + content: "\f70b"; } + +.fa-road:before { + content: "\f018"; } + +.fa-robot:before { + content: "\f544"; } + +.fa-rocket:before { + content: "\f135"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-route:before { + content: "\f4d7"; } + +.fa-rss:before { + content: "\f09e"; } + +.fa-rss-square:before { + content: "\f143"; } + +.fa-ruble-sign:before { + content: "\f158"; } + +.fa-ruler:before { + content: "\f545"; } + +.fa-ruler-combined:before { + content: "\f546"; } + +.fa-ruler-horizontal:before { + content: "\f547"; } + +.fa-ruler-vertical:before { + content: "\f548"; } + +.fa-running:before { + content: "\f70c"; } + +.fa-rupee-sign:before { + content: "\f156"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-sad-cry:before { + content: "\f5b3"; } + +.fa-sad-tear:before { + content: "\f5b4"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-satellite:before { + content: "\f7bf"; } + +.fa-satellite-dish:before { + content: "\f7c0"; } + +.fa-save:before { + content: "\f0c7"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-school:before { + content: "\f549"; } + +.fa-screwdriver:before { + content: "\f54a"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-scroll:before { + content: "\f70e"; } + +.fa-sd-card:before { + content: "\f7c2"; } + +.fa-search:before { + content: "\f002"; } + +.fa-search-dollar:before { + content: "\f688"; } + +.fa-search-location:before { + content: "\f689"; } + +.fa-search-minus:before { + content: "\f010"; } + +.fa-search-plus:before { + content: "\f00e"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-seedling:before { + content: "\f4d8"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-server:before { + content: "\f233"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shapes:before { + content: "\f61f"; } + +.fa-share:before { + content: "\f064"; } + +.fa-share-alt:before { + content: "\f1e0"; } + +.fa-share-alt-square:before { + content: "\f1e1"; } + +.fa-share-square:before { + content: "\f14d"; } + +.fa-shekel-sign:before { + content: "\f20b"; } + +.fa-shield-alt:before { + content: "\f3ed"; } + +.fa-shield-virus:before { + content: "\e06c"; } + +.fa-ship:before { + content: "\f21a"; } + +.fa-shipping-fast:before { + content: "\f48b"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shoe-prints:before { + content: "\f54b"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-shopping-bag:before { + content: "\f290"; } + +.fa-shopping-basket:before { + content: "\f291"; } + +.fa-shopping-cart:before { + content: "\f07a"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-shower:before { + content: "\f2cc"; } + +.fa-shuttle-van:before { + content: "\f5b6"; } + +.fa-sign:before { + content: "\f4d9"; } + +.fa-sign-in-alt:before { + content: "\f2f6"; } + +.fa-sign-language:before { + content: "\f2a7"; } + +.fa-sign-out-alt:before { + content: "\f2f5"; } + +.fa-signal:before { + content: "\f012"; } + +.fa-signature:before { + content: "\f5b7"; } + +.fa-sim-card:before { + content: "\f7c4"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sink:before { + content: "\e06d"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sitemap:before { + content: "\f0e8"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-skating:before { + content: "\f7c5"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-skiing:before { + content: "\f7c9"; } + +.fa-skiing-nordic:before { + content: "\f7ca"; } + +.fa-skull:before { + content: "\f54c"; } + +.fa-skull-crossbones:before { + content: "\f714"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f3ef"; } + +.fa-slash:before { + content: "\f715"; } + +.fa-sleigh:before { + content: "\f7cc"; } + +.fa-sliders-h:before { + content: "\f1de"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-smile:before { + content: "\f118"; } + +.fa-smile-beam:before { + content: "\f5b8"; } + +.fa-smile-wink:before { + content: "\f4da"; } + +.fa-smog:before { + content: "\f75f"; } + +.fa-smoking:before { + content: "\f48d"; } + +.fa-smoking-ban:before { + content: "\f54d"; } + +.fa-sms:before { + content: "\f7cd"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ac"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-snowboarding:before { + content: "\f7ce"; } + +.fa-snowflake:before { + content: "\f2dc"; } + +.fa-snowman:before { + content: "\f7d0"; } + +.fa-snowplow:before { + content: "\f7d2"; } + +.fa-soap:before { + content: "\e06e"; } + +.fa-socks:before { + content: "\f696"; } + +.fa-solar-panel:before { + content: "\f5ba"; } + +.fa-sort:before { + content: "\f0dc"; } + +.fa-sort-alpha-down:before { + content: "\f15d"; } + +.fa-sort-alpha-down-alt:before { + content: "\f881"; } + +.fa-sort-alpha-up:before { + content: "\f15e"; } + +.fa-sort-alpha-up-alt:before { + content: "\f882"; } + +.fa-sort-amount-down:before { + content: "\f160"; } + +.fa-sort-amount-down-alt:before { + content: "\f884"; } + +.fa-sort-amount-up:before { + content: "\f161"; } + +.fa-sort-amount-up-alt:before { + content: "\f885"; } + +.fa-sort-down:before { + content: "\f0dd"; } + +.fa-sort-numeric-down:before { + content: "\f162"; } + +.fa-sort-numeric-down-alt:before { + content: "\f886"; } + +.fa-sort-numeric-up:before { + content: "\f163"; } + +.fa-sort-numeric-up-alt:before { + content: "\f887"; } + +.fa-sort-up:before { + content: "\f0de"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-spa:before { + content: "\f5bb"; } + +.fa-space-shuttle:before { + content: "\f197"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-spell-check:before { + content: "\f891"; } + +.fa-spider:before { + content: "\f717"; } + +.fa-spinner:before { + content: "\f110"; } + +.fa-splotch:before { + content: "\f5bc"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-spray-can:before { + content: "\f5bd"; } + +.fa-square:before { + content: "\f0c8"; } + +.fa-square-full:before { + content: "\f45c"; } + +.fa-square-root-alt:before { + content: "\f698"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-stamp:before { + content: "\f5bf"; } + +.fa-star:before { + content: "\f005"; } + +.fa-star-and-crescent:before { + content: "\f699"; } + +.fa-star-half:before { + content: "\f089"; } + +.fa-star-half-alt:before { + content: "\f5c0"; } + +.fa-star-of-david:before { + content: "\f69a"; } + +.fa-star-of-life:before { + content: "\f621"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-step-backward:before { + content: "\f048"; } + +.fa-step-forward:before { + content: "\f051"; } + +.fa-stethoscope:before { + content: "\f0f1"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-sticky-note:before { + content: "\f249"; } + +.fa-stop:before { + content: "\f04d"; } + +.fa-stop-circle:before { + content: "\f28d"; } + +.fa-stopwatch:before { + content: "\f2f2"; } + +.fa-stopwatch-20:before { + content: "\e06f"; } + +.fa-store:before { + content: "\f54e"; } + +.fa-store-alt:before { + content: "\f54f"; } + +.fa-store-alt-slash:before { + content: "\e070"; } + +.fa-store-slash:before { + content: "\e071"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stream:before { + content: "\f550"; } + +.fa-street-view:before { + content: "\f21d"; } + +.fa-strikethrough:before { + content: "\f0cc"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-stroopwafel:before { + content: "\f551"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-subscript:before { + content: "\f12c"; } + +.fa-subway:before { + content: "\f239"; } + +.fa-suitcase:before { + content: "\f0f2"; } + +.fa-suitcase-rolling:before { + content: "\f5c1"; } + +.fa-sun:before { + content: "\f185"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-superscript:before { + content: "\f12b"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-surprise:before { + content: "\f5c2"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swatchbook:before { + content: "\f5c3"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-swimmer:before { + content: "\f5c4"; } + +.fa-swimming-pool:before { + content: "\f5c5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-synagogue:before { + content: "\f69b"; } + +.fa-sync:before { + content: "\f021"; } + +.fa-sync-alt:before { + content: "\f2f1"; } + +.fa-syringe:before { + content: "\f48e"; } + +.fa-table:before { + content: "\f0ce"; } + +.fa-table-tennis:before { + content: "\f45d"; } + +.fa-tablet:before { + content: "\f10a"; } + +.fa-tablet-alt:before { + content: "\f3fa"; } + +.fa-tablets:before { + content: "\f490"; } + +.fa-tachometer-alt:before { + content: "\f3fd"; } + +.fa-tag:before { + content: "\f02b"; } + +.fa-tags:before { + content: "\f02c"; } + +.fa-tape:before { + content: "\f4db"; } + +.fa-tasks:before { + content: "\f0ae"; } + +.fa-taxi:before { + content: "\f1ba"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-teeth:before { + content: "\f62e"; } + +.fa-teeth-open:before { + content: "\f62f"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f3fe"; } + +.fa-temperature-high:before { + content: "\f769"; } + +.fa-temperature-low:before { + content: "\f76b"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-tenge:before { + content: "\f7d7"; } + +.fa-terminal:before { + content: "\f120"; } + +.fa-text-height:before { + content: "\f034"; } + +.fa-text-width:before { + content: "\f035"; } + +.fa-th:before { + content: "\f00a"; } + +.fa-th-large:before { + content: "\f009"; } + +.fa-th-list:before { + content: "\f00b"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-theater-masks:before { + content: "\f630"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-thermometer:before { + content: "\f491"; } + +.fa-thermometer-empty:before { + content: "\f2cb"; } + +.fa-thermometer-full:before { + content: "\f2c7"; } + +.fa-thermometer-half:before { + content: "\f2c9"; } + +.fa-thermometer-quarter:before { + content: "\f2ca"; } + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-thumbs-down:before { + content: "\f165"; } + +.fa-thumbs-up:before { + content: "\f164"; } + +.fa-thumbtack:before { + content: "\f08d"; } + +.fa-ticket-alt:before { + content: "\f3ff"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-times:before { + content: "\f00d"; } + +.fa-times-circle:before { + content: "\f057"; } + +.fa-tint:before { + content: "\f043"; } + +.fa-tint-slash:before { + content: "\f5c7"; } + +.fa-tired:before { + content: "\f5c8"; } + +.fa-toggle-off:before { + content: "\f204"; } + +.fa-toggle-on:before { + content: "\f205"; } + +.fa-toilet:before { + content: "\f7d8"; } + +.fa-toilet-paper:before { + content: "\f71e"; } + +.fa-toilet-paper-slash:before { + content: "\e072"; } + +.fa-toolbox:before { + content: "\f552"; } + +.fa-tools:before { + content: "\f7d9"; } + +.fa-tooth:before { + content: "\f5c9"; } + +.fa-torah:before { + content: "\f6a0"; } + +.fa-torii-gate:before { + content: "\f6a1"; } + +.fa-tractor:before { + content: "\f722"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trademark:before { + content: "\f25c"; } + +.fa-traffic-light:before { + content: "\f637"; } + +.fa-trailer:before { + content: "\e041"; } + +.fa-train:before { + content: "\f238"; } + +.fa-tram:before { + content: "\f7da"; } + +.fa-transgender:before { + content: "\f224"; } + +.fa-transgender-alt:before { + content: "\f225"; } + +.fa-trash:before { + content: "\f1f8"; } + +.fa-trash-alt:before { + content: "\f2ed"; } + +.fa-trash-restore:before { + content: "\f829"; } + +.fa-trash-restore-alt:before { + content: "\f82a"; } + +.fa-tree:before { + content: "\f1bb"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-trophy:before { + content: "\f091"; } + +.fa-truck:before { + content: "\f0d1"; } + +.fa-truck-loading:before { + content: "\f4de"; } + +.fa-truck-monster:before { + content: "\f63b"; } + +.fa-truck-moving:before { + content: "\f4df"; } + +.fa-truck-pickup:before { + content: "\f63c"; } + +.fa-tshirt:before { + content: "\f553"; } + +.fa-tty:before { + content: "\f1e4"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-tv:before { + content: "\f26c"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-umbrella:before { + content: "\f0e9"; } + +.fa-umbrella-beach:before { + content: "\f5ca"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-underline:before { + content: "\f0cd"; } + +.fa-undo:before { + content: "\f0e2"; } + +.fa-undo-alt:before { + content: "\f2ea"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-universal-access:before { + content: "\f29a"; } + +.fa-university:before { + content: "\f19c"; } + +.fa-unlink:before { + content: "\f127"; } + +.fa-unlock:before { + content: "\f09c"; } + +.fa-unlock-alt:before { + content: "\f13e"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-upload:before { + content: "\f093"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-user:before { + content: "\f007"; } + +.fa-user-alt:before { + content: "\f406"; } + +.fa-user-alt-slash:before { + content: "\f4fa"; } + +.fa-user-astronaut:before { + content: "\f4fb"; } + +.fa-user-check:before { + content: "\f4fc"; } + +.fa-user-circle:before { + content: "\f2bd"; } + +.fa-user-clock:before { + content: "\f4fd"; } + +.fa-user-cog:before { + content: "\f4fe"; } + +.fa-user-edit:before { + content: "\f4ff"; } + +.fa-user-friends:before { + content: "\f500"; } + +.fa-user-graduate:before { + content: "\f501"; } + +.fa-user-injured:before { + content: "\f728"; } + +.fa-user-lock:before { + content: "\f502"; } + +.fa-user-md:before { + content: "\f0f0"; } + +.fa-user-minus:before { + content: "\f503"; } + +.fa-user-ninja:before { + content: "\f504"; } + +.fa-user-nurse:before { + content: "\f82f"; } + +.fa-user-plus:before { + content: "\f234"; } + +.fa-user-secret:before { + content: "\f21b"; } + +.fa-user-shield:before { + content: "\f505"; } + +.fa-user-slash:before { + content: "\f506"; } + +.fa-user-tag:before { + content: "\f507"; } + +.fa-user-tie:before { + content: "\f508"; } + +.fa-user-times:before { + content: "\f235"; } + +.fa-users:before { + content: "\f0c0"; } + +.fa-users-cog:before { + content: "\f509"; } + +.fa-users-slash:before { + content: "\e073"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-utensil-spoon:before { + content: "\f2e5"; } + +.fa-utensils:before { + content: "\f2e7"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-vector-square:before { + content: "\f5cb"; } + +.fa-venus:before { + content: "\f221"; } + +.fa-venus-double:before { + content: "\f226"; } + +.fa-venus-mars:before { + content: "\f228"; } + +.fa-vest:before { + content: "\e085"; } + +.fa-vest-patches:before { + content: "\e086"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-vial:before { + content: "\f492"; } + +.fa-vials:before { + content: "\f493"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-video:before { + content: "\f03d"; } + +.fa-video-slash:before { + content: "\f4e2"; } + +.fa-vihara:before { + content: "\f6a7"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-virus:before { + content: "\e074"; } + +.fa-virus-slash:before { + content: "\e075"; } + +.fa-viruses:before { + content: "\e076"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-voicemail:before { + content: "\f897"; } + +.fa-volleyball-ball:before { + content: "\f45f"; } + +.fa-volume-down:before { + content: "\f027"; } + +.fa-volume-mute:before { + content: "\f6a9"; } + +.fa-volume-off:before { + content: "\f026"; } + +.fa-volume-up:before { + content: "\f028"; } + +.fa-vote-yea:before { + content: "\f772"; } + +.fa-vr-cardboard:before { + content: "\f729"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-walking:before { + content: "\f554"; } + +.fa-wallet:before { + content: "\f555"; } + +.fa-warehouse:before { + content: "\f494"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-water:before { + content: "\f773"; } + +.fa-wave-square:before { + content: "\f83e"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weight:before { + content: "\f496"; } + +.fa-weight-hanging:before { + content: "\f5cd"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-wheelchair:before { + content: "\f193"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wifi:before { + content: "\f1eb"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wind:before { + content: "\f72e"; } + +.fa-window-close:before { + content: "\f410"; } + +.fa-window-maximize:before { + content: "\f2d0"; } + +.fa-window-minimize:before { + content: "\f2d1"; } + +.fa-window-restore:before { + content: "\f2d2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wine-bottle:before { + content: "\f72f"; } + +.fa-wine-glass:before { + content: "\f4e3"; } + +.fa-wine-glass-alt:before { + content: "\f5ce"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-won-sign:before { + content: "\f159"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-wrench:before { + content: "\f0ad"; } + +.fa-x-ray:before { + content: "\f497"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yen-sign:before { + content: "\f157"; } + +.fa-yin-yang:before { + content: "\f6ad"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.eot"); + src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } + +.fab { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.eot"); + src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.eot"); + src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.min.css new file mode 100644 index 0000000..ac76ff1 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.css new file mode 100644 index 0000000..9246317 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.css @@ -0,0 +1,15 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face { + font-family: 'Font Awesome 5 Brands'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-brands-400.eot"); + src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } + +.fab { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.min.css new file mode 100644 index 0000000..bdd4a24 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/brands.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.css new file mode 100644 index 0000000..74de602 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.css @@ -0,0 +1,4582 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa, +.fas, +.far, +.fal, +.fad, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-flip-both { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.fa-500px:before { + content: "\f26e"; } + +.fa-accessible-icon:before { + content: "\f368"; } + +.fa-accusoft:before { + content: "\f369"; } + +.fa-acquisitions-incorporated:before { + content: "\f6af"; } + +.fa-ad:before { + content: "\f641"; } + +.fa-address-book:before { + content: "\f2b9"; } + +.fa-address-card:before { + content: "\f2bb"; } + +.fa-adjust:before { + content: "\f042"; } + +.fa-adn:before { + content: "\f170"; } + +.fa-adversal:before { + content: "\f36a"; } + +.fa-affiliatetheme:before { + content: "\f36b"; } + +.fa-air-freshener:before { + content: "\f5d0"; } + +.fa-airbnb:before { + content: "\f834"; } + +.fa-algolia:before { + content: "\f36c"; } + +.fa-align-center:before { + content: "\f037"; } + +.fa-align-justify:before { + content: "\f039"; } + +.fa-align-left:before { + content: "\f036"; } + +.fa-align-right:before { + content: "\f038"; } + +.fa-alipay:before { + content: "\f642"; } + +.fa-allergies:before { + content: "\f461"; } + +.fa-amazon:before { + content: "\f270"; } + +.fa-amazon-pay:before { + content: "\f42c"; } + +.fa-ambulance:before { + content: "\f0f9"; } + +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; } + +.fa-amilia:before { + content: "\f36d"; } + +.fa-anchor:before { + content: "\f13d"; } + +.fa-android:before { + content: "\f17b"; } + +.fa-angellist:before { + content: "\f209"; } + +.fa-angle-double-down:before { + content: "\f103"; } + +.fa-angle-double-left:before { + content: "\f100"; } + +.fa-angle-double-right:before { + content: "\f101"; } + +.fa-angle-double-up:before { + content: "\f102"; } + +.fa-angle-down:before { + content: "\f107"; } + +.fa-angle-left:before { + content: "\f104"; } + +.fa-angle-right:before { + content: "\f105"; } + +.fa-angle-up:before { + content: "\f106"; } + +.fa-angry:before { + content: "\f556"; } + +.fa-angrycreative:before { + content: "\f36e"; } + +.fa-angular:before { + content: "\f420"; } + +.fa-ankh:before { + content: "\f644"; } + +.fa-app-store:before { + content: "\f36f"; } + +.fa-app-store-ios:before { + content: "\f370"; } + +.fa-apper:before { + content: "\f371"; } + +.fa-apple:before { + content: "\f179"; } + +.fa-apple-alt:before { + content: "\f5d1"; } + +.fa-apple-pay:before { + content: "\f415"; } + +.fa-archive:before { + content: "\f187"; } + +.fa-archway:before { + content: "\f557"; } + +.fa-arrow-alt-circle-down:before { + content: "\f358"; } + +.fa-arrow-alt-circle-left:before { + content: "\f359"; } + +.fa-arrow-alt-circle-right:before { + content: "\f35a"; } + +.fa-arrow-alt-circle-up:before { + content: "\f35b"; } + +.fa-arrow-circle-down:before { + content: "\f0ab"; } + +.fa-arrow-circle-left:before { + content: "\f0a8"; } + +.fa-arrow-circle-right:before { + content: "\f0a9"; } + +.fa-arrow-circle-up:before { + content: "\f0aa"; } + +.fa-arrow-down:before { + content: "\f063"; } + +.fa-arrow-left:before { + content: "\f060"; } + +.fa-arrow-right:before { + content: "\f061"; } + +.fa-arrow-up:before { + content: "\f062"; } + +.fa-arrows-alt:before { + content: "\f0b2"; } + +.fa-arrows-alt-h:before { + content: "\f337"; } + +.fa-arrows-alt-v:before { + content: "\f338"; } + +.fa-artstation:before { + content: "\f77a"; } + +.fa-assistive-listening-systems:before { + content: "\f2a2"; } + +.fa-asterisk:before { + content: "\f069"; } + +.fa-asymmetrik:before { + content: "\f372"; } + +.fa-at:before { + content: "\f1fa"; } + +.fa-atlas:before { + content: "\f558"; } + +.fa-atlassian:before { + content: "\f77b"; } + +.fa-atom:before { + content: "\f5d2"; } + +.fa-audible:before { + content: "\f373"; } + +.fa-audio-description:before { + content: "\f29e"; } + +.fa-autoprefixer:before { + content: "\f41c"; } + +.fa-avianex:before { + content: "\f374"; } + +.fa-aviato:before { + content: "\f421"; } + +.fa-award:before { + content: "\f559"; } + +.fa-aws:before { + content: "\f375"; } + +.fa-baby:before { + content: "\f77c"; } + +.fa-baby-carriage:before { + content: "\f77d"; } + +.fa-backspace:before { + content: "\f55a"; } + +.fa-backward:before { + content: "\f04a"; } + +.fa-bacon:before { + content: "\f7e5"; } + +.fa-bacteria:before { + content: "\e059"; } + +.fa-bacterium:before { + content: "\e05a"; } + +.fa-bahai:before { + content: "\f666"; } + +.fa-balance-scale:before { + content: "\f24e"; } + +.fa-balance-scale-left:before { + content: "\f515"; } + +.fa-balance-scale-right:before { + content: "\f516"; } + +.fa-ban:before { + content: "\f05e"; } + +.fa-band-aid:before { + content: "\f462"; } + +.fa-bandcamp:before { + content: "\f2d5"; } + +.fa-barcode:before { + content: "\f02a"; } + +.fa-bars:before { + content: "\f0c9"; } + +.fa-baseball-ball:before { + content: "\f433"; } + +.fa-basketball-ball:before { + content: "\f434"; } + +.fa-bath:before { + content: "\f2cd"; } + +.fa-battery-empty:before { + content: "\f244"; } + +.fa-battery-full:before { + content: "\f240"; } + +.fa-battery-half:before { + content: "\f242"; } + +.fa-battery-quarter:before { + content: "\f243"; } + +.fa-battery-three-quarters:before { + content: "\f241"; } + +.fa-battle-net:before { + content: "\f835"; } + +.fa-bed:before { + content: "\f236"; } + +.fa-beer:before { + content: "\f0fc"; } + +.fa-behance:before { + content: "\f1b4"; } + +.fa-behance-square:before { + content: "\f1b5"; } + +.fa-bell:before { + content: "\f0f3"; } + +.fa-bell-slash:before { + content: "\f1f6"; } + +.fa-bezier-curve:before { + content: "\f55b"; } + +.fa-bible:before { + content: "\f647"; } + +.fa-bicycle:before { + content: "\f206"; } + +.fa-biking:before { + content: "\f84a"; } + +.fa-bimobject:before { + content: "\f378"; } + +.fa-binoculars:before { + content: "\f1e5"; } + +.fa-biohazard:before { + content: "\f780"; } + +.fa-birthday-cake:before { + content: "\f1fd"; } + +.fa-bitbucket:before { + content: "\f171"; } + +.fa-bitcoin:before { + content: "\f379"; } + +.fa-bity:before { + content: "\f37a"; } + +.fa-black-tie:before { + content: "\f27e"; } + +.fa-blackberry:before { + content: "\f37b"; } + +.fa-blender:before { + content: "\f517"; } + +.fa-blender-phone:before { + content: "\f6b6"; } + +.fa-blind:before { + content: "\f29d"; } + +.fa-blog:before { + content: "\f781"; } + +.fa-blogger:before { + content: "\f37c"; } + +.fa-blogger-b:before { + content: "\f37d"; } + +.fa-bluetooth:before { + content: "\f293"; } + +.fa-bluetooth-b:before { + content: "\f294"; } + +.fa-bold:before { + content: "\f032"; } + +.fa-bolt:before { + content: "\f0e7"; } + +.fa-bomb:before { + content: "\f1e2"; } + +.fa-bone:before { + content: "\f5d7"; } + +.fa-bong:before { + content: "\f55c"; } + +.fa-book:before { + content: "\f02d"; } + +.fa-book-dead:before { + content: "\f6b7"; } + +.fa-book-medical:before { + content: "\f7e6"; } + +.fa-book-open:before { + content: "\f518"; } + +.fa-book-reader:before { + content: "\f5da"; } + +.fa-bookmark:before { + content: "\f02e"; } + +.fa-bootstrap:before { + content: "\f836"; } + +.fa-border-all:before { + content: "\f84c"; } + +.fa-border-none:before { + content: "\f850"; } + +.fa-border-style:before { + content: "\f853"; } + +.fa-bowling-ball:before { + content: "\f436"; } + +.fa-box:before { + content: "\f466"; } + +.fa-box-open:before { + content: "\f49e"; } + +.fa-box-tissue:before { + content: "\e05b"; } + +.fa-boxes:before { + content: "\f468"; } + +.fa-braille:before { + content: "\f2a1"; } + +.fa-brain:before { + content: "\f5dc"; } + +.fa-bread-slice:before { + content: "\f7ec"; } + +.fa-briefcase:before { + content: "\f0b1"; } + +.fa-briefcase-medical:before { + content: "\f469"; } + +.fa-broadcast-tower:before { + content: "\f519"; } + +.fa-broom:before { + content: "\f51a"; } + +.fa-brush:before { + content: "\f55d"; } + +.fa-btc:before { + content: "\f15a"; } + +.fa-buffer:before { + content: "\f837"; } + +.fa-bug:before { + content: "\f188"; } + +.fa-building:before { + content: "\f1ad"; } + +.fa-bullhorn:before { + content: "\f0a1"; } + +.fa-bullseye:before { + content: "\f140"; } + +.fa-burn:before { + content: "\f46a"; } + +.fa-buromobelexperte:before { + content: "\f37f"; } + +.fa-bus:before { + content: "\f207"; } + +.fa-bus-alt:before { + content: "\f55e"; } + +.fa-business-time:before { + content: "\f64a"; } + +.fa-buy-n-large:before { + content: "\f8a6"; } + +.fa-buysellads:before { + content: "\f20d"; } + +.fa-calculator:before { + content: "\f1ec"; } + +.fa-calendar:before { + content: "\f133"; } + +.fa-calendar-alt:before { + content: "\f073"; } + +.fa-calendar-check:before { + content: "\f274"; } + +.fa-calendar-day:before { + content: "\f783"; } + +.fa-calendar-minus:before { + content: "\f272"; } + +.fa-calendar-plus:before { + content: "\f271"; } + +.fa-calendar-times:before { + content: "\f273"; } + +.fa-calendar-week:before { + content: "\f784"; } + +.fa-camera:before { + content: "\f030"; } + +.fa-camera-retro:before { + content: "\f083"; } + +.fa-campground:before { + content: "\f6bb"; } + +.fa-canadian-maple-leaf:before { + content: "\f785"; } + +.fa-candy-cane:before { + content: "\f786"; } + +.fa-cannabis:before { + content: "\f55f"; } + +.fa-capsules:before { + content: "\f46b"; } + +.fa-car:before { + content: "\f1b9"; } + +.fa-car-alt:before { + content: "\f5de"; } + +.fa-car-battery:before { + content: "\f5df"; } + +.fa-car-crash:before { + content: "\f5e1"; } + +.fa-car-side:before { + content: "\f5e4"; } + +.fa-caravan:before { + content: "\f8ff"; } + +.fa-caret-down:before { + content: "\f0d7"; } + +.fa-caret-left:before { + content: "\f0d9"; } + +.fa-caret-right:before { + content: "\f0da"; } + +.fa-caret-square-down:before { + content: "\f150"; } + +.fa-caret-square-left:before { + content: "\f191"; } + +.fa-caret-square-right:before { + content: "\f152"; } + +.fa-caret-square-up:before { + content: "\f151"; } + +.fa-caret-up:before { + content: "\f0d8"; } + +.fa-carrot:before { + content: "\f787"; } + +.fa-cart-arrow-down:before { + content: "\f218"; } + +.fa-cart-plus:before { + content: "\f217"; } + +.fa-cash-register:before { + content: "\f788"; } + +.fa-cat:before { + content: "\f6be"; } + +.fa-cc-amazon-pay:before { + content: "\f42d"; } + +.fa-cc-amex:before { + content: "\f1f3"; } + +.fa-cc-apple-pay:before { + content: "\f416"; } + +.fa-cc-diners-club:before { + content: "\f24c"; } + +.fa-cc-discover:before { + content: "\f1f2"; } + +.fa-cc-jcb:before { + content: "\f24b"; } + +.fa-cc-mastercard:before { + content: "\f1f1"; } + +.fa-cc-paypal:before { + content: "\f1f4"; } + +.fa-cc-stripe:before { + content: "\f1f5"; } + +.fa-cc-visa:before { + content: "\f1f0"; } + +.fa-centercode:before { + content: "\f380"; } + +.fa-centos:before { + content: "\f789"; } + +.fa-certificate:before { + content: "\f0a3"; } + +.fa-chair:before { + content: "\f6c0"; } + +.fa-chalkboard:before { + content: "\f51b"; } + +.fa-chalkboard-teacher:before { + content: "\f51c"; } + +.fa-charging-station:before { + content: "\f5e7"; } + +.fa-chart-area:before { + content: "\f1fe"; } + +.fa-chart-bar:before { + content: "\f080"; } + +.fa-chart-line:before { + content: "\f201"; } + +.fa-chart-pie:before { + content: "\f200"; } + +.fa-check:before { + content: "\f00c"; } + +.fa-check-circle:before { + content: "\f058"; } + +.fa-check-double:before { + content: "\f560"; } + +.fa-check-square:before { + content: "\f14a"; } + +.fa-cheese:before { + content: "\f7ef"; } + +.fa-chess:before { + content: "\f439"; } + +.fa-chess-bishop:before { + content: "\f43a"; } + +.fa-chess-board:before { + content: "\f43c"; } + +.fa-chess-king:before { + content: "\f43f"; } + +.fa-chess-knight:before { + content: "\f441"; } + +.fa-chess-pawn:before { + content: "\f443"; } + +.fa-chess-queen:before { + content: "\f445"; } + +.fa-chess-rook:before { + content: "\f447"; } + +.fa-chevron-circle-down:before { + content: "\f13a"; } + +.fa-chevron-circle-left:before { + content: "\f137"; } + +.fa-chevron-circle-right:before { + content: "\f138"; } + +.fa-chevron-circle-up:before { + content: "\f139"; } + +.fa-chevron-down:before { + content: "\f078"; } + +.fa-chevron-left:before { + content: "\f053"; } + +.fa-chevron-right:before { + content: "\f054"; } + +.fa-chevron-up:before { + content: "\f077"; } + +.fa-child:before { + content: "\f1ae"; } + +.fa-chrome:before { + content: "\f268"; } + +.fa-chromecast:before { + content: "\f838"; } + +.fa-church:before { + content: "\f51d"; } + +.fa-circle:before { + content: "\f111"; } + +.fa-circle-notch:before { + content: "\f1ce"; } + +.fa-city:before { + content: "\f64f"; } + +.fa-clinic-medical:before { + content: "\f7f2"; } + +.fa-clipboard:before { + content: "\f328"; } + +.fa-clipboard-check:before { + content: "\f46c"; } + +.fa-clipboard-list:before { + content: "\f46d"; } + +.fa-clock:before { + content: "\f017"; } + +.fa-clone:before { + content: "\f24d"; } + +.fa-closed-captioning:before { + content: "\f20a"; } + +.fa-cloud:before { + content: "\f0c2"; } + +.fa-cloud-download-alt:before { + content: "\f381"; } + +.fa-cloud-meatball:before { + content: "\f73b"; } + +.fa-cloud-moon:before { + content: "\f6c3"; } + +.fa-cloud-moon-rain:before { + content: "\f73c"; } + +.fa-cloud-rain:before { + content: "\f73d"; } + +.fa-cloud-showers-heavy:before { + content: "\f740"; } + +.fa-cloud-sun:before { + content: "\f6c4"; } + +.fa-cloud-sun-rain:before { + content: "\f743"; } + +.fa-cloud-upload-alt:before { + content: "\f382"; } + +.fa-cloudflare:before { + content: "\e07d"; } + +.fa-cloudscale:before { + content: "\f383"; } + +.fa-cloudsmith:before { + content: "\f384"; } + +.fa-cloudversify:before { + content: "\f385"; } + +.fa-cocktail:before { + content: "\f561"; } + +.fa-code:before { + content: "\f121"; } + +.fa-code-branch:before { + content: "\f126"; } + +.fa-codepen:before { + content: "\f1cb"; } + +.fa-codiepie:before { + content: "\f284"; } + +.fa-coffee:before { + content: "\f0f4"; } + +.fa-cog:before { + content: "\f013"; } + +.fa-cogs:before { + content: "\f085"; } + +.fa-coins:before { + content: "\f51e"; } + +.fa-columns:before { + content: "\f0db"; } + +.fa-comment:before { + content: "\f075"; } + +.fa-comment-alt:before { + content: "\f27a"; } + +.fa-comment-dollar:before { + content: "\f651"; } + +.fa-comment-dots:before { + content: "\f4ad"; } + +.fa-comment-medical:before { + content: "\f7f5"; } + +.fa-comment-slash:before { + content: "\f4b3"; } + +.fa-comments:before { + content: "\f086"; } + +.fa-comments-dollar:before { + content: "\f653"; } + +.fa-compact-disc:before { + content: "\f51f"; } + +.fa-compass:before { + content: "\f14e"; } + +.fa-compress:before { + content: "\f066"; } + +.fa-compress-alt:before { + content: "\f422"; } + +.fa-compress-arrows-alt:before { + content: "\f78c"; } + +.fa-concierge-bell:before { + content: "\f562"; } + +.fa-confluence:before { + content: "\f78d"; } + +.fa-connectdevelop:before { + content: "\f20e"; } + +.fa-contao:before { + content: "\f26d"; } + +.fa-cookie:before { + content: "\f563"; } + +.fa-cookie-bite:before { + content: "\f564"; } + +.fa-copy:before { + content: "\f0c5"; } + +.fa-copyright:before { + content: "\f1f9"; } + +.fa-cotton-bureau:before { + content: "\f89e"; } + +.fa-couch:before { + content: "\f4b8"; } + +.fa-cpanel:before { + content: "\f388"; } + +.fa-creative-commons:before { + content: "\f25e"; } + +.fa-creative-commons-by:before { + content: "\f4e7"; } + +.fa-creative-commons-nc:before { + content: "\f4e8"; } + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; } + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; } + +.fa-creative-commons-nd:before { + content: "\f4eb"; } + +.fa-creative-commons-pd:before { + content: "\f4ec"; } + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; } + +.fa-creative-commons-remix:before { + content: "\f4ee"; } + +.fa-creative-commons-sa:before { + content: "\f4ef"; } + +.fa-creative-commons-sampling:before { + content: "\f4f0"; } + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; } + +.fa-creative-commons-share:before { + content: "\f4f2"; } + +.fa-creative-commons-zero:before { + content: "\f4f3"; } + +.fa-credit-card:before { + content: "\f09d"; } + +.fa-critical-role:before { + content: "\f6c9"; } + +.fa-crop:before { + content: "\f125"; } + +.fa-crop-alt:before { + content: "\f565"; } + +.fa-cross:before { + content: "\f654"; } + +.fa-crosshairs:before { + content: "\f05b"; } + +.fa-crow:before { + content: "\f520"; } + +.fa-crown:before { + content: "\f521"; } + +.fa-crutch:before { + content: "\f7f7"; } + +.fa-css3:before { + content: "\f13c"; } + +.fa-css3-alt:before { + content: "\f38b"; } + +.fa-cube:before { + content: "\f1b2"; } + +.fa-cubes:before { + content: "\f1b3"; } + +.fa-cut:before { + content: "\f0c4"; } + +.fa-cuttlefish:before { + content: "\f38c"; } + +.fa-d-and-d:before { + content: "\f38d"; } + +.fa-d-and-d-beyond:before { + content: "\f6ca"; } + +.fa-dailymotion:before { + content: "\e052"; } + +.fa-dashcube:before { + content: "\f210"; } + +.fa-database:before { + content: "\f1c0"; } + +.fa-deaf:before { + content: "\f2a4"; } + +.fa-deezer:before { + content: "\e077"; } + +.fa-delicious:before { + content: "\f1a5"; } + +.fa-democrat:before { + content: "\f747"; } + +.fa-deploydog:before { + content: "\f38e"; } + +.fa-deskpro:before { + content: "\f38f"; } + +.fa-desktop:before { + content: "\f108"; } + +.fa-dev:before { + content: "\f6cc"; } + +.fa-deviantart:before { + content: "\f1bd"; } + +.fa-dharmachakra:before { + content: "\f655"; } + +.fa-dhl:before { + content: "\f790"; } + +.fa-diagnoses:before { + content: "\f470"; } + +.fa-diaspora:before { + content: "\f791"; } + +.fa-dice:before { + content: "\f522"; } + +.fa-dice-d20:before { + content: "\f6cf"; } + +.fa-dice-d6:before { + content: "\f6d1"; } + +.fa-dice-five:before { + content: "\f523"; } + +.fa-dice-four:before { + content: "\f524"; } + +.fa-dice-one:before { + content: "\f525"; } + +.fa-dice-six:before { + content: "\f526"; } + +.fa-dice-three:before { + content: "\f527"; } + +.fa-dice-two:before { + content: "\f528"; } + +.fa-digg:before { + content: "\f1a6"; } + +.fa-digital-ocean:before { + content: "\f391"; } + +.fa-digital-tachograph:before { + content: "\f566"; } + +.fa-directions:before { + content: "\f5eb"; } + +.fa-discord:before { + content: "\f392"; } + +.fa-discourse:before { + content: "\f393"; } + +.fa-disease:before { + content: "\f7fa"; } + +.fa-divide:before { + content: "\f529"; } + +.fa-dizzy:before { + content: "\f567"; } + +.fa-dna:before { + content: "\f471"; } + +.fa-dochub:before { + content: "\f394"; } + +.fa-docker:before { + content: "\f395"; } + +.fa-dog:before { + content: "\f6d3"; } + +.fa-dollar-sign:before { + content: "\f155"; } + +.fa-dolly:before { + content: "\f472"; } + +.fa-dolly-flatbed:before { + content: "\f474"; } + +.fa-donate:before { + content: "\f4b9"; } + +.fa-door-closed:before { + content: "\f52a"; } + +.fa-door-open:before { + content: "\f52b"; } + +.fa-dot-circle:before { + content: "\f192"; } + +.fa-dove:before { + content: "\f4ba"; } + +.fa-download:before { + content: "\f019"; } + +.fa-draft2digital:before { + content: "\f396"; } + +.fa-drafting-compass:before { + content: "\f568"; } + +.fa-dragon:before { + content: "\f6d5"; } + +.fa-draw-polygon:before { + content: "\f5ee"; } + +.fa-dribbble:before { + content: "\f17d"; } + +.fa-dribbble-square:before { + content: "\f397"; } + +.fa-dropbox:before { + content: "\f16b"; } + +.fa-drum:before { + content: "\f569"; } + +.fa-drum-steelpan:before { + content: "\f56a"; } + +.fa-drumstick-bite:before { + content: "\f6d7"; } + +.fa-drupal:before { + content: "\f1a9"; } + +.fa-dumbbell:before { + content: "\f44b"; } + +.fa-dumpster:before { + content: "\f793"; } + +.fa-dumpster-fire:before { + content: "\f794"; } + +.fa-dungeon:before { + content: "\f6d9"; } + +.fa-dyalog:before { + content: "\f399"; } + +.fa-earlybirds:before { + content: "\f39a"; } + +.fa-ebay:before { + content: "\f4f4"; } + +.fa-edge:before { + content: "\f282"; } + +.fa-edge-legacy:before { + content: "\e078"; } + +.fa-edit:before { + content: "\f044"; } + +.fa-egg:before { + content: "\f7fb"; } + +.fa-eject:before { + content: "\f052"; } + +.fa-elementor:before { + content: "\f430"; } + +.fa-ellipsis-h:before { + content: "\f141"; } + +.fa-ellipsis-v:before { + content: "\f142"; } + +.fa-ello:before { + content: "\f5f1"; } + +.fa-ember:before { + content: "\f423"; } + +.fa-empire:before { + content: "\f1d1"; } + +.fa-envelope:before { + content: "\f0e0"; } + +.fa-envelope-open:before { + content: "\f2b6"; } + +.fa-envelope-open-text:before { + content: "\f658"; } + +.fa-envelope-square:before { + content: "\f199"; } + +.fa-envira:before { + content: "\f299"; } + +.fa-equals:before { + content: "\f52c"; } + +.fa-eraser:before { + content: "\f12d"; } + +.fa-erlang:before { + content: "\f39d"; } + +.fa-ethereum:before { + content: "\f42e"; } + +.fa-ethernet:before { + content: "\f796"; } + +.fa-etsy:before { + content: "\f2d7"; } + +.fa-euro-sign:before { + content: "\f153"; } + +.fa-evernote:before { + content: "\f839"; } + +.fa-exchange-alt:before { + content: "\f362"; } + +.fa-exclamation:before { + content: "\f12a"; } + +.fa-exclamation-circle:before { + content: "\f06a"; } + +.fa-exclamation-triangle:before { + content: "\f071"; } + +.fa-expand:before { + content: "\f065"; } + +.fa-expand-alt:before { + content: "\f424"; } + +.fa-expand-arrows-alt:before { + content: "\f31e"; } + +.fa-expeditedssl:before { + content: "\f23e"; } + +.fa-external-link-alt:before { + content: "\f35d"; } + +.fa-external-link-square-alt:before { + content: "\f360"; } + +.fa-eye:before { + content: "\f06e"; } + +.fa-eye-dropper:before { + content: "\f1fb"; } + +.fa-eye-slash:before { + content: "\f070"; } + +.fa-facebook:before { + content: "\f09a"; } + +.fa-facebook-f:before { + content: "\f39e"; } + +.fa-facebook-messenger:before { + content: "\f39f"; } + +.fa-facebook-square:before { + content: "\f082"; } + +.fa-fan:before { + content: "\f863"; } + +.fa-fantasy-flight-games:before { + content: "\f6dc"; } + +.fa-fast-backward:before { + content: "\f049"; } + +.fa-fast-forward:before { + content: "\f050"; } + +.fa-faucet:before { + content: "\e005"; } + +.fa-fax:before { + content: "\f1ac"; } + +.fa-feather:before { + content: "\f52d"; } + +.fa-feather-alt:before { + content: "\f56b"; } + +.fa-fedex:before { + content: "\f797"; } + +.fa-fedora:before { + content: "\f798"; } + +.fa-female:before { + content: "\f182"; } + +.fa-fighter-jet:before { + content: "\f0fb"; } + +.fa-figma:before { + content: "\f799"; } + +.fa-file:before { + content: "\f15b"; } + +.fa-file-alt:before { + content: "\f15c"; } + +.fa-file-archive:before { + content: "\f1c6"; } + +.fa-file-audio:before { + content: "\f1c7"; } + +.fa-file-code:before { + content: "\f1c9"; } + +.fa-file-contract:before { + content: "\f56c"; } + +.fa-file-csv:before { + content: "\f6dd"; } + +.fa-file-download:before { + content: "\f56d"; } + +.fa-file-excel:before { + content: "\f1c3"; } + +.fa-file-export:before { + content: "\f56e"; } + +.fa-file-image:before { + content: "\f1c5"; } + +.fa-file-import:before { + content: "\f56f"; } + +.fa-file-invoice:before { + content: "\f570"; } + +.fa-file-invoice-dollar:before { + content: "\f571"; } + +.fa-file-medical:before { + content: "\f477"; } + +.fa-file-medical-alt:before { + content: "\f478"; } + +.fa-file-pdf:before { + content: "\f1c1"; } + +.fa-file-powerpoint:before { + content: "\f1c4"; } + +.fa-file-prescription:before { + content: "\f572"; } + +.fa-file-signature:before { + content: "\f573"; } + +.fa-file-upload:before { + content: "\f574"; } + +.fa-file-video:before { + content: "\f1c8"; } + +.fa-file-word:before { + content: "\f1c2"; } + +.fa-fill:before { + content: "\f575"; } + +.fa-fill-drip:before { + content: "\f576"; } + +.fa-film:before { + content: "\f008"; } + +.fa-filter:before { + content: "\f0b0"; } + +.fa-fingerprint:before { + content: "\f577"; } + +.fa-fire:before { + content: "\f06d"; } + +.fa-fire-alt:before { + content: "\f7e4"; } + +.fa-fire-extinguisher:before { + content: "\f134"; } + +.fa-firefox:before { + content: "\f269"; } + +.fa-firefox-browser:before { + content: "\e007"; } + +.fa-first-aid:before { + content: "\f479"; } + +.fa-first-order:before { + content: "\f2b0"; } + +.fa-first-order-alt:before { + content: "\f50a"; } + +.fa-firstdraft:before { + content: "\f3a1"; } + +.fa-fish:before { + content: "\f578"; } + +.fa-fist-raised:before { + content: "\f6de"; } + +.fa-flag:before { + content: "\f024"; } + +.fa-flag-checkered:before { + content: "\f11e"; } + +.fa-flag-usa:before { + content: "\f74d"; } + +.fa-flask:before { + content: "\f0c3"; } + +.fa-flickr:before { + content: "\f16e"; } + +.fa-flipboard:before { + content: "\f44d"; } + +.fa-flushed:before { + content: "\f579"; } + +.fa-fly:before { + content: "\f417"; } + +.fa-folder:before { + content: "\f07b"; } + +.fa-folder-minus:before { + content: "\f65d"; } + +.fa-folder-open:before { + content: "\f07c"; } + +.fa-folder-plus:before { + content: "\f65e"; } + +.fa-font:before { + content: "\f031"; } + +.fa-font-awesome:before { + content: "\f2b4"; } + +.fa-font-awesome-alt:before { + content: "\f35c"; } + +.fa-font-awesome-flag:before { + content: "\f425"; } + +.fa-font-awesome-logo-full:before { + content: "\f4e6"; } + +.fa-fonticons:before { + content: "\f280"; } + +.fa-fonticons-fi:before { + content: "\f3a2"; } + +.fa-football-ball:before { + content: "\f44e"; } + +.fa-fort-awesome:before { + content: "\f286"; } + +.fa-fort-awesome-alt:before { + content: "\f3a3"; } + +.fa-forumbee:before { + content: "\f211"; } + +.fa-forward:before { + content: "\f04e"; } + +.fa-foursquare:before { + content: "\f180"; } + +.fa-free-code-camp:before { + content: "\f2c5"; } + +.fa-freebsd:before { + content: "\f3a4"; } + +.fa-frog:before { + content: "\f52e"; } + +.fa-frown:before { + content: "\f119"; } + +.fa-frown-open:before { + content: "\f57a"; } + +.fa-fulcrum:before { + content: "\f50b"; } + +.fa-funnel-dollar:before { + content: "\f662"; } + +.fa-futbol:before { + content: "\f1e3"; } + +.fa-galactic-republic:before { + content: "\f50c"; } + +.fa-galactic-senate:before { + content: "\f50d"; } + +.fa-gamepad:before { + content: "\f11b"; } + +.fa-gas-pump:before { + content: "\f52f"; } + +.fa-gavel:before { + content: "\f0e3"; } + +.fa-gem:before { + content: "\f3a5"; } + +.fa-genderless:before { + content: "\f22d"; } + +.fa-get-pocket:before { + content: "\f265"; } + +.fa-gg:before { + content: "\f260"; } + +.fa-gg-circle:before { + content: "\f261"; } + +.fa-ghost:before { + content: "\f6e2"; } + +.fa-gift:before { + content: "\f06b"; } + +.fa-gifts:before { + content: "\f79c"; } + +.fa-git:before { + content: "\f1d3"; } + +.fa-git-alt:before { + content: "\f841"; } + +.fa-git-square:before { + content: "\f1d2"; } + +.fa-github:before { + content: "\f09b"; } + +.fa-github-alt:before { + content: "\f113"; } + +.fa-github-square:before { + content: "\f092"; } + +.fa-gitkraken:before { + content: "\f3a6"; } + +.fa-gitlab:before { + content: "\f296"; } + +.fa-gitter:before { + content: "\f426"; } + +.fa-glass-cheers:before { + content: "\f79f"; } + +.fa-glass-martini:before { + content: "\f000"; } + +.fa-glass-martini-alt:before { + content: "\f57b"; } + +.fa-glass-whiskey:before { + content: "\f7a0"; } + +.fa-glasses:before { + content: "\f530"; } + +.fa-glide:before { + content: "\f2a5"; } + +.fa-glide-g:before { + content: "\f2a6"; } + +.fa-globe:before { + content: "\f0ac"; } + +.fa-globe-africa:before { + content: "\f57c"; } + +.fa-globe-americas:before { + content: "\f57d"; } + +.fa-globe-asia:before { + content: "\f57e"; } + +.fa-globe-europe:before { + content: "\f7a2"; } + +.fa-gofore:before { + content: "\f3a7"; } + +.fa-golf-ball:before { + content: "\f450"; } + +.fa-goodreads:before { + content: "\f3a8"; } + +.fa-goodreads-g:before { + content: "\f3a9"; } + +.fa-google:before { + content: "\f1a0"; } + +.fa-google-drive:before { + content: "\f3aa"; } + +.fa-google-pay:before { + content: "\e079"; } + +.fa-google-play:before { + content: "\f3ab"; } + +.fa-google-plus:before { + content: "\f2b3"; } + +.fa-google-plus-g:before { + content: "\f0d5"; } + +.fa-google-plus-square:before { + content: "\f0d4"; } + +.fa-google-wallet:before { + content: "\f1ee"; } + +.fa-gopuram:before { + content: "\f664"; } + +.fa-graduation-cap:before { + content: "\f19d"; } + +.fa-gratipay:before { + content: "\f184"; } + +.fa-grav:before { + content: "\f2d6"; } + +.fa-greater-than:before { + content: "\f531"; } + +.fa-greater-than-equal:before { + content: "\f532"; } + +.fa-grimace:before { + content: "\f57f"; } + +.fa-grin:before { + content: "\f580"; } + +.fa-grin-alt:before { + content: "\f581"; } + +.fa-grin-beam:before { + content: "\f582"; } + +.fa-grin-beam-sweat:before { + content: "\f583"; } + +.fa-grin-hearts:before { + content: "\f584"; } + +.fa-grin-squint:before { + content: "\f585"; } + +.fa-grin-squint-tears:before { + content: "\f586"; } + +.fa-grin-stars:before { + content: "\f587"; } + +.fa-grin-tears:before { + content: "\f588"; } + +.fa-grin-tongue:before { + content: "\f589"; } + +.fa-grin-tongue-squint:before { + content: "\f58a"; } + +.fa-grin-tongue-wink:before { + content: "\f58b"; } + +.fa-grin-wink:before { + content: "\f58c"; } + +.fa-grip-horizontal:before { + content: "\f58d"; } + +.fa-grip-lines:before { + content: "\f7a4"; } + +.fa-grip-lines-vertical:before { + content: "\f7a5"; } + +.fa-grip-vertical:before { + content: "\f58e"; } + +.fa-gripfire:before { + content: "\f3ac"; } + +.fa-grunt:before { + content: "\f3ad"; } + +.fa-guilded:before { + content: "\e07e"; } + +.fa-guitar:before { + content: "\f7a6"; } + +.fa-gulp:before { + content: "\f3ae"; } + +.fa-h-square:before { + content: "\f0fd"; } + +.fa-hacker-news:before { + content: "\f1d4"; } + +.fa-hacker-news-square:before { + content: "\f3af"; } + +.fa-hackerrank:before { + content: "\f5f7"; } + +.fa-hamburger:before { + content: "\f805"; } + +.fa-hammer:before { + content: "\f6e3"; } + +.fa-hamsa:before { + content: "\f665"; } + +.fa-hand-holding:before { + content: "\f4bd"; } + +.fa-hand-holding-heart:before { + content: "\f4be"; } + +.fa-hand-holding-medical:before { + content: "\e05c"; } + +.fa-hand-holding-usd:before { + content: "\f4c0"; } + +.fa-hand-holding-water:before { + content: "\f4c1"; } + +.fa-hand-lizard:before { + content: "\f258"; } + +.fa-hand-middle-finger:before { + content: "\f806"; } + +.fa-hand-paper:before { + content: "\f256"; } + +.fa-hand-peace:before { + content: "\f25b"; } + +.fa-hand-point-down:before { + content: "\f0a7"; } + +.fa-hand-point-left:before { + content: "\f0a5"; } + +.fa-hand-point-right:before { + content: "\f0a4"; } + +.fa-hand-point-up:before { + content: "\f0a6"; } + +.fa-hand-pointer:before { + content: "\f25a"; } + +.fa-hand-rock:before { + content: "\f255"; } + +.fa-hand-scissors:before { + content: "\f257"; } + +.fa-hand-sparkles:before { + content: "\e05d"; } + +.fa-hand-spock:before { + content: "\f259"; } + +.fa-hands:before { + content: "\f4c2"; } + +.fa-hands-helping:before { + content: "\f4c4"; } + +.fa-hands-wash:before { + content: "\e05e"; } + +.fa-handshake:before { + content: "\f2b5"; } + +.fa-handshake-alt-slash:before { + content: "\e05f"; } + +.fa-handshake-slash:before { + content: "\e060"; } + +.fa-hanukiah:before { + content: "\f6e6"; } + +.fa-hard-hat:before { + content: "\f807"; } + +.fa-hashtag:before { + content: "\f292"; } + +.fa-hat-cowboy:before { + content: "\f8c0"; } + +.fa-hat-cowboy-side:before { + content: "\f8c1"; } + +.fa-hat-wizard:before { + content: "\f6e8"; } + +.fa-hdd:before { + content: "\f0a0"; } + +.fa-head-side-cough:before { + content: "\e061"; } + +.fa-head-side-cough-slash:before { + content: "\e062"; } + +.fa-head-side-mask:before { + content: "\e063"; } + +.fa-head-side-virus:before { + content: "\e064"; } + +.fa-heading:before { + content: "\f1dc"; } + +.fa-headphones:before { + content: "\f025"; } + +.fa-headphones-alt:before { + content: "\f58f"; } + +.fa-headset:before { + content: "\f590"; } + +.fa-heart:before { + content: "\f004"; } + +.fa-heart-broken:before { + content: "\f7a9"; } + +.fa-heartbeat:before { + content: "\f21e"; } + +.fa-helicopter:before { + content: "\f533"; } + +.fa-highlighter:before { + content: "\f591"; } + +.fa-hiking:before { + content: "\f6ec"; } + +.fa-hippo:before { + content: "\f6ed"; } + +.fa-hips:before { + content: "\f452"; } + +.fa-hire-a-helper:before { + content: "\f3b0"; } + +.fa-history:before { + content: "\f1da"; } + +.fa-hive:before { + content: "\e07f"; } + +.fa-hockey-puck:before { + content: "\f453"; } + +.fa-holly-berry:before { + content: "\f7aa"; } + +.fa-home:before { + content: "\f015"; } + +.fa-hooli:before { + content: "\f427"; } + +.fa-hornbill:before { + content: "\f592"; } + +.fa-horse:before { + content: "\f6f0"; } + +.fa-horse-head:before { + content: "\f7ab"; } + +.fa-hospital:before { + content: "\f0f8"; } + +.fa-hospital-alt:before { + content: "\f47d"; } + +.fa-hospital-symbol:before { + content: "\f47e"; } + +.fa-hospital-user:before { + content: "\f80d"; } + +.fa-hot-tub:before { + content: "\f593"; } + +.fa-hotdog:before { + content: "\f80f"; } + +.fa-hotel:before { + content: "\f594"; } + +.fa-hotjar:before { + content: "\f3b1"; } + +.fa-hourglass:before { + content: "\f254"; } + +.fa-hourglass-end:before { + content: "\f253"; } + +.fa-hourglass-half:before { + content: "\f252"; } + +.fa-hourglass-start:before { + content: "\f251"; } + +.fa-house-damage:before { + content: "\f6f1"; } + +.fa-house-user:before { + content: "\e065"; } + +.fa-houzz:before { + content: "\f27c"; } + +.fa-hryvnia:before { + content: "\f6f2"; } + +.fa-html5:before { + content: "\f13b"; } + +.fa-hubspot:before { + content: "\f3b2"; } + +.fa-i-cursor:before { + content: "\f246"; } + +.fa-ice-cream:before { + content: "\f810"; } + +.fa-icicles:before { + content: "\f7ad"; } + +.fa-icons:before { + content: "\f86d"; } + +.fa-id-badge:before { + content: "\f2c1"; } + +.fa-id-card:before { + content: "\f2c2"; } + +.fa-id-card-alt:before { + content: "\f47f"; } + +.fa-ideal:before { + content: "\e013"; } + +.fa-igloo:before { + content: "\f7ae"; } + +.fa-image:before { + content: "\f03e"; } + +.fa-images:before { + content: "\f302"; } + +.fa-imdb:before { + content: "\f2d8"; } + +.fa-inbox:before { + content: "\f01c"; } + +.fa-indent:before { + content: "\f03c"; } + +.fa-industry:before { + content: "\f275"; } + +.fa-infinity:before { + content: "\f534"; } + +.fa-info:before { + content: "\f129"; } + +.fa-info-circle:before { + content: "\f05a"; } + +.fa-innosoft:before { + content: "\e080"; } + +.fa-instagram:before { + content: "\f16d"; } + +.fa-instagram-square:before { + content: "\e055"; } + +.fa-instalod:before { + content: "\e081"; } + +.fa-intercom:before { + content: "\f7af"; } + +.fa-internet-explorer:before { + content: "\f26b"; } + +.fa-invision:before { + content: "\f7b0"; } + +.fa-ioxhost:before { + content: "\f208"; } + +.fa-italic:before { + content: "\f033"; } + +.fa-itch-io:before { + content: "\f83a"; } + +.fa-itunes:before { + content: "\f3b4"; } + +.fa-itunes-note:before { + content: "\f3b5"; } + +.fa-java:before { + content: "\f4e4"; } + +.fa-jedi:before { + content: "\f669"; } + +.fa-jedi-order:before { + content: "\f50e"; } + +.fa-jenkins:before { + content: "\f3b6"; } + +.fa-jira:before { + content: "\f7b1"; } + +.fa-joget:before { + content: "\f3b7"; } + +.fa-joint:before { + content: "\f595"; } + +.fa-joomla:before { + content: "\f1aa"; } + +.fa-journal-whills:before { + content: "\f66a"; } + +.fa-js:before { + content: "\f3b8"; } + +.fa-js-square:before { + content: "\f3b9"; } + +.fa-jsfiddle:before { + content: "\f1cc"; } + +.fa-kaaba:before { + content: "\f66b"; } + +.fa-kaggle:before { + content: "\f5fa"; } + +.fa-key:before { + content: "\f084"; } + +.fa-keybase:before { + content: "\f4f5"; } + +.fa-keyboard:before { + content: "\f11c"; } + +.fa-keycdn:before { + content: "\f3ba"; } + +.fa-khanda:before { + content: "\f66d"; } + +.fa-kickstarter:before { + content: "\f3bb"; } + +.fa-kickstarter-k:before { + content: "\f3bc"; } + +.fa-kiss:before { + content: "\f596"; } + +.fa-kiss-beam:before { + content: "\f597"; } + +.fa-kiss-wink-heart:before { + content: "\f598"; } + +.fa-kiwi-bird:before { + content: "\f535"; } + +.fa-korvue:before { + content: "\f42f"; } + +.fa-landmark:before { + content: "\f66f"; } + +.fa-language:before { + content: "\f1ab"; } + +.fa-laptop:before { + content: "\f109"; } + +.fa-laptop-code:before { + content: "\f5fc"; } + +.fa-laptop-house:before { + content: "\e066"; } + +.fa-laptop-medical:before { + content: "\f812"; } + +.fa-laravel:before { + content: "\f3bd"; } + +.fa-lastfm:before { + content: "\f202"; } + +.fa-lastfm-square:before { + content: "\f203"; } + +.fa-laugh:before { + content: "\f599"; } + +.fa-laugh-beam:before { + content: "\f59a"; } + +.fa-laugh-squint:before { + content: "\f59b"; } + +.fa-laugh-wink:before { + content: "\f59c"; } + +.fa-layer-group:before { + content: "\f5fd"; } + +.fa-leaf:before { + content: "\f06c"; } + +.fa-leanpub:before { + content: "\f212"; } + +.fa-lemon:before { + content: "\f094"; } + +.fa-less:before { + content: "\f41d"; } + +.fa-less-than:before { + content: "\f536"; } + +.fa-less-than-equal:before { + content: "\f537"; } + +.fa-level-down-alt:before { + content: "\f3be"; } + +.fa-level-up-alt:before { + content: "\f3bf"; } + +.fa-life-ring:before { + content: "\f1cd"; } + +.fa-lightbulb:before { + content: "\f0eb"; } + +.fa-line:before { + content: "\f3c0"; } + +.fa-link:before { + content: "\f0c1"; } + +.fa-linkedin:before { + content: "\f08c"; } + +.fa-linkedin-in:before { + content: "\f0e1"; } + +.fa-linode:before { + content: "\f2b8"; } + +.fa-linux:before { + content: "\f17c"; } + +.fa-lira-sign:before { + content: "\f195"; } + +.fa-list:before { + content: "\f03a"; } + +.fa-list-alt:before { + content: "\f022"; } + +.fa-list-ol:before { + content: "\f0cb"; } + +.fa-list-ul:before { + content: "\f0ca"; } + +.fa-location-arrow:before { + content: "\f124"; } + +.fa-lock:before { + content: "\f023"; } + +.fa-lock-open:before { + content: "\f3c1"; } + +.fa-long-arrow-alt-down:before { + content: "\f309"; } + +.fa-long-arrow-alt-left:before { + content: "\f30a"; } + +.fa-long-arrow-alt-right:before { + content: "\f30b"; } + +.fa-long-arrow-alt-up:before { + content: "\f30c"; } + +.fa-low-vision:before { + content: "\f2a8"; } + +.fa-luggage-cart:before { + content: "\f59d"; } + +.fa-lungs:before { + content: "\f604"; } + +.fa-lungs-virus:before { + content: "\e067"; } + +.fa-lyft:before { + content: "\f3c3"; } + +.fa-magento:before { + content: "\f3c4"; } + +.fa-magic:before { + content: "\f0d0"; } + +.fa-magnet:before { + content: "\f076"; } + +.fa-mail-bulk:before { + content: "\f674"; } + +.fa-mailchimp:before { + content: "\f59e"; } + +.fa-male:before { + content: "\f183"; } + +.fa-mandalorian:before { + content: "\f50f"; } + +.fa-map:before { + content: "\f279"; } + +.fa-map-marked:before { + content: "\f59f"; } + +.fa-map-marked-alt:before { + content: "\f5a0"; } + +.fa-map-marker:before { + content: "\f041"; } + +.fa-map-marker-alt:before { + content: "\f3c5"; } + +.fa-map-pin:before { + content: "\f276"; } + +.fa-map-signs:before { + content: "\f277"; } + +.fa-markdown:before { + content: "\f60f"; } + +.fa-marker:before { + content: "\f5a1"; } + +.fa-mars:before { + content: "\f222"; } + +.fa-mars-double:before { + content: "\f227"; } + +.fa-mars-stroke:before { + content: "\f229"; } + +.fa-mars-stroke-h:before { + content: "\f22b"; } + +.fa-mars-stroke-v:before { + content: "\f22a"; } + +.fa-mask:before { + content: "\f6fa"; } + +.fa-mastodon:before { + content: "\f4f6"; } + +.fa-maxcdn:before { + content: "\f136"; } + +.fa-mdb:before { + content: "\f8ca"; } + +.fa-medal:before { + content: "\f5a2"; } + +.fa-medapps:before { + content: "\f3c6"; } + +.fa-medium:before { + content: "\f23a"; } + +.fa-medium-m:before { + content: "\f3c7"; } + +.fa-medkit:before { + content: "\f0fa"; } + +.fa-medrt:before { + content: "\f3c8"; } + +.fa-meetup:before { + content: "\f2e0"; } + +.fa-megaport:before { + content: "\f5a3"; } + +.fa-meh:before { + content: "\f11a"; } + +.fa-meh-blank:before { + content: "\f5a4"; } + +.fa-meh-rolling-eyes:before { + content: "\f5a5"; } + +.fa-memory:before { + content: "\f538"; } + +.fa-mendeley:before { + content: "\f7b3"; } + +.fa-menorah:before { + content: "\f676"; } + +.fa-mercury:before { + content: "\f223"; } + +.fa-meteor:before { + content: "\f753"; } + +.fa-microblog:before { + content: "\e01a"; } + +.fa-microchip:before { + content: "\f2db"; } + +.fa-microphone:before { + content: "\f130"; } + +.fa-microphone-alt:before { + content: "\f3c9"; } + +.fa-microphone-alt-slash:before { + content: "\f539"; } + +.fa-microphone-slash:before { + content: "\f131"; } + +.fa-microscope:before { + content: "\f610"; } + +.fa-microsoft:before { + content: "\f3ca"; } + +.fa-minus:before { + content: "\f068"; } + +.fa-minus-circle:before { + content: "\f056"; } + +.fa-minus-square:before { + content: "\f146"; } + +.fa-mitten:before { + content: "\f7b5"; } + +.fa-mix:before { + content: "\f3cb"; } + +.fa-mixcloud:before { + content: "\f289"; } + +.fa-mixer:before { + content: "\e056"; } + +.fa-mizuni:before { + content: "\f3cc"; } + +.fa-mobile:before { + content: "\f10b"; } + +.fa-mobile-alt:before { + content: "\f3cd"; } + +.fa-modx:before { + content: "\f285"; } + +.fa-monero:before { + content: "\f3d0"; } + +.fa-money-bill:before { + content: "\f0d6"; } + +.fa-money-bill-alt:before { + content: "\f3d1"; } + +.fa-money-bill-wave:before { + content: "\f53a"; } + +.fa-money-bill-wave-alt:before { + content: "\f53b"; } + +.fa-money-check:before { + content: "\f53c"; } + +.fa-money-check-alt:before { + content: "\f53d"; } + +.fa-monument:before { + content: "\f5a6"; } + +.fa-moon:before { + content: "\f186"; } + +.fa-mortar-pestle:before { + content: "\f5a7"; } + +.fa-mosque:before { + content: "\f678"; } + +.fa-motorcycle:before { + content: "\f21c"; } + +.fa-mountain:before { + content: "\f6fc"; } + +.fa-mouse:before { + content: "\f8cc"; } + +.fa-mouse-pointer:before { + content: "\f245"; } + +.fa-mug-hot:before { + content: "\f7b6"; } + +.fa-music:before { + content: "\f001"; } + +.fa-napster:before { + content: "\f3d2"; } + +.fa-neos:before { + content: "\f612"; } + +.fa-network-wired:before { + content: "\f6ff"; } + +.fa-neuter:before { + content: "\f22c"; } + +.fa-newspaper:before { + content: "\f1ea"; } + +.fa-nimblr:before { + content: "\f5a8"; } + +.fa-node:before { + content: "\f419"; } + +.fa-node-js:before { + content: "\f3d3"; } + +.fa-not-equal:before { + content: "\f53e"; } + +.fa-notes-medical:before { + content: "\f481"; } + +.fa-npm:before { + content: "\f3d4"; } + +.fa-ns8:before { + content: "\f3d5"; } + +.fa-nutritionix:before { + content: "\f3d6"; } + +.fa-object-group:before { + content: "\f247"; } + +.fa-object-ungroup:before { + content: "\f248"; } + +.fa-octopus-deploy:before { + content: "\e082"; } + +.fa-odnoklassniki:before { + content: "\f263"; } + +.fa-odnoklassniki-square:before { + content: "\f264"; } + +.fa-oil-can:before { + content: "\f613"; } + +.fa-old-republic:before { + content: "\f510"; } + +.fa-om:before { + content: "\f679"; } + +.fa-opencart:before { + content: "\f23d"; } + +.fa-openid:before { + content: "\f19b"; } + +.fa-opera:before { + content: "\f26a"; } + +.fa-optin-monster:before { + content: "\f23c"; } + +.fa-orcid:before { + content: "\f8d2"; } + +.fa-osi:before { + content: "\f41a"; } + +.fa-otter:before { + content: "\f700"; } + +.fa-outdent:before { + content: "\f03b"; } + +.fa-page4:before { + content: "\f3d7"; } + +.fa-pagelines:before { + content: "\f18c"; } + +.fa-pager:before { + content: "\f815"; } + +.fa-paint-brush:before { + content: "\f1fc"; } + +.fa-paint-roller:before { + content: "\f5aa"; } + +.fa-palette:before { + content: "\f53f"; } + +.fa-palfed:before { + content: "\f3d8"; } + +.fa-pallet:before { + content: "\f482"; } + +.fa-paper-plane:before { + content: "\f1d8"; } + +.fa-paperclip:before { + content: "\f0c6"; } + +.fa-parachute-box:before { + content: "\f4cd"; } + +.fa-paragraph:before { + content: "\f1dd"; } + +.fa-parking:before { + content: "\f540"; } + +.fa-passport:before { + content: "\f5ab"; } + +.fa-pastafarianism:before { + content: "\f67b"; } + +.fa-paste:before { + content: "\f0ea"; } + +.fa-patreon:before { + content: "\f3d9"; } + +.fa-pause:before { + content: "\f04c"; } + +.fa-pause-circle:before { + content: "\f28b"; } + +.fa-paw:before { + content: "\f1b0"; } + +.fa-paypal:before { + content: "\f1ed"; } + +.fa-peace:before { + content: "\f67c"; } + +.fa-pen:before { + content: "\f304"; } + +.fa-pen-alt:before { + content: "\f305"; } + +.fa-pen-fancy:before { + content: "\f5ac"; } + +.fa-pen-nib:before { + content: "\f5ad"; } + +.fa-pen-square:before { + content: "\f14b"; } + +.fa-pencil-alt:before { + content: "\f303"; } + +.fa-pencil-ruler:before { + content: "\f5ae"; } + +.fa-penny-arcade:before { + content: "\f704"; } + +.fa-people-arrows:before { + content: "\e068"; } + +.fa-people-carry:before { + content: "\f4ce"; } + +.fa-pepper-hot:before { + content: "\f816"; } + +.fa-perbyte:before { + content: "\e083"; } + +.fa-percent:before { + content: "\f295"; } + +.fa-percentage:before { + content: "\f541"; } + +.fa-periscope:before { + content: "\f3da"; } + +.fa-person-booth:before { + content: "\f756"; } + +.fa-phabricator:before { + content: "\f3db"; } + +.fa-phoenix-framework:before { + content: "\f3dc"; } + +.fa-phoenix-squadron:before { + content: "\f511"; } + +.fa-phone:before { + content: "\f095"; } + +.fa-phone-alt:before { + content: "\f879"; } + +.fa-phone-slash:before { + content: "\f3dd"; } + +.fa-phone-square:before { + content: "\f098"; } + +.fa-phone-square-alt:before { + content: "\f87b"; } + +.fa-phone-volume:before { + content: "\f2a0"; } + +.fa-photo-video:before { + content: "\f87c"; } + +.fa-php:before { + content: "\f457"; } + +.fa-pied-piper:before { + content: "\f2ae"; } + +.fa-pied-piper-alt:before { + content: "\f1a8"; } + +.fa-pied-piper-hat:before { + content: "\f4e5"; } + +.fa-pied-piper-pp:before { + content: "\f1a7"; } + +.fa-pied-piper-square:before { + content: "\e01e"; } + +.fa-piggy-bank:before { + content: "\f4d3"; } + +.fa-pills:before { + content: "\f484"; } + +.fa-pinterest:before { + content: "\f0d2"; } + +.fa-pinterest-p:before { + content: "\f231"; } + +.fa-pinterest-square:before { + content: "\f0d3"; } + +.fa-pizza-slice:before { + content: "\f818"; } + +.fa-place-of-worship:before { + content: "\f67f"; } + +.fa-plane:before { + content: "\f072"; } + +.fa-plane-arrival:before { + content: "\f5af"; } + +.fa-plane-departure:before { + content: "\f5b0"; } + +.fa-plane-slash:before { + content: "\e069"; } + +.fa-play:before { + content: "\f04b"; } + +.fa-play-circle:before { + content: "\f144"; } + +.fa-playstation:before { + content: "\f3df"; } + +.fa-plug:before { + content: "\f1e6"; } + +.fa-plus:before { + content: "\f067"; } + +.fa-plus-circle:before { + content: "\f055"; } + +.fa-plus-square:before { + content: "\f0fe"; } + +.fa-podcast:before { + content: "\f2ce"; } + +.fa-poll:before { + content: "\f681"; } + +.fa-poll-h:before { + content: "\f682"; } + +.fa-poo:before { + content: "\f2fe"; } + +.fa-poo-storm:before { + content: "\f75a"; } + +.fa-poop:before { + content: "\f619"; } + +.fa-portrait:before { + content: "\f3e0"; } + +.fa-pound-sign:before { + content: "\f154"; } + +.fa-power-off:before { + content: "\f011"; } + +.fa-pray:before { + content: "\f683"; } + +.fa-praying-hands:before { + content: "\f684"; } + +.fa-prescription:before { + content: "\f5b1"; } + +.fa-prescription-bottle:before { + content: "\f485"; } + +.fa-prescription-bottle-alt:before { + content: "\f486"; } + +.fa-print:before { + content: "\f02f"; } + +.fa-procedures:before { + content: "\f487"; } + +.fa-product-hunt:before { + content: "\f288"; } + +.fa-project-diagram:before { + content: "\f542"; } + +.fa-pump-medical:before { + content: "\e06a"; } + +.fa-pump-soap:before { + content: "\e06b"; } + +.fa-pushed:before { + content: "\f3e1"; } + +.fa-puzzle-piece:before { + content: "\f12e"; } + +.fa-python:before { + content: "\f3e2"; } + +.fa-qq:before { + content: "\f1d6"; } + +.fa-qrcode:before { + content: "\f029"; } + +.fa-question:before { + content: "\f128"; } + +.fa-question-circle:before { + content: "\f059"; } + +.fa-quidditch:before { + content: "\f458"; } + +.fa-quinscape:before { + content: "\f459"; } + +.fa-quora:before { + content: "\f2c4"; } + +.fa-quote-left:before { + content: "\f10d"; } + +.fa-quote-right:before { + content: "\f10e"; } + +.fa-quran:before { + content: "\f687"; } + +.fa-r-project:before { + content: "\f4f7"; } + +.fa-radiation:before { + content: "\f7b9"; } + +.fa-radiation-alt:before { + content: "\f7ba"; } + +.fa-rainbow:before { + content: "\f75b"; } + +.fa-random:before { + content: "\f074"; } + +.fa-raspberry-pi:before { + content: "\f7bb"; } + +.fa-ravelry:before { + content: "\f2d9"; } + +.fa-react:before { + content: "\f41b"; } + +.fa-reacteurope:before { + content: "\f75d"; } + +.fa-readme:before { + content: "\f4d5"; } + +.fa-rebel:before { + content: "\f1d0"; } + +.fa-receipt:before { + content: "\f543"; } + +.fa-record-vinyl:before { + content: "\f8d9"; } + +.fa-recycle:before { + content: "\f1b8"; } + +.fa-red-river:before { + content: "\f3e3"; } + +.fa-reddit:before { + content: "\f1a1"; } + +.fa-reddit-alien:before { + content: "\f281"; } + +.fa-reddit-square:before { + content: "\f1a2"; } + +.fa-redhat:before { + content: "\f7bc"; } + +.fa-redo:before { + content: "\f01e"; } + +.fa-redo-alt:before { + content: "\f2f9"; } + +.fa-registered:before { + content: "\f25d"; } + +.fa-remove-format:before { + content: "\f87d"; } + +.fa-renren:before { + content: "\f18b"; } + +.fa-reply:before { + content: "\f3e5"; } + +.fa-reply-all:before { + content: "\f122"; } + +.fa-replyd:before { + content: "\f3e6"; } + +.fa-republican:before { + content: "\f75e"; } + +.fa-researchgate:before { + content: "\f4f8"; } + +.fa-resolving:before { + content: "\f3e7"; } + +.fa-restroom:before { + content: "\f7bd"; } + +.fa-retweet:before { + content: "\f079"; } + +.fa-rev:before { + content: "\f5b2"; } + +.fa-ribbon:before { + content: "\f4d6"; } + +.fa-ring:before { + content: "\f70b"; } + +.fa-road:before { + content: "\f018"; } + +.fa-robot:before { + content: "\f544"; } + +.fa-rocket:before { + content: "\f135"; } + +.fa-rocketchat:before { + content: "\f3e8"; } + +.fa-rockrms:before { + content: "\f3e9"; } + +.fa-route:before { + content: "\f4d7"; } + +.fa-rss:before { + content: "\f09e"; } + +.fa-rss-square:before { + content: "\f143"; } + +.fa-ruble-sign:before { + content: "\f158"; } + +.fa-ruler:before { + content: "\f545"; } + +.fa-ruler-combined:before { + content: "\f546"; } + +.fa-ruler-horizontal:before { + content: "\f547"; } + +.fa-ruler-vertical:before { + content: "\f548"; } + +.fa-running:before { + content: "\f70c"; } + +.fa-rupee-sign:before { + content: "\f156"; } + +.fa-rust:before { + content: "\e07a"; } + +.fa-sad-cry:before { + content: "\f5b3"; } + +.fa-sad-tear:before { + content: "\f5b4"; } + +.fa-safari:before { + content: "\f267"; } + +.fa-salesforce:before { + content: "\f83b"; } + +.fa-sass:before { + content: "\f41e"; } + +.fa-satellite:before { + content: "\f7bf"; } + +.fa-satellite-dish:before { + content: "\f7c0"; } + +.fa-save:before { + content: "\f0c7"; } + +.fa-schlix:before { + content: "\f3ea"; } + +.fa-school:before { + content: "\f549"; } + +.fa-screwdriver:before { + content: "\f54a"; } + +.fa-scribd:before { + content: "\f28a"; } + +.fa-scroll:before { + content: "\f70e"; } + +.fa-sd-card:before { + content: "\f7c2"; } + +.fa-search:before { + content: "\f002"; } + +.fa-search-dollar:before { + content: "\f688"; } + +.fa-search-location:before { + content: "\f689"; } + +.fa-search-minus:before { + content: "\f010"; } + +.fa-search-plus:before { + content: "\f00e"; } + +.fa-searchengin:before { + content: "\f3eb"; } + +.fa-seedling:before { + content: "\f4d8"; } + +.fa-sellcast:before { + content: "\f2da"; } + +.fa-sellsy:before { + content: "\f213"; } + +.fa-server:before { + content: "\f233"; } + +.fa-servicestack:before { + content: "\f3ec"; } + +.fa-shapes:before { + content: "\f61f"; } + +.fa-share:before { + content: "\f064"; } + +.fa-share-alt:before { + content: "\f1e0"; } + +.fa-share-alt-square:before { + content: "\f1e1"; } + +.fa-share-square:before { + content: "\f14d"; } + +.fa-shekel-sign:before { + content: "\f20b"; } + +.fa-shield-alt:before { + content: "\f3ed"; } + +.fa-shield-virus:before { + content: "\e06c"; } + +.fa-ship:before { + content: "\f21a"; } + +.fa-shipping-fast:before { + content: "\f48b"; } + +.fa-shirtsinbulk:before { + content: "\f214"; } + +.fa-shoe-prints:before { + content: "\f54b"; } + +.fa-shopify:before { + content: "\e057"; } + +.fa-shopping-bag:before { + content: "\f290"; } + +.fa-shopping-basket:before { + content: "\f291"; } + +.fa-shopping-cart:before { + content: "\f07a"; } + +.fa-shopware:before { + content: "\f5b5"; } + +.fa-shower:before { + content: "\f2cc"; } + +.fa-shuttle-van:before { + content: "\f5b6"; } + +.fa-sign:before { + content: "\f4d9"; } + +.fa-sign-in-alt:before { + content: "\f2f6"; } + +.fa-sign-language:before { + content: "\f2a7"; } + +.fa-sign-out-alt:before { + content: "\f2f5"; } + +.fa-signal:before { + content: "\f012"; } + +.fa-signature:before { + content: "\f5b7"; } + +.fa-sim-card:before { + content: "\f7c4"; } + +.fa-simplybuilt:before { + content: "\f215"; } + +.fa-sink:before { + content: "\e06d"; } + +.fa-sistrix:before { + content: "\f3ee"; } + +.fa-sitemap:before { + content: "\f0e8"; } + +.fa-sith:before { + content: "\f512"; } + +.fa-skating:before { + content: "\f7c5"; } + +.fa-sketch:before { + content: "\f7c6"; } + +.fa-skiing:before { + content: "\f7c9"; } + +.fa-skiing-nordic:before { + content: "\f7ca"; } + +.fa-skull:before { + content: "\f54c"; } + +.fa-skull-crossbones:before { + content: "\f714"; } + +.fa-skyatlas:before { + content: "\f216"; } + +.fa-skype:before { + content: "\f17e"; } + +.fa-slack:before { + content: "\f198"; } + +.fa-slack-hash:before { + content: "\f3ef"; } + +.fa-slash:before { + content: "\f715"; } + +.fa-sleigh:before { + content: "\f7cc"; } + +.fa-sliders-h:before { + content: "\f1de"; } + +.fa-slideshare:before { + content: "\f1e7"; } + +.fa-smile:before { + content: "\f118"; } + +.fa-smile-beam:before { + content: "\f5b8"; } + +.fa-smile-wink:before { + content: "\f4da"; } + +.fa-smog:before { + content: "\f75f"; } + +.fa-smoking:before { + content: "\f48d"; } + +.fa-smoking-ban:before { + content: "\f54d"; } + +.fa-sms:before { + content: "\f7cd"; } + +.fa-snapchat:before { + content: "\f2ab"; } + +.fa-snapchat-ghost:before { + content: "\f2ac"; } + +.fa-snapchat-square:before { + content: "\f2ad"; } + +.fa-snowboarding:before { + content: "\f7ce"; } + +.fa-snowflake:before { + content: "\f2dc"; } + +.fa-snowman:before { + content: "\f7d0"; } + +.fa-snowplow:before { + content: "\f7d2"; } + +.fa-soap:before { + content: "\e06e"; } + +.fa-socks:before { + content: "\f696"; } + +.fa-solar-panel:before { + content: "\f5ba"; } + +.fa-sort:before { + content: "\f0dc"; } + +.fa-sort-alpha-down:before { + content: "\f15d"; } + +.fa-sort-alpha-down-alt:before { + content: "\f881"; } + +.fa-sort-alpha-up:before { + content: "\f15e"; } + +.fa-sort-alpha-up-alt:before { + content: "\f882"; } + +.fa-sort-amount-down:before { + content: "\f160"; } + +.fa-sort-amount-down-alt:before { + content: "\f884"; } + +.fa-sort-amount-up:before { + content: "\f161"; } + +.fa-sort-amount-up-alt:before { + content: "\f885"; } + +.fa-sort-down:before { + content: "\f0dd"; } + +.fa-sort-numeric-down:before { + content: "\f162"; } + +.fa-sort-numeric-down-alt:before { + content: "\f886"; } + +.fa-sort-numeric-up:before { + content: "\f163"; } + +.fa-sort-numeric-up-alt:before { + content: "\f887"; } + +.fa-sort-up:before { + content: "\f0de"; } + +.fa-soundcloud:before { + content: "\f1be"; } + +.fa-sourcetree:before { + content: "\f7d3"; } + +.fa-spa:before { + content: "\f5bb"; } + +.fa-space-shuttle:before { + content: "\f197"; } + +.fa-speakap:before { + content: "\f3f3"; } + +.fa-speaker-deck:before { + content: "\f83c"; } + +.fa-spell-check:before { + content: "\f891"; } + +.fa-spider:before { + content: "\f717"; } + +.fa-spinner:before { + content: "\f110"; } + +.fa-splotch:before { + content: "\f5bc"; } + +.fa-spotify:before { + content: "\f1bc"; } + +.fa-spray-can:before { + content: "\f5bd"; } + +.fa-square:before { + content: "\f0c8"; } + +.fa-square-full:before { + content: "\f45c"; } + +.fa-square-root-alt:before { + content: "\f698"; } + +.fa-squarespace:before { + content: "\f5be"; } + +.fa-stack-exchange:before { + content: "\f18d"; } + +.fa-stack-overflow:before { + content: "\f16c"; } + +.fa-stackpath:before { + content: "\f842"; } + +.fa-stamp:before { + content: "\f5bf"; } + +.fa-star:before { + content: "\f005"; } + +.fa-star-and-crescent:before { + content: "\f699"; } + +.fa-star-half:before { + content: "\f089"; } + +.fa-star-half-alt:before { + content: "\f5c0"; } + +.fa-star-of-david:before { + content: "\f69a"; } + +.fa-star-of-life:before { + content: "\f621"; } + +.fa-staylinked:before { + content: "\f3f5"; } + +.fa-steam:before { + content: "\f1b6"; } + +.fa-steam-square:before { + content: "\f1b7"; } + +.fa-steam-symbol:before { + content: "\f3f6"; } + +.fa-step-backward:before { + content: "\f048"; } + +.fa-step-forward:before { + content: "\f051"; } + +.fa-stethoscope:before { + content: "\f0f1"; } + +.fa-sticker-mule:before { + content: "\f3f7"; } + +.fa-sticky-note:before { + content: "\f249"; } + +.fa-stop:before { + content: "\f04d"; } + +.fa-stop-circle:before { + content: "\f28d"; } + +.fa-stopwatch:before { + content: "\f2f2"; } + +.fa-stopwatch-20:before { + content: "\e06f"; } + +.fa-store:before { + content: "\f54e"; } + +.fa-store-alt:before { + content: "\f54f"; } + +.fa-store-alt-slash:before { + content: "\e070"; } + +.fa-store-slash:before { + content: "\e071"; } + +.fa-strava:before { + content: "\f428"; } + +.fa-stream:before { + content: "\f550"; } + +.fa-street-view:before { + content: "\f21d"; } + +.fa-strikethrough:before { + content: "\f0cc"; } + +.fa-stripe:before { + content: "\f429"; } + +.fa-stripe-s:before { + content: "\f42a"; } + +.fa-stroopwafel:before { + content: "\f551"; } + +.fa-studiovinari:before { + content: "\f3f8"; } + +.fa-stumbleupon:before { + content: "\f1a4"; } + +.fa-stumbleupon-circle:before { + content: "\f1a3"; } + +.fa-subscript:before { + content: "\f12c"; } + +.fa-subway:before { + content: "\f239"; } + +.fa-suitcase:before { + content: "\f0f2"; } + +.fa-suitcase-rolling:before { + content: "\f5c1"; } + +.fa-sun:before { + content: "\f185"; } + +.fa-superpowers:before { + content: "\f2dd"; } + +.fa-superscript:before { + content: "\f12b"; } + +.fa-supple:before { + content: "\f3f9"; } + +.fa-surprise:before { + content: "\f5c2"; } + +.fa-suse:before { + content: "\f7d6"; } + +.fa-swatchbook:before { + content: "\f5c3"; } + +.fa-swift:before { + content: "\f8e1"; } + +.fa-swimmer:before { + content: "\f5c4"; } + +.fa-swimming-pool:before { + content: "\f5c5"; } + +.fa-symfony:before { + content: "\f83d"; } + +.fa-synagogue:before { + content: "\f69b"; } + +.fa-sync:before { + content: "\f021"; } + +.fa-sync-alt:before { + content: "\f2f1"; } + +.fa-syringe:before { + content: "\f48e"; } + +.fa-table:before { + content: "\f0ce"; } + +.fa-table-tennis:before { + content: "\f45d"; } + +.fa-tablet:before { + content: "\f10a"; } + +.fa-tablet-alt:before { + content: "\f3fa"; } + +.fa-tablets:before { + content: "\f490"; } + +.fa-tachometer-alt:before { + content: "\f3fd"; } + +.fa-tag:before { + content: "\f02b"; } + +.fa-tags:before { + content: "\f02c"; } + +.fa-tape:before { + content: "\f4db"; } + +.fa-tasks:before { + content: "\f0ae"; } + +.fa-taxi:before { + content: "\f1ba"; } + +.fa-teamspeak:before { + content: "\f4f9"; } + +.fa-teeth:before { + content: "\f62e"; } + +.fa-teeth-open:before { + content: "\f62f"; } + +.fa-telegram:before { + content: "\f2c6"; } + +.fa-telegram-plane:before { + content: "\f3fe"; } + +.fa-temperature-high:before { + content: "\f769"; } + +.fa-temperature-low:before { + content: "\f76b"; } + +.fa-tencent-weibo:before { + content: "\f1d5"; } + +.fa-tenge:before { + content: "\f7d7"; } + +.fa-terminal:before { + content: "\f120"; } + +.fa-text-height:before { + content: "\f034"; } + +.fa-text-width:before { + content: "\f035"; } + +.fa-th:before { + content: "\f00a"; } + +.fa-th-large:before { + content: "\f009"; } + +.fa-th-list:before { + content: "\f00b"; } + +.fa-the-red-yeti:before { + content: "\f69d"; } + +.fa-theater-masks:before { + content: "\f630"; } + +.fa-themeco:before { + content: "\f5c6"; } + +.fa-themeisle:before { + content: "\f2b2"; } + +.fa-thermometer:before { + content: "\f491"; } + +.fa-thermometer-empty:before { + content: "\f2cb"; } + +.fa-thermometer-full:before { + content: "\f2c7"; } + +.fa-thermometer-half:before { + content: "\f2c9"; } + +.fa-thermometer-quarter:before { + content: "\f2ca"; } + +.fa-thermometer-three-quarters:before { + content: "\f2c8"; } + +.fa-think-peaks:before { + content: "\f731"; } + +.fa-thumbs-down:before { + content: "\f165"; } + +.fa-thumbs-up:before { + content: "\f164"; } + +.fa-thumbtack:before { + content: "\f08d"; } + +.fa-ticket-alt:before { + content: "\f3ff"; } + +.fa-tiktok:before { + content: "\e07b"; } + +.fa-times:before { + content: "\f00d"; } + +.fa-times-circle:before { + content: "\f057"; } + +.fa-tint:before { + content: "\f043"; } + +.fa-tint-slash:before { + content: "\f5c7"; } + +.fa-tired:before { + content: "\f5c8"; } + +.fa-toggle-off:before { + content: "\f204"; } + +.fa-toggle-on:before { + content: "\f205"; } + +.fa-toilet:before { + content: "\f7d8"; } + +.fa-toilet-paper:before { + content: "\f71e"; } + +.fa-toilet-paper-slash:before { + content: "\e072"; } + +.fa-toolbox:before { + content: "\f552"; } + +.fa-tools:before { + content: "\f7d9"; } + +.fa-tooth:before { + content: "\f5c9"; } + +.fa-torah:before { + content: "\f6a0"; } + +.fa-torii-gate:before { + content: "\f6a1"; } + +.fa-tractor:before { + content: "\f722"; } + +.fa-trade-federation:before { + content: "\f513"; } + +.fa-trademark:before { + content: "\f25c"; } + +.fa-traffic-light:before { + content: "\f637"; } + +.fa-trailer:before { + content: "\e041"; } + +.fa-train:before { + content: "\f238"; } + +.fa-tram:before { + content: "\f7da"; } + +.fa-transgender:before { + content: "\f224"; } + +.fa-transgender-alt:before { + content: "\f225"; } + +.fa-trash:before { + content: "\f1f8"; } + +.fa-trash-alt:before { + content: "\f2ed"; } + +.fa-trash-restore:before { + content: "\f829"; } + +.fa-trash-restore-alt:before { + content: "\f82a"; } + +.fa-tree:before { + content: "\f1bb"; } + +.fa-trello:before { + content: "\f181"; } + +.fa-trophy:before { + content: "\f091"; } + +.fa-truck:before { + content: "\f0d1"; } + +.fa-truck-loading:before { + content: "\f4de"; } + +.fa-truck-monster:before { + content: "\f63b"; } + +.fa-truck-moving:before { + content: "\f4df"; } + +.fa-truck-pickup:before { + content: "\f63c"; } + +.fa-tshirt:before { + content: "\f553"; } + +.fa-tty:before { + content: "\f1e4"; } + +.fa-tumblr:before { + content: "\f173"; } + +.fa-tumblr-square:before { + content: "\f174"; } + +.fa-tv:before { + content: "\f26c"; } + +.fa-twitch:before { + content: "\f1e8"; } + +.fa-twitter:before { + content: "\f099"; } + +.fa-twitter-square:before { + content: "\f081"; } + +.fa-typo3:before { + content: "\f42b"; } + +.fa-uber:before { + content: "\f402"; } + +.fa-ubuntu:before { + content: "\f7df"; } + +.fa-uikit:before { + content: "\f403"; } + +.fa-umbraco:before { + content: "\f8e8"; } + +.fa-umbrella:before { + content: "\f0e9"; } + +.fa-umbrella-beach:before { + content: "\f5ca"; } + +.fa-uncharted:before { + content: "\e084"; } + +.fa-underline:before { + content: "\f0cd"; } + +.fa-undo:before { + content: "\f0e2"; } + +.fa-undo-alt:before { + content: "\f2ea"; } + +.fa-uniregistry:before { + content: "\f404"; } + +.fa-unity:before { + content: "\e049"; } + +.fa-universal-access:before { + content: "\f29a"; } + +.fa-university:before { + content: "\f19c"; } + +.fa-unlink:before { + content: "\f127"; } + +.fa-unlock:before { + content: "\f09c"; } + +.fa-unlock-alt:before { + content: "\f13e"; } + +.fa-unsplash:before { + content: "\e07c"; } + +.fa-untappd:before { + content: "\f405"; } + +.fa-upload:before { + content: "\f093"; } + +.fa-ups:before { + content: "\f7e0"; } + +.fa-usb:before { + content: "\f287"; } + +.fa-user:before { + content: "\f007"; } + +.fa-user-alt:before { + content: "\f406"; } + +.fa-user-alt-slash:before { + content: "\f4fa"; } + +.fa-user-astronaut:before { + content: "\f4fb"; } + +.fa-user-check:before { + content: "\f4fc"; } + +.fa-user-circle:before { + content: "\f2bd"; } + +.fa-user-clock:before { + content: "\f4fd"; } + +.fa-user-cog:before { + content: "\f4fe"; } + +.fa-user-edit:before { + content: "\f4ff"; } + +.fa-user-friends:before { + content: "\f500"; } + +.fa-user-graduate:before { + content: "\f501"; } + +.fa-user-injured:before { + content: "\f728"; } + +.fa-user-lock:before { + content: "\f502"; } + +.fa-user-md:before { + content: "\f0f0"; } + +.fa-user-minus:before { + content: "\f503"; } + +.fa-user-ninja:before { + content: "\f504"; } + +.fa-user-nurse:before { + content: "\f82f"; } + +.fa-user-plus:before { + content: "\f234"; } + +.fa-user-secret:before { + content: "\f21b"; } + +.fa-user-shield:before { + content: "\f505"; } + +.fa-user-slash:before { + content: "\f506"; } + +.fa-user-tag:before { + content: "\f507"; } + +.fa-user-tie:before { + content: "\f508"; } + +.fa-user-times:before { + content: "\f235"; } + +.fa-users:before { + content: "\f0c0"; } + +.fa-users-cog:before { + content: "\f509"; } + +.fa-users-slash:before { + content: "\e073"; } + +.fa-usps:before { + content: "\f7e1"; } + +.fa-ussunnah:before { + content: "\f407"; } + +.fa-utensil-spoon:before { + content: "\f2e5"; } + +.fa-utensils:before { + content: "\f2e7"; } + +.fa-vaadin:before { + content: "\f408"; } + +.fa-vector-square:before { + content: "\f5cb"; } + +.fa-venus:before { + content: "\f221"; } + +.fa-venus-double:before { + content: "\f226"; } + +.fa-venus-mars:before { + content: "\f228"; } + +.fa-vest:before { + content: "\e085"; } + +.fa-vest-patches:before { + content: "\e086"; } + +.fa-viacoin:before { + content: "\f237"; } + +.fa-viadeo:before { + content: "\f2a9"; } + +.fa-viadeo-square:before { + content: "\f2aa"; } + +.fa-vial:before { + content: "\f492"; } + +.fa-vials:before { + content: "\f493"; } + +.fa-viber:before { + content: "\f409"; } + +.fa-video:before { + content: "\f03d"; } + +.fa-video-slash:before { + content: "\f4e2"; } + +.fa-vihara:before { + content: "\f6a7"; } + +.fa-vimeo:before { + content: "\f40a"; } + +.fa-vimeo-square:before { + content: "\f194"; } + +.fa-vimeo-v:before { + content: "\f27d"; } + +.fa-vine:before { + content: "\f1ca"; } + +.fa-virus:before { + content: "\e074"; } + +.fa-virus-slash:before { + content: "\e075"; } + +.fa-viruses:before { + content: "\e076"; } + +.fa-vk:before { + content: "\f189"; } + +.fa-vnv:before { + content: "\f40b"; } + +.fa-voicemail:before { + content: "\f897"; } + +.fa-volleyball-ball:before { + content: "\f45f"; } + +.fa-volume-down:before { + content: "\f027"; } + +.fa-volume-mute:before { + content: "\f6a9"; } + +.fa-volume-off:before { + content: "\f026"; } + +.fa-volume-up:before { + content: "\f028"; } + +.fa-vote-yea:before { + content: "\f772"; } + +.fa-vr-cardboard:before { + content: "\f729"; } + +.fa-vuejs:before { + content: "\f41f"; } + +.fa-walking:before { + content: "\f554"; } + +.fa-wallet:before { + content: "\f555"; } + +.fa-warehouse:before { + content: "\f494"; } + +.fa-watchman-monitoring:before { + content: "\e087"; } + +.fa-water:before { + content: "\f773"; } + +.fa-wave-square:before { + content: "\f83e"; } + +.fa-waze:before { + content: "\f83f"; } + +.fa-weebly:before { + content: "\f5cc"; } + +.fa-weibo:before { + content: "\f18a"; } + +.fa-weight:before { + content: "\f496"; } + +.fa-weight-hanging:before { + content: "\f5cd"; } + +.fa-weixin:before { + content: "\f1d7"; } + +.fa-whatsapp:before { + content: "\f232"; } + +.fa-whatsapp-square:before { + content: "\f40c"; } + +.fa-wheelchair:before { + content: "\f193"; } + +.fa-whmcs:before { + content: "\f40d"; } + +.fa-wifi:before { + content: "\f1eb"; } + +.fa-wikipedia-w:before { + content: "\f266"; } + +.fa-wind:before { + content: "\f72e"; } + +.fa-window-close:before { + content: "\f410"; } + +.fa-window-maximize:before { + content: "\f2d0"; } + +.fa-window-minimize:before { + content: "\f2d1"; } + +.fa-window-restore:before { + content: "\f2d2"; } + +.fa-windows:before { + content: "\f17a"; } + +.fa-wine-bottle:before { + content: "\f72f"; } + +.fa-wine-glass:before { + content: "\f4e3"; } + +.fa-wine-glass-alt:before { + content: "\f5ce"; } + +.fa-wix:before { + content: "\f5cf"; } + +.fa-wizards-of-the-coast:before { + content: "\f730"; } + +.fa-wodu:before { + content: "\e088"; } + +.fa-wolf-pack-battalion:before { + content: "\f514"; } + +.fa-won-sign:before { + content: "\f159"; } + +.fa-wordpress:before { + content: "\f19a"; } + +.fa-wordpress-simple:before { + content: "\f411"; } + +.fa-wpbeginner:before { + content: "\f297"; } + +.fa-wpexplorer:before { + content: "\f2de"; } + +.fa-wpforms:before { + content: "\f298"; } + +.fa-wpressr:before { + content: "\f3e4"; } + +.fa-wrench:before { + content: "\f0ad"; } + +.fa-x-ray:before { + content: "\f497"; } + +.fa-xbox:before { + content: "\f412"; } + +.fa-xing:before { + content: "\f168"; } + +.fa-xing-square:before { + content: "\f169"; } + +.fa-y-combinator:before { + content: "\f23b"; } + +.fa-yahoo:before { + content: "\f19e"; } + +.fa-yammer:before { + content: "\f840"; } + +.fa-yandex:before { + content: "\f413"; } + +.fa-yandex-international:before { + content: "\f414"; } + +.fa-yarn:before { + content: "\f7e3"; } + +.fa-yelp:before { + content: "\f1e9"; } + +.fa-yen-sign:before { + content: "\f157"; } + +.fa-yin-yang:before { + content: "\f6ad"; } + +.fa-yoast:before { + content: "\f2b1"; } + +.fa-youtube:before { + content: "\f167"; } + +.fa-youtube-square:before { + content: "\f431"; } + +.fa-zhihu:before { + content: "\f63f"; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.min.css new file mode 100644 index 0000000..bec9b39 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/fontawesome.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.css new file mode 100644 index 0000000..6f45057 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.css @@ -0,0 +1,15 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("../webfonts/fa-regular-400.eot"); + src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } + +.far { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.min.css new file mode 100644 index 0000000..21881d5 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/regular.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.css new file mode 100644 index 0000000..604e755 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.css @@ -0,0 +1,16 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face { + font-family: 'Font Awesome 5 Free'; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("../webfonts/fa-solid-900.eot"); + src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } + +.fa, +.fas { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.min.css new file mode 100644 index 0000000..acdb46d --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/solid.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.css new file mode 100644 index 0000000..45f33e5 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.css @@ -0,0 +1,371 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +svg:not(:root).svg-inline--fa { + overflow: visible; } + +.svg-inline--fa { + display: inline-block; + font-size: inherit; + height: 1em; + overflow: visible; + vertical-align: -.125em; } + .svg-inline--fa.fa-lg { + vertical-align: -.225em; } + .svg-inline--fa.fa-w-1 { + width: 0.0625em; } + .svg-inline--fa.fa-w-2 { + width: 0.125em; } + .svg-inline--fa.fa-w-3 { + width: 0.1875em; } + .svg-inline--fa.fa-w-4 { + width: 0.25em; } + .svg-inline--fa.fa-w-5 { + width: 0.3125em; } + .svg-inline--fa.fa-w-6 { + width: 0.375em; } + .svg-inline--fa.fa-w-7 { + width: 0.4375em; } + .svg-inline--fa.fa-w-8 { + width: 0.5em; } + .svg-inline--fa.fa-w-9 { + width: 0.5625em; } + .svg-inline--fa.fa-w-10 { + width: 0.625em; } + .svg-inline--fa.fa-w-11 { + width: 0.6875em; } + .svg-inline--fa.fa-w-12 { + width: 0.75em; } + .svg-inline--fa.fa-w-13 { + width: 0.8125em; } + .svg-inline--fa.fa-w-14 { + width: 0.875em; } + .svg-inline--fa.fa-w-15 { + width: 0.9375em; } + .svg-inline--fa.fa-w-16 { + width: 1em; } + .svg-inline--fa.fa-w-17 { + width: 1.0625em; } + .svg-inline--fa.fa-w-18 { + width: 1.125em; } + .svg-inline--fa.fa-w-19 { + width: 1.1875em; } + .svg-inline--fa.fa-w-20 { + width: 1.25em; } + .svg-inline--fa.fa-pull-left { + margin-right: .3em; + width: auto; } + .svg-inline--fa.fa-pull-right { + margin-left: .3em; + width: auto; } + .svg-inline--fa.fa-border { + height: 1.5em; } + .svg-inline--fa.fa-li { + width: 2em; } + .svg-inline--fa.fa-fw { + width: 1.25em; } + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; } + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -.125em; + width: 1em; } + .fa-layers svg.svg-inline--fa { + -webkit-transform-origin: center center; + transform-origin: center center; } + +.fa-layers-text, .fa-layers-counter { + display: inline-block; + position: absolute; + text-align: center; } + +.fa-layers-text { + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transform-origin: center center; + transform-origin: center center; } + +.fa-layers-counter { + background-color: #ff253a; + border-radius: 1em; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #fff; + height: 1.5em; + line-height: 1; + max-width: 5em; + min-width: 1.5em; + overflow: hidden; + padding: .25em; + right: 0; + text-overflow: ellipsis; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top right; + transform-origin: top right; } + +.fa-layers-bottom-right { + bottom: 0; + right: 0; + top: auto; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: bottom right; + transform-origin: bottom right; } + +.fa-layers-bottom-left { + bottom: 0; + left: 0; + right: auto; + top: auto; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: bottom left; + transform-origin: bottom left; } + +.fa-layers-top-right { + right: 0; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top right; + transform-origin: top right; } + +.fa-layers-top-left { + left: 0; + right: auto; + top: 0; + -webkit-transform: scale(0.25); + transform: scale(0.25); + -webkit-transform-origin: top left; + transform-origin: top left; } + +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -.0667em; } + +.fa-xs { + font-size: .75em; } + +.fa-sm { + font-size: .875em; } + +.fa-1x { + font-size: 1em; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-6x { + font-size: 6em; } + +.fa-7x { + font-size: 7em; } + +.fa-8x { + font-size: 8em; } + +.fa-9x { + font-size: 9em; } + +.fa-10x { + font-size: 10em; } + +.fa-fw { + text-align: center; + width: 1.25em; } + +.fa-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; } + .fa-ul > li { + position: relative; } + +.fa-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; } + +.fa-border { + border: solid 0.08em #eee; + border-radius: .1em; + padding: .2em .25em .15em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, +.fas.fa-pull-left, +.far.fa-pull-left, +.fal.fa-pull-left, +.fab.fa-pull-left { + margin-right: .3em; } + +.fa.fa-pull-right, +.fas.fa-pull-right, +.far.fa-pull-right, +.fal.fa-pull-right, +.fab.fa-pull-right { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); } + +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical, +:root .fa-flip-both { + -webkit-filter: none; + filter: none; } + +.fa-stack { + display: inline-block; + height: 2em; + position: relative; + width: 2.5em; } + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; } + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; } + +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; } + +.fa-inverse { + color: #fff; } + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: 0.4; + opacity: var(--fa-secondary-opacity, 0.4); } + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: 1; + opacity: var(--fa-primary-opacity, 1); } + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; } + +.fad.fa-inverse { + color: #fff; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.min.css new file mode 100644 index 0000000..101beb8 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/svg-with-js.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.css new file mode 100644 index 0000000..1ef4893 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.css @@ -0,0 +1,2172 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa.fa-glass:before { + content: "\f000"; } + +.fa.fa-meetup { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-star-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-star-o:before { + content: "\f005"; } + +.fa.fa-remove:before { + content: "\f00d"; } + +.fa.fa-close:before { + content: "\f00d"; } + +.fa.fa-gear:before { + content: "\f013"; } + +.fa.fa-trash-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-trash-o:before { + content: "\f2ed"; } + +.fa.fa-file-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-o:before { + content: "\f15b"; } + +.fa.fa-clock-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-clock-o:before { + content: "\f017"; } + +.fa.fa-arrow-circle-o-down { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-down:before { + content: "\f358"; } + +.fa.fa-arrow-circle-o-up { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-up:before { + content: "\f35b"; } + +.fa.fa-play-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-play-circle-o:before { + content: "\f144"; } + +.fa.fa-repeat:before { + content: "\f01e"; } + +.fa.fa-rotate-right:before { + content: "\f01e"; } + +.fa.fa-refresh:before { + content: "\f021"; } + +.fa.fa-list-alt { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-dedent:before { + content: "\f03b"; } + +.fa.fa-video-camera:before { + content: "\f03d"; } + +.fa.fa-picture-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-picture-o:before { + content: "\f03e"; } + +.fa.fa-photo { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-photo:before { + content: "\f03e"; } + +.fa.fa-image { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-image:before { + content: "\f03e"; } + +.fa.fa-pencil:before { + content: "\f303"; } + +.fa.fa-map-marker:before { + content: "\f3c5"; } + +.fa.fa-pencil-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-pencil-square-o:before { + content: "\f044"; } + +.fa.fa-share-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-share-square-o:before { + content: "\f14d"; } + +.fa.fa-check-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-check-square-o:before { + content: "\f14a"; } + +.fa.fa-arrows:before { + content: "\f0b2"; } + +.fa.fa-times-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-times-circle-o:before { + content: "\f057"; } + +.fa.fa-check-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-check-circle-o:before { + content: "\f058"; } + +.fa.fa-mail-forward:before { + content: "\f064"; } + +.fa.fa-expand:before { + content: "\f424"; } + +.fa.fa-compress:before { + content: "\f422"; } + +.fa.fa-eye { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-eye-slash { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-warning:before { + content: "\f071"; } + +.fa.fa-calendar:before { + content: "\f073"; } + +.fa.fa-arrows-v:before { + content: "\f338"; } + +.fa.fa-arrows-h:before { + content: "\f337"; } + +.fa.fa-bar-chart { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-bar-chart:before { + content: "\f080"; } + +.fa.fa-bar-chart-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-bar-chart-o:before { + content: "\f080"; } + +.fa.fa-twitter-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-facebook-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gears:before { + content: "\f085"; } + +.fa.fa-thumbs-o-up { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-up:before { + content: "\f164"; } + +.fa.fa-thumbs-o-down { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-thumbs-o-down:before { + content: "\f165"; } + +.fa.fa-heart-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-heart-o:before { + content: "\f004"; } + +.fa.fa-sign-out:before { + content: "\f2f5"; } + +.fa.fa-linkedin-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-linkedin-square:before { + content: "\f08c"; } + +.fa.fa-thumb-tack:before { + content: "\f08d"; } + +.fa.fa-external-link:before { + content: "\f35d"; } + +.fa.fa-sign-in:before { + content: "\f2f6"; } + +.fa.fa-github-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-lemon-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-lemon-o:before { + content: "\f094"; } + +.fa.fa-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-square-o:before { + content: "\f0c8"; } + +.fa.fa-bookmark-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-bookmark-o:before { + content: "\f02e"; } + +.fa.fa-twitter { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-facebook { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-facebook:before { + content: "\f39e"; } + +.fa.fa-facebook-f { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-facebook-f:before { + content: "\f39e"; } + +.fa.fa-github { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-credit-card { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-feed:before { + content: "\f09e"; } + +.fa.fa-hdd-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hdd-o:before { + content: "\f0a0"; } + +.fa.fa-hand-o-right { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-o-right:before { + content: "\f0a4"; } + +.fa.fa-hand-o-left { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-o-left:before { + content: "\f0a5"; } + +.fa.fa-hand-o-up { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-o-up:before { + content: "\f0a6"; } + +.fa.fa-hand-o-down { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-o-down:before { + content: "\f0a7"; } + +.fa.fa-arrows-alt:before { + content: "\f31e"; } + +.fa.fa-group:before { + content: "\f0c0"; } + +.fa.fa-chain:before { + content: "\f0c1"; } + +.fa.fa-scissors:before { + content: "\f0c4"; } + +.fa.fa-files-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-files-o:before { + content: "\f0c5"; } + +.fa.fa-floppy-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-floppy-o:before { + content: "\f0c7"; } + +.fa.fa-navicon:before { + content: "\f0c9"; } + +.fa.fa-reorder:before { + content: "\f0c9"; } + +.fa.fa-pinterest { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pinterest-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus:before { + content: "\f0d5"; } + +.fa.fa-money { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-money:before { + content: "\f3d1"; } + +.fa.fa-unsorted:before { + content: "\f0dc"; } + +.fa.fa-sort-desc:before { + content: "\f0dd"; } + +.fa.fa-sort-asc:before { + content: "\f0de"; } + +.fa.fa-linkedin { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-linkedin:before { + content: "\f0e1"; } + +.fa.fa-rotate-left:before { + content: "\f0e2"; } + +.fa.fa-legal:before { + content: "\f0e3"; } + +.fa.fa-tachometer:before { + content: "\f3fd"; } + +.fa.fa-dashboard:before { + content: "\f3fd"; } + +.fa.fa-comment-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-comment-o:before { + content: "\f075"; } + +.fa.fa-comments-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-comments-o:before { + content: "\f086"; } + +.fa.fa-flash:before { + content: "\f0e7"; } + +.fa.fa-clipboard { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-paste { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-paste:before { + content: "\f328"; } + +.fa.fa-lightbulb-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-lightbulb-o:before { + content: "\f0eb"; } + +.fa.fa-exchange:before { + content: "\f362"; } + +.fa.fa-cloud-download:before { + content: "\f381"; } + +.fa.fa-cloud-upload:before { + content: "\f382"; } + +.fa.fa-bell-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-bell-o:before { + content: "\f0f3"; } + +.fa.fa-cutlery:before { + content: "\f2e7"; } + +.fa.fa-file-text-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-text-o:before { + content: "\f15c"; } + +.fa.fa-building-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-building-o:before { + content: "\f1ad"; } + +.fa.fa-hospital-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hospital-o:before { + content: "\f0f8"; } + +.fa.fa-tablet:before { + content: "\f3fa"; } + +.fa.fa-mobile:before { + content: "\f3cd"; } + +.fa.fa-mobile-phone:before { + content: "\f3cd"; } + +.fa.fa-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-circle-o:before { + content: "\f111"; } + +.fa.fa-mail-reply:before { + content: "\f3e5"; } + +.fa.fa-github-alt { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-folder-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-folder-o:before { + content: "\f07b"; } + +.fa.fa-folder-open-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-folder-open-o:before { + content: "\f07c"; } + +.fa.fa-smile-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-smile-o:before { + content: "\f118"; } + +.fa.fa-frown-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-frown-o:before { + content: "\f119"; } + +.fa.fa-meh-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-meh-o:before { + content: "\f11a"; } + +.fa.fa-keyboard-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-keyboard-o:before { + content: "\f11c"; } + +.fa.fa-flag-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-flag-o:before { + content: "\f024"; } + +.fa.fa-mail-reply-all:before { + content: "\f122"; } + +.fa.fa-star-half-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-star-half-o:before { + content: "\f089"; } + +.fa.fa-star-half-empty { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-star-half-empty:before { + content: "\f089"; } + +.fa.fa-star-half-full { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-star-half-full:before { + content: "\f089"; } + +.fa.fa-code-fork:before { + content: "\f126"; } + +.fa.fa-chain-broken:before { + content: "\f127"; } + +.fa.fa-shield:before { + content: "\f3ed"; } + +.fa.fa-calendar-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-calendar-o:before { + content: "\f133"; } + +.fa.fa-maxcdn { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-html5 { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-css3 { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ticket:before { + content: "\f3ff"; } + +.fa.fa-minus-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-minus-square-o:before { + content: "\f146"; } + +.fa.fa-level-up:before { + content: "\f3bf"; } + +.fa.fa-level-down:before { + content: "\f3be"; } + +.fa.fa-pencil-square:before { + content: "\f14b"; } + +.fa.fa-external-link-square:before { + content: "\f360"; } + +.fa.fa-compass { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-down:before { + content: "\f150"; } + +.fa.fa-toggle-down { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-toggle-down:before { + content: "\f150"; } + +.fa.fa-caret-square-o-up { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-up:before { + content: "\f151"; } + +.fa.fa-toggle-up { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-toggle-up:before { + content: "\f151"; } + +.fa.fa-caret-square-o-right { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-right:before { + content: "\f152"; } + +.fa.fa-toggle-right { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-toggle-right:before { + content: "\f152"; } + +.fa.fa-eur:before { + content: "\f153"; } + +.fa.fa-euro:before { + content: "\f153"; } + +.fa.fa-gbp:before { + content: "\f154"; } + +.fa.fa-usd:before { + content: "\f155"; } + +.fa.fa-dollar:before { + content: "\f155"; } + +.fa.fa-inr:before { + content: "\f156"; } + +.fa.fa-rupee:before { + content: "\f156"; } + +.fa.fa-jpy:before { + content: "\f157"; } + +.fa.fa-cny:before { + content: "\f157"; } + +.fa.fa-rmb:before { + content: "\f157"; } + +.fa.fa-yen:before { + content: "\f157"; } + +.fa.fa-rub:before { + content: "\f158"; } + +.fa.fa-ruble:before { + content: "\f158"; } + +.fa.fa-rouble:before { + content: "\f158"; } + +.fa.fa-krw:before { + content: "\f159"; } + +.fa.fa-won:before { + content: "\f159"; } + +.fa.fa-btc { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bitcoin:before { + content: "\f15a"; } + +.fa.fa-file-text:before { + content: "\f15c"; } + +.fa.fa-sort-alpha-asc:before { + content: "\f15d"; } + +.fa.fa-sort-alpha-desc:before { + content: "\f881"; } + +.fa.fa-sort-amount-asc:before { + content: "\f160"; } + +.fa.fa-sort-amount-desc:before { + content: "\f884"; } + +.fa.fa-sort-numeric-asc:before { + content: "\f162"; } + +.fa.fa-sort-numeric-desc:before { + content: "\f886"; } + +.fa.fa-youtube-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-youtube { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-xing { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-xing-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-youtube-play { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-youtube-play:before { + content: "\f167"; } + +.fa.fa-dropbox { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-stack-overflow { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-instagram { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-flickr { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-adn { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bitbucket-square:before { + content: "\f171"; } + +.fa.fa-tumblr { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-tumblr-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-long-arrow-down:before { + content: "\f309"; } + +.fa.fa-long-arrow-up:before { + content: "\f30c"; } + +.fa.fa-long-arrow-left:before { + content: "\f30a"; } + +.fa.fa-long-arrow-right:before { + content: "\f30b"; } + +.fa.fa-apple { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-windows { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-android { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-linux { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-dribbble { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-skype { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-foursquare { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-trello { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gratipay { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gittip { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gittip:before { + content: "\f184"; } + +.fa.fa-sun-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-sun-o:before { + content: "\f185"; } + +.fa.fa-moon-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-moon-o:before { + content: "\f186"; } + +.fa.fa-vk { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-weibo { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-renren { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pagelines { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-stack-exchange { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-right:before { + content: "\f35a"; } + +.fa.fa-arrow-circle-o-left { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-arrow-circle-o-left:before { + content: "\f359"; } + +.fa.fa-caret-square-o-left { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-caret-square-o-left:before { + content: "\f191"; } + +.fa.fa-toggle-left { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-toggle-left:before { + content: "\f191"; } + +.fa.fa-dot-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-dot-circle-o:before { + content: "\f192"; } + +.fa.fa-vimeo-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-try:before { + content: "\f195"; } + +.fa.fa-turkish-lira:before { + content: "\f195"; } + +.fa.fa-plus-square-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-plus-square-o:before { + content: "\f0fe"; } + +.fa.fa-slack { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wordpress { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-openid { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-institution:before { + content: "\f19c"; } + +.fa.fa-bank:before { + content: "\f19c"; } + +.fa.fa-mortar-board:before { + content: "\f19d"; } + +.fa.fa-yahoo { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-reddit { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-reddit-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon-circle { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-stumbleupon { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-delicious { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-digg { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-pp { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper-alt { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-drupal { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-joomla { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-spoon:before { + content: "\f2e5"; } + +.fa.fa-behance { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-behance-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-steam { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-steam-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-automobile:before { + content: "\f1b9"; } + +.fa.fa-envelope-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-envelope-o:before { + content: "\f0e0"; } + +.fa.fa-spotify { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-deviantart { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-soundcloud { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-file-pdf-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-pdf-o:before { + content: "\f1c1"; } + +.fa.fa-file-word-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-word-o:before { + content: "\f1c2"; } + +.fa.fa-file-excel-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-excel-o:before { + content: "\f1c3"; } + +.fa.fa-file-powerpoint-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-powerpoint-o:before { + content: "\f1c4"; } + +.fa.fa-file-image-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-image-o:before { + content: "\f1c5"; } + +.fa.fa-file-photo-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-photo-o:before { + content: "\f1c5"; } + +.fa.fa-file-picture-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-picture-o:before { + content: "\f1c5"; } + +.fa.fa-file-archive-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-archive-o:before { + content: "\f1c6"; } + +.fa.fa-file-zip-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-zip-o:before { + content: "\f1c6"; } + +.fa.fa-file-audio-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-audio-o:before { + content: "\f1c7"; } + +.fa.fa-file-sound-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-sound-o:before { + content: "\f1c7"; } + +.fa.fa-file-video-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-video-o:before { + content: "\f1c8"; } + +.fa.fa-file-movie-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-movie-o:before { + content: "\f1c8"; } + +.fa.fa-file-code-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-file-code-o:before { + content: "\f1c9"; } + +.fa.fa-vine { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-codepen { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-jsfiddle { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-life-ring { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-life-bouy { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-life-bouy:before { + content: "\f1cd"; } + +.fa.fa-life-buoy { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-life-buoy:before { + content: "\f1cd"; } + +.fa.fa-life-saver { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-life-saver:before { + content: "\f1cd"; } + +.fa.fa-support { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-support:before { + content: "\f1cd"; } + +.fa.fa-circle-o-notch:before { + content: "\f1ce"; } + +.fa.fa-rebel { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ra { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ra:before { + content: "\f1d0"; } + +.fa.fa-resistance { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-resistance:before { + content: "\f1d0"; } + +.fa.fa-empire { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ge { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ge:before { + content: "\f1d1"; } + +.fa.fa-git-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-git { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-hacker-news { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator-square:before { + content: "\f1d4"; } + +.fa.fa-yc-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-yc-square:before { + content: "\f1d4"; } + +.fa.fa-tencent-weibo { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-qq { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-weixin { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wechat { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wechat:before { + content: "\f1d7"; } + +.fa.fa-send:before { + content: "\f1d8"; } + +.fa.fa-paper-plane-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-paper-plane-o:before { + content: "\f1d8"; } + +.fa.fa-send-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-send-o:before { + content: "\f1d8"; } + +.fa.fa-circle-thin { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-circle-thin:before { + content: "\f111"; } + +.fa.fa-header:before { + content: "\f1dc"; } + +.fa.fa-sliders:before { + content: "\f1de"; } + +.fa.fa-futbol-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-futbol-o:before { + content: "\f1e3"; } + +.fa.fa-soccer-ball-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-soccer-ball-o:before { + content: "\f1e3"; } + +.fa.fa-slideshare { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-twitch { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-yelp { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-newspaper-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-newspaper-o:before { + content: "\f1ea"; } + +.fa.fa-paypal { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-wallet { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-visa { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-mastercard { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-discover { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-amex { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-paypal { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-stripe { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bell-slash-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-bell-slash-o:before { + content: "\f1f6"; } + +.fa.fa-trash:before { + content: "\f2ed"; } + +.fa.fa-copyright { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-eyedropper:before { + content: "\f1fb"; } + +.fa.fa-area-chart:before { + content: "\f1fe"; } + +.fa.fa-pie-chart:before { + content: "\f200"; } + +.fa.fa-line-chart:before { + content: "\f201"; } + +.fa.fa-lastfm { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-lastfm-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ioxhost { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-angellist { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-cc:before { + content: "\f20a"; } + +.fa.fa-ils:before { + content: "\f20b"; } + +.fa.fa-shekel:before { + content: "\f20b"; } + +.fa.fa-sheqel:before { + content: "\f20b"; } + +.fa.fa-meanpath { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-meanpath:before { + content: "\f2b4"; } + +.fa.fa-buysellads { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-connectdevelop { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-dashcube { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-forumbee { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-leanpub { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-sellsy { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-shirtsinbulk { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-simplybuilt { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-skyatlas { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-diamond { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-diamond:before { + content: "\f3a5"; } + +.fa.fa-intersex:before { + content: "\f224"; } + +.fa.fa-facebook-official { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-facebook-official:before { + content: "\f09a"; } + +.fa.fa-pinterest-p { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-whatsapp { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-hotel:before { + content: "\f236"; } + +.fa.fa-viacoin { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-medium { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-y-combinator { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-yc { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-yc:before { + content: "\f23b"; } + +.fa.fa-optin-monster { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-opencart { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-expeditedssl { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-battery-4:before { + content: "\f240"; } + +.fa.fa-battery:before { + content: "\f240"; } + +.fa.fa-battery-3:before { + content: "\f241"; } + +.fa.fa-battery-2:before { + content: "\f242"; } + +.fa.fa-battery-1:before { + content: "\f243"; } + +.fa.fa-battery-0:before { + content: "\f244"; } + +.fa.fa-object-group { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-object-ungroup { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-sticky-note-o:before { + content: "\f249"; } + +.fa.fa-cc-jcb { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cc-diners-club { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-clone { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hourglass-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hourglass-o:before { + content: "\f254"; } + +.fa.fa-hourglass-1:before { + content: "\f251"; } + +.fa.fa-hourglass-2:before { + content: "\f252"; } + +.fa.fa-hourglass-3:before { + content: "\f253"; } + +.fa.fa-hand-rock-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-rock-o:before { + content: "\f255"; } + +.fa.fa-hand-grab-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-grab-o:before { + content: "\f255"; } + +.fa.fa-hand-paper-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-paper-o:before { + content: "\f256"; } + +.fa.fa-hand-stop-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-stop-o:before { + content: "\f256"; } + +.fa.fa-hand-scissors-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-scissors-o:before { + content: "\f257"; } + +.fa.fa-hand-lizard-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-lizard-o:before { + content: "\f258"; } + +.fa.fa-hand-spock-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-spock-o:before { + content: "\f259"; } + +.fa.fa-hand-pointer-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-pointer-o:before { + content: "\f25a"; } + +.fa.fa-hand-peace-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-hand-peace-o:before { + content: "\f25b"; } + +.fa.fa-registered { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-creative-commons { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gg { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gg-circle { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-tripadvisor { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-odnoklassniki-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-get-pocket { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wikipedia-w { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-safari { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-chrome { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-firefox { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-opera { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-internet-explorer { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-television:before { + content: "\f26c"; } + +.fa.fa-contao { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-500px { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-amazon { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-calendar-plus-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-calendar-plus-o:before { + content: "\f271"; } + +.fa.fa-calendar-minus-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-calendar-minus-o:before { + content: "\f272"; } + +.fa.fa-calendar-times-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-calendar-times-o:before { + content: "\f273"; } + +.fa.fa-calendar-check-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-calendar-check-o:before { + content: "\f274"; } + +.fa.fa-map-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-map-o:before { + content: "\f279"; } + +.fa.fa-commenting:before { + content: "\f4ad"; } + +.fa.fa-commenting-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-commenting-o:before { + content: "\f4ad"; } + +.fa.fa-houzz { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-vimeo { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-vimeo:before { + content: "\f27d"; } + +.fa.fa-black-tie { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-fonticons { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-reddit-alien { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-edge { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-credit-card-alt:before { + content: "\f09d"; } + +.fa.fa-codiepie { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-modx { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-fort-awesome { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-usb { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-product-hunt { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-mixcloud { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-scribd { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pause-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-pause-circle-o:before { + content: "\f28b"; } + +.fa.fa-stop-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-stop-circle-o:before { + content: "\f28d"; } + +.fa.fa-bluetooth { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-bluetooth-b { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-gitlab { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wpbeginner { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wpforms { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-envira { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wheelchair-alt:before { + content: "\f368"; } + +.fa.fa-question-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-question-circle-o:before { + content: "\f059"; } + +.fa.fa-volume-control-phone:before { + content: "\f2a0"; } + +.fa.fa-asl-interpreting:before { + content: "\f2a3"; } + +.fa.fa-deafness:before { + content: "\f2a4"; } + +.fa.fa-hard-of-hearing:before { + content: "\f2a4"; } + +.fa.fa-glide { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-glide-g { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-signing:before { + content: "\f2a7"; } + +.fa.fa-viadeo { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-viadeo-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-snapchat { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-ghost { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-snapchat-square { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-pied-piper { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-first-order { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-yoast { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-themeisle { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-official:before { + content: "\f2b3"; } + +.fa.fa-google-plus-circle { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-google-plus-circle:before { + content: "\f2b3"; } + +.fa.fa-font-awesome { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-fa { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-fa:before { + content: "\f2b4"; } + +.fa.fa-handshake-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-handshake-o:before { + content: "\f2b5"; } + +.fa.fa-envelope-open-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-envelope-open-o:before { + content: "\f2b6"; } + +.fa.fa-linode { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-address-book-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-address-book-o:before { + content: "\f2b9"; } + +.fa.fa-vcard:before { + content: "\f2bb"; } + +.fa.fa-address-card-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-address-card-o:before { + content: "\f2bb"; } + +.fa.fa-vcard-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-vcard-o:before { + content: "\f2bb"; } + +.fa.fa-user-circle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-user-circle-o:before { + content: "\f2bd"; } + +.fa.fa-user-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-user-o:before { + content: "\f007"; } + +.fa.fa-id-badge { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-drivers-license:before { + content: "\f2c2"; } + +.fa.fa-id-card-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-id-card-o:before { + content: "\f2c2"; } + +.fa.fa-drivers-license-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-drivers-license-o:before { + content: "\f2c2"; } + +.fa.fa-quora { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-free-code-camp { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-telegram { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-thermometer-4:before { + content: "\f2c7"; } + +.fa.fa-thermometer:before { + content: "\f2c7"; } + +.fa.fa-thermometer-3:before { + content: "\f2c8"; } + +.fa.fa-thermometer-2:before { + content: "\f2c9"; } + +.fa.fa-thermometer-1:before { + content: "\f2ca"; } + +.fa.fa-thermometer-0:before { + content: "\f2cb"; } + +.fa.fa-bathtub:before { + content: "\f2cd"; } + +.fa.fa-s15:before { + content: "\f2cd"; } + +.fa.fa-window-maximize { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-window-restore { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle:before { + content: "\f410"; } + +.fa.fa-window-close-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-window-close-o:before { + content: "\f410"; } + +.fa.fa-times-rectangle-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-times-rectangle-o:before { + content: "\f410"; } + +.fa.fa-bandcamp { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-grav { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-etsy { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-imdb { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-ravelry { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-eercast { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-eercast:before { + content: "\f2da"; } + +.fa.fa-snowflake-o { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; } + +.fa.fa-snowflake-o:before { + content: "\f2dc"; } + +.fa.fa-superpowers { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-wpexplorer { + font-family: 'Font Awesome 5 Brands'; + font-weight: 400; } + +.fa.fa-cab:before { + content: "\f1ba"; } diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.min.css b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.min.css new file mode 100644 index 0000000..21a0708 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/css/v4-shims.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot new file mode 100644 index 0000000..cba6c6c Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg new file mode 100644 index 0000000..b9881a4 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg @@ -0,0 +1,3717 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..8d75ded Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff new file mode 100644 index 0000000..3375bef Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..402f81c Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot new file mode 100644 index 0000000..a4e5989 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg new file mode 100644 index 0000000..463af27 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg @@ -0,0 +1,801 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..7157aaf Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff new file mode 100644 index 0000000..ad077c6 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..5632894 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot new file mode 100644 index 0000000..e994171 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg new file mode 100644 index 0000000..00296e9 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg @@ -0,0 +1,5034 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..25abf38 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff new file mode 100644 index 0000000..23ee663 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff differ diff --git a/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..2217164 Binary files /dev/null and b/Penilaian-Esai/public/assets/css/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ diff --git a/Penilaian-Esai/public/assets/css/bootstrap.min.css b/Penilaian-Esai/public/assets/css/bootstrap.min.css new file mode 100644 index 0000000..6ee5956 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/iziToast.min.css b/Penilaian-Esai/public/assets/css/iziToast.min.css new file mode 100644 index 0000000..321823f --- /dev/null +++ b/Penilaian-Esai/public/assets/css/iziToast.min.css @@ -0,0 +1,6 @@ +/* +* iziToast | v1.4.0 +* http://izitoast.marcelodolce.com +* by Marcelo Dolce. +*/ +.iziToast-capsule{font-size:0;height:0;width:100%;transform:translateZ(0);backface-visibility:hidden;transition:transform .5s cubic-bezier(.25,.8,.25,1),height .5s cubic-bezier(.25,.8,.25,1)}.iziToast-capsule,.iziToast-capsule *{box-sizing:border-box}.iziToast-overlay{display:block;position:fixed;top:-100px;left:0;right:0;bottom:-100px;z-index:997}.iziToast{display:inline-block;clear:both;position:relative;font-family:'Lato',Tahoma,Arial;font-size:14px;padding:8px 45px 9px 0;background:rgba(238,238,238,.9);border-color:rgba(238,238,238,.9);width:100%;pointer-events:all;cursor:default;transform:translateX(0);-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-height:54px}.iziToast>.iziToast-progressbar{position:absolute;left:0;bottom:0;width:100%;z-index:1;background:rgba(255,255,255,.2)}.iziToast>.iziToast-progressbar>div{height:2px;width:100%;background:rgba(0,0,0,.3);border-radius:0 0 3px 3px}.iziToast.iziToast-balloon:before{content:'';position:absolute;right:8px;left:auto;width:0;height:0;top:100%;border-right:0 solid transparent;border-left:15px solid transparent;border-top:10px solid #000;border-top-color:inherit;border-radius:0}.iziToast.iziToast-balloon .iziToast-progressbar{top:0;bottom:auto}.iziToast.iziToast-balloon>div{border-radius:0 0 0 3px}.iziToast>.iziToast-cover{position:absolute;left:0;top:0;bottom:0;height:100%;margin:0;background-size:100%;background-position:50% 50%;background-repeat:no-repeat;background-color:rgba(0,0,0,.1)}.iziToast>.iziToast-close{position:absolute;right:0;top:0;border:0;padding:0;opacity:.6;width:42px;height:100%;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJPAAACTwBcGfW0QAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD3SURBVFiF1ZdtDoMgDEBfdi4PwAX8vLFn0qT7wxantojKupmQmCi8R4tSACpgjC2ICCUbEBa8ingjsU1AXRBeR8aLN64FiknswN8CYefBBDQ3whuFESy7WyQMeC0ipEI0A+0FeBvHUFN8xPaUhAH/iKoWsnXHGegy4J0yxialOfaHJAz4bhRzQzgDvdGnz4GbAonZbCQMuBm1K/kcFu8Mp1N2cFFpsxsMuJqqbIGExGl4loARajU1twskJLLhIsID7+tvUoDnIjTg5T9DPH9EBrz8rxjPzciAl9+O8SxI8CzJ8CxKFfh3ynK8Dyb8wNHM/XDqejx/AtNyPO87tNybAAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:8px;cursor:pointer;outline:0}.iziToast>.iziToast-close:hover{opacity:1}.iziToast>.iziToast-body{position:relative;padding:0 0 0 10px;height:auto;min-height:36px;margin:0 0 0 15px;text-align:left}.iziToast>.iziToast-body:after{content:"";display:table;clear:both}.iziToast>.iziToast-body .iziToast-texts{margin:10px 0 0;padding-right:2px;display:inline-block;float:left}.iziToast>.iziToast-body .iziToast-inputs{min-height:19px;float:left;margin:3px -2px}.iziToast>.iziToast-body .iziToast-inputs>input:not([type=checkbox]):not([type=radio]),.iziToast>.iziToast-body .iziToast-inputs>select{position:relative;display:inline-block;margin:2px;border-radius:2px;border:0;padding:4px 7px;font-size:13px;letter-spacing:.02em;background:rgba(0,0,0,.1);color:#000;box-shadow:0 0 0 1px rgba(0,0,0,.2);min-height:26px}.iziToast>.iziToast-body .iziToast-inputs>input:not([type=checkbox]):not([type=radio]):focus,.iziToast>.iziToast-body .iziToast-inputs>select:focus{box-shadow:0 0 0 1px rgba(0,0,0,.6)}.iziToast>.iziToast-body .iziToast-buttons{min-height:17px;float:left;margin:4px -2px}.iziToast>.iziToast-body .iziToast-buttons>a,.iziToast>.iziToast-body .iziToast-buttons>button,.iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]){position:relative;display:inline-block;margin:2px;border-radius:2px;border:0;padding:5px 10px;font-size:12px;letter-spacing:.02em;cursor:pointer;background:rgba(0,0,0,.1);color:#000}.iziToast>.iziToast-body .iziToast-buttons>a:hover,.iziToast>.iziToast-body .iziToast-buttons>button:hover,.iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]):hover{background:rgba(0,0,0,.2)}.iziToast>.iziToast-body .iziToast-buttons>a:focus,.iziToast>.iziToast-body .iziToast-buttons>button:focus,.iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]):focus{box-shadow:0 0 0 1px rgba(0,0,0,.6)}.iziToast>.iziToast-body .iziToast-buttons>a:active,.iziToast>.iziToast-body .iziToast-buttons>button:active,.iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]):active{top:1px}.iziToast>.iziToast-body .iziToast-icon{position:absolute;left:0;top:50%;display:table;font-size:23px;line-height:24px;margin-top:-12px;color:#000;width:24px;height:24px}.iziToast>.iziToast-body .iziToast-icon.ico-info{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCtoPsAAAAKXRSTlMA6PsIvDob+OapavVhWRYPrIry2MxGQ97czsOzpJaMcE0qJQOwVtKjfxCVFeIAAAI3SURBVFjDlJPZsoIwEETnCiGyb8q+qmjl/3/wFmGKwjBROS9QWbtnOqDDGPq4MdMkSc0m7gcDDhF4NRdv8NoL4EcMpzoJglPl/KTDz4WW3IdvXEvxkfIKn7BMZb1bFK4yZFqghZ03jk0nG8N5NBwzx9xU5cxAg8fXi20/hDdC316lcA8o7t16eRuQvW1XGd2d2P8QSHQDDbdIII/9CR3lUF+lbucfJy4WfMS64EJPORnrZxtfc2pjJdnbuags3l04TTtJMXrdTph4Pyg4XAjugAJqMDf5Rf+oXx2/qi4u6nipakIi7CsgiuMSEF9IGKg8heQJKkxIfFSUU/egWSwNrS1fPDtLfon8sZOcYUQml1Qv9a3kfwsEUyJEMgFBKzdV8o3Iw9yAjg1jdLQCV4qbd3no8yD2GugaC3oMbF0NYHCpJYSDhNI5N2DAWB4F4z9Aj/04Cna/x7eVAQ17vRjQZPh+G/kddYv0h49yY4NWNDWMMOMUIRYvlTECmrN8pUAjo5RCMn8KoPmbJ/+Appgnk//Sy90GYBCGgm7IAskQ7D9hFKW4ApB1ei3FSYD9PjGAKygAV+ARFYBH5BsVgG9kkBSAQWKUFYBRZpkUgGVinRWAdUZQDABBQdIcAElDVBUAUUXWHQBZx1gMAGMprM0AsLbVXHsA5trZe93/wp3svQ0YNb/jWV3AIOLsMtlznSNOH7JqjOpDVh7z8qCZR10ftvO4nxeOvPLkpSuvfXnxzKtvXr7j+v8C5ii0e71At7cAAAAASUVORK5CYII=) no-repeat 50% 50%;background-size:85%}.iziToast>.iziToast-body .iziToast-icon.ico-warning{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAMAAAAPzWOAAAAAkFBMVEUAAAAAAAABAAIAAAABAAIAAAMAAAABAAIBAAIBAAIAAAIAAAABAAIAAAABAAICAAICAAIAAAIAAAAAAAAAAAABAAIBAAIAAAMAAAABAAIBAAMBAAECAAIAAAIAAAIAAAABAAIBAAIBAAMBAAIBAAEAAAIAAAMAAAAAAAABAAECAAICAAIAAAIAAAMAAAQAAAE05yNAAAAAL3RSTlMAB+kD7V8Q+PXicwv7I9iYhkAzJxnx01IV5cmnk2xmHfzexsK4eEw5L7Gei39aRw640awAAAHQSURBVFjD7ZfJdoJAEEWJgCiI4oDiPM8m7///LidErRO7sHrY5u7YXLr7vKqu9kTC0HPmo9n8cJbEQOzqqAdAUHeUZACQuTkGDQBoDJwkHZR0XBz9FkpafXuHP0SJ09mGeJLZ5wwlTmcbA0THPmdEK7XPGTG1zxmInn3OiJ19zkB0jSVTKExMHT0wjAwlWzC0fSPHF1gWRpIhWMYm7fYTFcQGlbemf4dFfdTGg0B/KXM8qBU/3wntbq7rSGqvJ9kla6IpueFJet8fxfem5yhykjyOgNaWF1qSGd5JMNNxpNF7SZQaVh5JzLrTCZIEJ1GyEyVyd+pClMjdaSJK5O40giSRu5PfFiVyd1pAksjdKRnrSsbVdbiHrgT7yss315fkVQPLFQrL+4FHeOXKO5YRFEKv5AiFaMlKLlBpJuVCJlC5sJfvCgztru/3NmBYccPgGTxRAzxn1XGEMUf58pXZvjoOsOCgjL08+b53mtfAM/SVsZcjKLtysQZPqIy9HPP3m/3zKItRwT0LyQo8sTr26tcO83DIUMWIJjierHLsJda/tbNBFY0BP/bKtcM8HNIWCK3aYR4OMzgxo5w5EFLOLKDExXAm9gI4E3iAO94/Ct/lKWuM2LMGbgAAAABJRU5ErkJggg==) no-repeat 50% 50%;background-size:85%}.iziToast>.iziToast-body .iziToast-icon.ico-error{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAeFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVyEiIAAAAJ3RSTlMA3BsB98QV8uSyWVUFz7+kcWMM2LuZioBpTUVBNcq2qaibj4d1azLZZYABAAACZElEQVRYw7WX25KCMAyGAxUoFDkpiohnV97/DXeGBtoOUprZ2dyo1K82fxKbwJJVp+KQZ7so2mX5oThVQLKwjDe9YZu4DF3ptAn6rxY0qQPOEq9fNC9ha3y77a22ba24v+9Xbe8v8x03dPOC2/NdvB6xeSreLfGJpnx0TyotKqLm2s7Jd/WO6ivXNp0tCy02R/aFz5VQ5wUPlUL5fIfj5KIlVGU0nWHm/5QtoTVMWY8mzIVu1K9O7XH2JiU/xnOOT39gnUfj+lFHddx4tFjL3/H8jjzaFCy2Rf0c/fdQyQszI8BDR973IyMSKa4krjxAiW/lkRvMP+bKK9WbYS1ASQg8dKjaUGlYPwRe/WoIkz8tiQchH5QAEMv6T0k8MD4mUyWr4E7jAWqZ+xWcMIYkXvlwggJ3IvFK+wIOcpXAo8n8P0COAaXyKH4OsjBuZB4ew0IGu+H1SebhNazsQBbWm8yj+hFuUJB5eMsN0IUXmYendAFFfJB5uEkRMYwxmcd6zDGRtmQePEykAgubymMRFmMxCSIPCRbTuFNN5OGORTjmNGc0Po0m8Uv0gcCry6xUhR2QeLii9tofbEfhz/qvNti+OfPqNm2Mq6105FUMvdT4GPmufMiV8PqBMkc+DdT1bjYYbjzU/ew23VP4n3mLAz4n8Jtv/Ui3ceTT2mzz5o1mZt0gnBpmsdjqRqVlmplcPdqa7X23kL9brdm2t/uBYDPn2+tyu48mtIGD10JTuUrukVrbCFiwDzcHrPjxKt7PW+AZQyT/WESO+1WL7f3o+WLHL2dYMSZsg6dg/z360ofvP4//v1NPzgs28WlWAAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:80%}.iziToast>.iziToast-body .iziToast-icon.ico-success{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt0UjBAAAACnRSTlMApAPhIFn82wgGv8mVtwAAAKVJREFUSMft0LEJAkEARNFFFEw1NFJb8CKjAy1AEOzAxNw+bEEEg6nyFjbY4LOzcBwX7S/gwUxoTdIn+Jbv4Lv8bx446+kB6VsBtK0B+wbMCKxrwL33wOrVeeChX28n7KTOTjgoEu6DRSYAgAAAAkAmAIAAAAIACQIkMkACAAgAIACAyECBKAOJuCagTJwSUCaUAEMAABEBRwAAEQFLbCJgO4bW+AZKGnktR+jAFAAAAABJRU5ErkJggg==) no-repeat 50% 50%;background-size:85%}.iziToast>.iziToast-body .iziToast-icon.ico-question{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEhFovxTxAAAEDklEQVRo3s2ZTWgTQRTHf03ipTRUqghNSgsRjHgQrFUQC6JgD1Kak3gQUUoPqRdBglf1oBehBws9Cn4cGk+1SOmh2upBxAYVoeJHrR9tgq0i1Cq0lqYeks7MbpPdmU00/c8hm9n33v/t7Nt5M2+qMEWQI0QIibZKRrQpHvLL2KI2wnQzzBKrDm2RIeKEy01dTYKUI7G1ZRknQXV5yP10kTYgly1NF/5S6duZ8ES+1iZodyaocrjXxE0OFeifYYgp0mRIkwFChAkRJsIxGgrIP+I0n82fvZW5dc/zkss0O2o1c5mX6/TmaDWl77RFe5YkUW3tKEmyFv0lOvXJ/fTYnmCEFuMRbGHEZqVHLyT9DFjUJmkzJl9DG5MWWwM6Llif/gF1nukB6nhgGwUXdFrE+wiURA8QoM9i0zEWWpXQW+ZsyeRrOMuyEo5Fv4gmy4dXPvqcC+pH2VRYaMwy+OWG+iLGCgm0W0Kv9HdvR8ASjmKCXpuK/bxiV/76A/v5UdDIZuKcJGjrnec5KZ7wwsWFOp6xPX/9mt2sqDe7FO+Kf/fXHBPPDWpdXGhTpLvUG9VKwh1xMDDjkvu+cNDFBTk7ptX1QkKZ850m3duu6fcrWxwdaFFyREJ2j4vOpKP6Du6z4uJCv8sYJIVkCnJBGGZaBONO3roY2EqNrSfIPi7SKP4fdXyNUd6I6wbSAHEl33tFLe+FlSsusnK90A0+oEPcuufZgXnOi+u9LrKSJQZQw6LwqBnv2CKsfHORbFbyQhA6xN/pEuihSdj56Co7LWRjPiKie6gkB2LiKuUqK5kiPkLiz1QJ9K1cNXBAMoUCigNpQ9IqDtMI1HKA4/jyvUsaoSyZLA5kjOjDPFZen8Ql5TsvBskUgjciIPSX3QAXC86DT7VWvlEh/xZ+ij9BDVWJ0QL0SbZq6QaFxoLPcXPmBLveLCc4wXdDK6s+6/vwhCSniFLPXW0NJe5UB8zKCsviqpc7vGPVQFcyZbyPwGD+d5ZnxmNWlhG4xSBZZjivjIWHEQgoDkSMjMwTo54569JSE5IpA7EyJSMTyGTUAUFlO1ZKOtaHTMeL1PhYYFTcihmY2cQ5+ullj7EDkiVfVez2sCTz8yiv84djhg7IJVk81xFWJlPdfHBG0flkRC/zQFZ+DSllNtfDdUsOMCliyGX5uOzU3ZhIXFDof4m1gDuKbEx0t2YS25gVGpcMnr/I1kx3c6piB8P8ZoqEwfMX3ZyCXynJTmq/U7NUXqfUzCbWL1wqVKBQUeESzQYoUlW8TAcVL1RCxUu1G6BYXfFyfQ4VPbDI4T8d2WzgQ6sc/vmxnTsqfHCZQzUJxm1h5dxS5Tu6lQgTZ0ipqRVqSwzTbbLHMt+c19iO76tsx/cLZub+Ali+tYC93olEAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjE3KzAyOjAwjKtfjgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxNyswMjowMP325zIAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:85%}.iziToast>.iziToast-body .iziToast-message,.iziToast>.iziToast-body .iziToast-title{padding:0;font-size:14px;line-height:16px;text-align:left;float:left;white-space:normal}.iziToast>.iziToast-body .iziToast-title{color:#000;margin:0}.iziToast>.iziToast-body .iziToast-message{margin:0 0 10px;color:rgba(0,0,0,.6)}.iziToast.iziToast-animateInside .iziToast-buttons-child,.iziToast.iziToast-animateInside .iziToast-icon,.iziToast.iziToast-animateInside .iziToast-inputs-child,.iziToast.iziToast-animateInside .iziToast-message,.iziToast.iziToast-animateInside .iziToast-title{opacity:0}.iziToast-target{position:relative;width:100%;margin:0 auto}.iziToast-target .iziToast-capsule{overflow:hidden}.iziToast-target .iziToast-capsule:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.iziToast-target .iziToast-capsule .iziToast{width:100%;float:left}.iziToast-wrapper{z-index:99999;position:fixed;width:100%;pointer-events:none;display:flex;flex-direction:column}.iziToast-wrapper .iziToast.iziToast-balloon:before{border-right:0 solid transparent;border-left:15px solid transparent;border-top:10px solid #000;border-top-color:inherit;right:8px;left:auto}.iziToast-wrapper-bottomLeft{left:0;bottom:0;text-align:left}.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before,.iziToast-wrapper-topLeft .iziToast.iziToast-balloon:before{border-right:15px solid transparent;border-left:0 solid transparent;right:auto;left:8px}.iziToast-wrapper-bottomRight{right:0;bottom:0;text-align:right}.iziToast-wrapper-topLeft{left:0;top:0;text-align:left}.iziToast-wrapper-topRight{top:0;right:0;text-align:right}.iziToast-wrapper-topCenter{top:0;left:0;right:0;text-align:center}.iziToast-wrapper-bottomCenter,.iziToast-wrapper-center{bottom:0;left:0;right:0;text-align:center}.iziToast-wrapper-center{top:0;justify-content:center;flex-flow:column;align-items:center}.iziToast-rtl{direction:rtl;padding:8px 0 9px 45px;font-family:Tahoma,'Lato',Arial}.iziToast-rtl .iziToast-cover{left:auto;right:0}.iziToast-rtl .iziToast-close{right:auto;left:0}.iziToast-rtl .iziToast-body{padding:0 10px 0 0;margin:0 16px 0 0;text-align:right}.iziToast-rtl .iziToast-body .iziToast-buttons,.iziToast-rtl .iziToast-body .iziToast-inputs,.iziToast-rtl .iziToast-body .iziToast-message,.iziToast-rtl .iziToast-body .iziToast-texts,.iziToast-rtl .iziToast-body .iziToast-title{float:right;text-align:right}.iziToast-rtl .iziToast-body .iziToast-icon{left:auto;right:0}@media only screen and (min-width:568px){.iziToast-wrapper{padding:10px 15px}.iziToast{margin:5px 0;border-radius:3px;width:auto}.iziToast:after{content:'';z-index:-1;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:3px;box-shadow:inset 0 -10px 20px -10px rgba(0,0,0,.2),inset 0 0 5px rgba(0,0,0,.1),0 8px 8px -5px rgba(0,0,0,.25)}.iziToast:not(.iziToast-rtl) .iziToast-cover{border-radius:3px 0 0 3px}.iziToast.iziToast-rtl .iziToast-cover{border-radius:0 3px 3px 0}.iziToast.iziToast-color-dark:after{box-shadow:inset 0 -10px 20px -10px rgba(255,255,255,.3),0 10px 10px -5px rgba(0,0,0,.25)}.iziToast.iziToast-balloon .iziToast-progressbar{background:0 0}.iziToast.iziToast-balloon:after{box-shadow:0 10px 10px -5px rgba(0,0,0,.25),inset 0 10px 20px -5px rgba(0,0,0,.25)}.iziToast-target .iziToast:after{box-shadow:inset 0 -10px 20px -10px rgba(0,0,0,.2),inset 0 0 5px rgba(0,0,0,.1)}}.iziToast.iziToast-theme-dark{background:#565c70;border-color:#565c70}.iziToast.iziToast-theme-dark .iziToast-title{color:#fff}.iziToast.iziToast-theme-dark .iziToast-message{color:rgba(255,255,255,.7);font-weight:300}.iziToast.iziToast-theme-dark .iziToast-close{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCR4OIQIPSao6AAAAwElEQVRIx72VUQ6EIAwFmz2XB+AConhjzqTJ7JeGKhLYlyx/BGdoBVpjIpMJNjgIZDKTkQHYmYfwmR2AfAqGFBcO2QjXZCd24bEggvd1KBx+xlwoDpYmvnBUUy68DYXD77ESr8WDtYqvxRex7a8oHP4Wo1Mkt5I68Mc+qYqv1h5OsZmZsQ3gj/02h6cO/KEYx29hu3R+VTTwz6D3TymIP1E8RvEiiVdZfEzicxYLiljSxKIqlnW5seitTW6uYnv/Aqh4whX3mEUrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTMwVDE0OjMzOjAyKzAyOjAwl6RMVgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0zMFQxNDozMzowMiswMjowMOb59OoAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:8px}.iziToast.iziToast-theme-dark .iziToast-icon{color:#fff}.iziToast.iziToast-theme-dark .iziToast-icon.ico-info{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vroaSAAAAKXRSTlMA6PsIvDob+OapavVhWRYPrIry2MxGQ97czsOzpJaMcE0qJQOwVtKjfxCVFeIAAAI3SURBVFjDlJPZsoIwEETnCiGyb8q+qmjl/3/wFmGKwjBROS9QWbtnOqDDGPq4MdMkSc0m7gcDDhF4NRdv8NoL4EcMpzoJglPl/KTDz4WW3IdvXEvxkfIKn7BMZb1bFK4yZFqghZ03jk0nG8N5NBwzx9xU5cxAg8fXi20/hDdC316lcA8o7t16eRuQvW1XGd2d2P8QSHQDDbdIII/9CR3lUF+lbucfJy4WfMS64EJPORnrZxtfc2pjJdnbuags3l04TTtJMXrdTph4Pyg4XAjugAJqMDf5Rf+oXx2/qi4u6nipakIi7CsgiuMSEF9IGKg8heQJKkxIfFSUU/egWSwNrS1fPDtLfon8sZOcYUQml1Qv9a3kfwsEUyJEMgFBKzdV8o3Iw9yAjg1jdLQCV4qbd3no8yD2GugaC3oMbF0NYHCpJYSDhNI5N2DAWB4F4z9Aj/04Cna/x7eVAQ17vRjQZPh+G/kddYv0h49yY4NWNDWMMOMUIRYvlTECmrN8pUAjo5RCMn8KoPmbJ/+Appgnk//Sy90GYBCGgm7IAskQ7D9hFKW4ApB1ei3FSYD9PjGAKygAV+ARFYBH5BsVgG9kkBSAQWKUFYBRZpkUgGVinRWAdUZQDABBQdIcAElDVBUAUUXWHQBZx1gMAGMprM0AsLbVXHsA5trZe93/wp3svQ0YNb/jWV3AIOLsMtlznSNOH7JqjOpDVh7z8qCZR10ftvO4nxeOvPLkpSuvfXnxzKtvXr7j+v8C5ii0e71At7cAAAAASUVORK5CYII=) no-repeat 50% 50%;background-size:85%}.iziToast.iziToast-theme-dark .iziToast-icon.ico-warning{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAMAAAAPzWOAAAAAllBMVEUAAAD////+//3+//3+//3///////z+//3+//3+//3////////////9//3////+//39//3///3////////////+//3+//39//3///z+//z+//7///3///3///3///3////////+//3+//3+//3+//z+//3+//7///3///z////////+//79//3///3///z///v+//3///+trXouAAAAMHRSTlMAB+j87RBf+PXiCwQClSPYhkAzJxnx05tSyadzcmxmHRbp5d7Gwrh4TDkvsYt/WkdQzCITAAAB1UlEQVRYw+3XaXKCQBCGYSIIighoxCVqNJrEPfly/8vFImKXduNsf/Mc4K1y7FnwlMLQc/bUbj85R6bA1LXRDICg6RjJcZa7NQYtnLUGTpERSiOXxrOPkv9s30iGKDmtbYir3H7OUHJa2ylAuvZzRvzUfs7Ii/2cgfTt54x82s8ZSM848gJmYtroQzA2jHwA+LkBIEuMGt+QIng1igzlyMrkuP2CyOi47axRaYTL5jhDJehoR+aovC29s3iIyly3Eb+hRCvZo2qsGTnhKr2cLDS+J73GsqBI9W80UCmWWpEuhIjh6ZRGjyNRarjzKGJ2Ou2himCvjHwqI+rTqQdlRH06TZQR9ek0hiqiPp06mV4ke7QPX6ERUZxO8Uo3sqrfhxvoRrCpvXwL/UjR9GRHMIvLgke4d5QbiwhM6JV2YKKF4vIl7XIBkwm4keryJVmvk/TfwcmPwQNkUQuyA2/sYGwnXL7GPu4bW1jYsmevrNj09/MGZMOEPXslQVqO8hqykD17JfPHP/bmo2yGGpdZiH3IZvzZa7B3+IdDjjpjesHJcvbs5dZ/e+cddVoDdvlq7x12Nac+iN7e4R8OXTjp0pw5CGnOLNDEzeBs5gVwFniAO+8f8wvfeXP2hyqnmwAAAABJRU5ErkJggg==) no-repeat 50% 50%;background-size:85%}.iziToast.iziToast-theme-dark .iziToast-icon.ico-error{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAeFBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////GqOSsAAAAJ3RSTlMA3BsB98QV8uSyWVUFz6RxYwzYvbupmYqAaU1FQTXKv7abj4d1azKNUit3AAACZElEQVRYw7WXaZOCMAyGw30UORRQBLxX/v8/3BkaWjrY2szO5otKfGrzJrEp6Kw6F8f8sI+i/SE/FucKSBaWiT8p5idlaEtnXTB9tKDLLHAvdSatOan3je93k9F2vRF36+mr1a6eH2NFNydoHq/ieU/UXcWjjk9XykdNWq2ywtp4tXL6Wb2T/MqtzzZutsrNyfvA51KoQROhVCjfrnASIRpSVUZiD5v4RbWExjRdJzSmOsZFvzYz59kRSr6V5zE+/QELHkNdb3VRx45HS1b1u+zfkkcbRAZ3qJ9l/A4qefHUDMShJe+6kZKJDD2pLQ9Q4lu+5Q7rz7Plperd7AtQEgIPI6o2dxr2D4GXvxqCiKcn8cD4gxIAEt7/GYkHL16KqeJd0NB4gJbXfgVnzCGJlzGcocCVSLzUvoAj9xJ4NF7/R8gxoVQexc/hgBpSebjPjgPs59cHmYfn7NkDb6wXmUf1I1ygIPPw4gtgCE8yDw8eAop4J/PQcBExjQmZx37MsZB2ZB4cLKQCG5vKYxMWSzMxIg8pNtOyUkvkocEmXGo69mh8FgnxS4yBwMvDrJSNHZB4uC3ayz/YkcIP4lflwVIT+OU07ZSjrbTkZQ6dTPkYubZ8GC/Cqxu6WvJZII93dcCw46GdNqdpTeF/tiMOuDGB9z/NI6NvyWetGPM0g+bVNeovBmamHXWj0nCbEaGeTMN2PWrqd6cM26ZxP2DeJvj+ph/30Zi/GmRbtlK5SptI+nwGGnvH6gUruT+L16MJHF+58rwNIifTV0vM8+hwMeOXAb6Yx0wXT+b999WXfvn+8/X/F7fWzjdTord5AAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:80%}.iziToast.iziToast-theme-dark .iziToast-icon.ico-success{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAIVBMVEUAAAD////////////////////////////////////////PIev5AAAACnRSTlMApAPhIFn82wgGv8mVtwAAAKVJREFUSMft0LEJAkEARNFFFEw1NFJb8CKjAy1AEOzAxNw+bEEEg6nyFjbY4LOzcBwX7S/gwUxoTdIn+Jbv4Lv8bx446+kB6VsBtK0B+wbMCKxrwL33wOrVeeChX28n7KTOTjgoEu6DRSYAgAAAAkAmAIAAAAIACQIkMkACAAgAIACAyECBKAOJuCagTJwSUCaUAEMAABEBRwAAEQFLbCJgO4bW+AZKGnktR+jAFAAAAABJRU5ErkJggg==) no-repeat 50% 50%;background-size:85%}.iziToast.iziToast-theme-dark .iziToast-icon.ico-question{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEg18vki+AAAETUlEQVRo3s1ZTWhbRxD+VlIuxsLFCYVIIQYVopBDoK5bKDWUBupDMNbJ5FBKg/FBziUQdE9yaC+FHBrwsdCfQ9RTGoLxwWl+DqHEojUFFydxnB9bInZDqOsErBrr6yGvs/ueX97bldTKo4Pe7puZb3Z33s7srIIjMY1jyCEjP6ImvyX8pF64arSHznKC06wzijY5xSKz7YbuYokV2lODsyyxqz3gSY6z6gCuqcpxJluFH+Z8U+D/0jyHoxFUBHgfvsGHIS9WMIUlVFFDFTUAGWSRQRY5HMeBEP6b+Ew9dh/7INd2jGeO59kfKdXP85zbIbfGQVf4sYC3N1hm3lo6zzIbPvk6x+zBk7wQGMEMB5xncIAzAS0XrFySSV72iS1yyBVcdA1x0afrsoUJgdFfY2+z8ADAXl7zz0KcwJiPfZKpVuABgClO+nRG+QIHDdfb4qlWwUXvKW4Z7vi6L4J9vg+vbfCeCeZH2RfOdMOc/HbCA4BvIW6EMQz7XK/ltd+hP+VzR9mgva2YSfyGI17fA7ynnocqeQNFfIJ0oHsdv6CC2+rXGBN6cQdveY3fcVRtmy/HDete+93zy8jA8zV7YkwYMrjHzRddRsCdiVCwwmh6wg9iTNC7Y9XIF1iS7kbUpsvvGEdPuTfSgAEjRpR096x0liPFD/Eqt2NMuBQzB2XhrACAApjFsuQFh9XdGAX70B3oSuNdnMVBaX+sopYxjwVpHFBVACyKTXNoktjD+6Ll8xhenS9MAAkAI/Lux2YNUOs4I413Ypg1SgEAu7kpFvWjaeJe0fJHDGe/cNaZBkekudw8PMA+0fMwlndZeAsJ5KR/qhUDUJCnSiyvRsolkJHGUgvjH8QXDgZopEzKMKDqCKrwEQ4C6MH7GEXC665buLJG8hlQc4LP4paxfJrOqYVYYY2UARfEIazTbgDg2dB98GebzJd54b8L/iWNdLyooeR6CHyZ+6xk0yKxkYg6nEVSUG4VJ9QJ9cxRCxO+9WiOyvgUeexXP1hLGH5nGuBWVtiSp4vqe3VP0UFWI9Wan4Er3v8q7jjPWVtm4FtcQQMrOKO2nOQCM5AyDMi56FDrKHA/1nyppS1ppBpYaE8wciEjGI2AaeM41kI4doDX4XiT3Qm1gevyruCgZg9P8xIv8m1nCzTKq6oiJ9xTMiZ505P5m8cdZ0CnZMVXHVljM7WMBzxpyDxygtdxoCEFTaMIWbZU85UvBjgUMYy0fBaAF8V1Lj9qWQ1aMZ5f4k9r+AGMSkMP1vZoZih6k6sicc5h/OFHM9vDqU/VIU7zJZdYYsKGH4g4nAJMGiXZRds1pVMoZ69RM5vfkbh0qkBhsnS2RLMLilQdL9MBHS9UAh0v1e6CYnXHy/WeeCcvLDwl/9OVze69tPKM+M+v7eJN6OzFpWdEF0ucDbhVNFXadnVrmJFlkVNGTS2M6pzmhMvltfPhnN2B63sVuL7fcNP3D1TSk2ihosPrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjEzKzAyOjAweOR7nQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxMyswMjowMAm5wyEAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) no-repeat 50% 50%;background-size:85%}.iziToast.iziToast-theme-dark .iziToast-buttons>a,.iziToast.iziToast-theme-dark .iziToast-buttons>button,.iziToast.iziToast-theme-dark .iziToast-buttons>input{color:#fff;background:rgba(255,255,255,.1)}.iziToast.iziToast-theme-dark .iziToast-buttons>a:hover,.iziToast.iziToast-theme-dark .iziToast-buttons>button:hover,.iziToast.iziToast-theme-dark .iziToast-buttons>input:hover{background:rgba(255,255,255,.2)}.iziToast.iziToast-theme-dark .iziToast-buttons>a:focus,.iziToast.iziToast-theme-dark .iziToast-buttons>button:focus,.iziToast.iziToast-theme-dark .iziToast-buttons>input:focus{box-shadow:0 0 0 1px rgba(255,255,255,.6)}.iziToast.iziToast-color-red{background:rgba(255,175,180,.9);border-color:rgba(255,175,180,.9)}.iziToast.iziToast-color-orange{background:rgba(255,207,165,.9);border-color:rgba(255,207,165,.9)}.iziToast.iziToast-color-yellow{background:rgba(255,249,178,.9);border-color:rgba(255,249,178,.9)}.iziToast.iziToast-color-blue{background:rgba(157,222,255,.9);border-color:rgba(157,222,255,.9)}.iziToast.iziToast-color-green{background:rgba(166,239,184,.9);border-color:rgba(166,239,184,.9)}.iziToast.iziToast-layout2 .iziToast-body .iziToast-message,.iziToast.iziToast-layout2 .iziToast-body .iziToast-texts{width:100%}.iziToast.iziToast-layout3{border-radius:2px}.iziToast.iziToast-layout3::after{display:none}.iziToast .revealIn,.iziToast.revealIn{-webkit-animation:iziT-revealIn 1s cubic-bezier(.25,1.6,.25,1) both;-moz-animation:iziT-revealIn 1s cubic-bezier(.25,1.6,.25,1) both;animation:iziT-revealIn 1s cubic-bezier(.25,1.6,.25,1) both}.iziToast .slideIn,.iziToast.slideIn{-webkit-animation:iziT-slideIn 1s cubic-bezier(.16,.81,.32,1) both;-moz-animation:iziT-slideIn 1s cubic-bezier(.16,.81,.32,1) both;animation:iziT-slideIn 1s cubic-bezier(.16,.81,.32,1) both}.iziToast.bounceInLeft{-webkit-animation:iziT-bounceInLeft .7s ease-in-out both;animation:iziT-bounceInLeft .7s ease-in-out both}.iziToast.bounceInRight{-webkit-animation:iziT-bounceInRight .85s ease-in-out both;animation:iziT-bounceInRight .85s ease-in-out both}.iziToast.bounceInDown{-webkit-animation:iziT-bounceInDown .7s ease-in-out both;animation:iziT-bounceInDown .7s ease-in-out both}.iziToast.bounceInUp{-webkit-animation:iziT-bounceInUp .7s ease-in-out both;animation:iziT-bounceInUp .7s ease-in-out both}.iziToast .fadeIn,.iziToast.fadeIn{-webkit-animation:iziT-fadeIn .5s ease both;animation:iziT-fadeIn .5s ease both}.iziToast.fadeInUp{-webkit-animation:iziT-fadeInUp .7s ease both;animation:iziT-fadeInUp .7s ease both}.iziToast.fadeInDown{-webkit-animation:iziT-fadeInDown .7s ease both;animation:iziT-fadeInDown .7s ease both}.iziToast.fadeInLeft{-webkit-animation:iziT-fadeInLeft .85s cubic-bezier(.25,.8,.25,1) both;animation:iziT-fadeInLeft .85s cubic-bezier(.25,.8,.25,1) both}.iziToast.fadeInRight{-webkit-animation:iziT-fadeInRight .85s cubic-bezier(.25,.8,.25,1) both;animation:iziT-fadeInRight .85s cubic-bezier(.25,.8,.25,1) both}.iziToast.flipInX{-webkit-animation:iziT-flipInX .85s cubic-bezier(.35,0,.25,1) both;animation:iziT-flipInX .85s cubic-bezier(.35,0,.25,1) both}.iziToast.fadeOut{-webkit-animation:iziT-fadeOut .7s ease both;animation:iziT-fadeOut .7s ease both}.iziToast.fadeOutDown{-webkit-animation:iziT-fadeOutDown .7s cubic-bezier(.4,.45,.15,.91) both;animation:iziT-fadeOutDown .7s cubic-bezier(.4,.45,.15,.91) both}.iziToast.fadeOutUp{-webkit-animation:iziT-fadeOutUp .7s cubic-bezier(.4,.45,.15,.91) both;animation:iziT-fadeOutUp .7s cubic-bezier(.4,.45,.15,.91) both}.iziToast.fadeOutLeft{-webkit-animation:iziT-fadeOutLeft .5s ease both;animation:iziT-fadeOutLeft .5s ease both}.iziToast.fadeOutRight{-webkit-animation:iziT-fadeOutRight .5s ease both;animation:iziT-fadeOutRight .5s ease both}.iziToast.flipOutX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation:iziT-flipOutX .7s cubic-bezier(.4,.45,.15,.91) both;animation:iziT-flipOutX .7s cubic-bezier(.4,.45,.15,.91) both}.iziToast-overlay.fadeIn{-webkit-animation:iziT-fadeIn .5s ease both;animation:iziT-fadeIn .5s ease both}.iziToast-overlay.fadeOut{-webkit-animation:iziT-fadeOut .7s ease both;animation:iziT-fadeOut .7s ease both}@-webkit-keyframes iziT-revealIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,1)}to{opacity:1}}@-moz-keyframes iziT-revealIn{0%{opacity:0;-moz-transform:scale3d(.3,.3,1)}to{opacity:1}}@-webkit-keyframes iziT-slideIn{0%{opacity:0;-webkit-transform:translateX(50px)}to{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes iziT-slideIn{0%{opacity:0;-moz-transform:translateX(50px)}to{opacity:1;-moz-transform:translateX(0)}}@-webkit-keyframes iziT-bounceInLeft{0%{opacity:0;-webkit-transform:translateX(280px)}50%{opacity:1;-webkit-transform:translateX(-20px)}70%{-webkit-transform:translateX(10px)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes iziT-bounceInRight{0%{opacity:0;-webkit-transform:translateX(-280px)}50%{opacity:1;-webkit-transform:translateX(20px)}70%{-webkit-transform:translateX(-10px)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes iziT-bounceInDown{0%{opacity:0;-webkit-transform:translateY(-200px)}50%{opacity:1;-webkit-transform:translateY(10px)}70%{-webkit-transform:translateY(-5px)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes iziT-bounceInUp{0%{opacity:0;-webkit-transform:translateY(200px)}50%{opacity:1;-webkit-transform:translateY(-10px)}70%{-webkit-transform:translateY(5px)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes iziT-fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes iziT-fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInRight{0%{opacity:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes iziT-fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes iziT-fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes iziT-fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-webkit-keyframes iziT-fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-200px,0,0);transform:translate3d(-200px,0,0)}}@-webkit-keyframes iziT-fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(200px,0,0);transform:translate3d(200px,0,0)}}@-webkit-keyframes iziT-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@-moz-keyframes iziT-revealIn{0%{opacity:0;transform:scale3d(.3,.3,1)}to{opacity:1}}@-webkit-keyframes iziT-revealIn{0%{opacity:0;transform:scale3d(.3,.3,1)}to{opacity:1}}@-o-keyframes iziT-revealIn{0%{opacity:0;transform:scale3d(.3,.3,1)}to{opacity:1}}@keyframes iziT-revealIn{0%{opacity:0;transform:scale3d(.3,.3,1)}to{opacity:1}}@-moz-keyframes iziT-slideIn{0%{opacity:0;transform:translateX(50px)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes iziT-slideIn{0%{opacity:0;transform:translateX(50px)}to{opacity:1;transform:translateX(0)}}@-o-keyframes iziT-slideIn{0%{opacity:0;transform:translateX(50px)}to{opacity:1;transform:translateX(0)}}@keyframes iziT-slideIn{0%{opacity:0;transform:translateX(50px)}to{opacity:1;transform:translateX(0)}}@-moz-keyframes iziT-bounceInLeft{0%{opacity:0;transform:translateX(280px)}50%{opacity:1;transform:translateX(-20px)}70%{transform:translateX(10px)}to{transform:translateX(0)}}@-webkit-keyframes iziT-bounceInLeft{0%{opacity:0;transform:translateX(280px)}50%{opacity:1;transform:translateX(-20px)}70%{transform:translateX(10px)}to{transform:translateX(0)}}@-o-keyframes iziT-bounceInLeft{0%{opacity:0;transform:translateX(280px)}50%{opacity:1;transform:translateX(-20px)}70%{transform:translateX(10px)}to{transform:translateX(0)}}@keyframes iziT-bounceInLeft{0%{opacity:0;transform:translateX(280px)}50%{opacity:1;transform:translateX(-20px)}70%{transform:translateX(10px)}to{transform:translateX(0)}}@-moz-keyframes iziT-bounceInRight{0%{opacity:0;transform:translateX(-280px)}50%{opacity:1;transform:translateX(20px)}70%{transform:translateX(-10px)}to{transform:translateX(0)}}@-webkit-keyframes iziT-bounceInRight{0%{opacity:0;transform:translateX(-280px)}50%{opacity:1;transform:translateX(20px)}70%{transform:translateX(-10px)}to{transform:translateX(0)}}@-o-keyframes iziT-bounceInRight{0%{opacity:0;transform:translateX(-280px)}50%{opacity:1;transform:translateX(20px)}70%{transform:translateX(-10px)}to{transform:translateX(0)}}@keyframes iziT-bounceInRight{0%{opacity:0;transform:translateX(-280px)}50%{opacity:1;transform:translateX(20px)}70%{transform:translateX(-10px)}to{transform:translateX(0)}}@-moz-keyframes iziT-bounceInDown{0%{opacity:0;transform:translateY(-200px)}50%{opacity:1;transform:translateY(10px)}70%{transform:translateY(-5px)}to{transform:translateY(0)}}@-webkit-keyframes iziT-bounceInDown{0%{opacity:0;transform:translateY(-200px)}50%{opacity:1;transform:translateY(10px)}70%{transform:translateY(-5px)}to{transform:translateY(0)}}@-o-keyframes iziT-bounceInDown{0%{opacity:0;transform:translateY(-200px)}50%{opacity:1;transform:translateY(10px)}70%{transform:translateY(-5px)}to{transform:translateY(0)}}@keyframes iziT-bounceInDown{0%{opacity:0;transform:translateY(-200px)}50%{opacity:1;transform:translateY(10px)}70%{transform:translateY(-5px)}to{transform:translateY(0)}}@-moz-keyframes iziT-bounceInUp{0%{opacity:0;transform:translateY(200px)}50%{opacity:1;transform:translateY(-10px)}70%{transform:translateY(5px)}to{transform:translateY(0)}}@-webkit-keyframes iziT-bounceInUp{0%{opacity:0;transform:translateY(200px)}50%{opacity:1;transform:translateY(-10px)}70%{transform:translateY(5px)}to{transform:translateY(0)}}@-o-keyframes iziT-bounceInUp{0%{opacity:0;transform:translateY(200px)}50%{opacity:1;transform:translateY(-10px)}70%{transform:translateY(5px)}to{transform:translateY(0)}}@keyframes iziT-bounceInUp{0%{opacity:0;transform:translateY(200px)}50%{opacity:1;transform:translateY(-10px)}70%{transform:translateY(5px)}to{transform:translateY(0)}}@-moz-keyframes iziT-fadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes iziT-fadeIn{0%{opacity:0}to{opacity:1}}@-o-keyframes iziT-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes iziT-fadeIn{0%{opacity:0}to{opacity:1}}@-moz-keyframes iziT-fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-o-keyframes iziT-fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes iziT-fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-moz-keyframes iziT-fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-o-keyframes iziT-fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes iziT-fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-moz-keyframes iziT-fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-o-keyframes iziT-fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes iziT-fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(300px,0,0);transform:translate3d(300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-moz-keyframes iziT-fadeInRight{0%{opacity:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes iziT-fadeInRight{0%{opacity:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-o-keyframes iziT-fadeInRight{0%{opacity:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes iziT-fadeInRight{0%{opacity:0;-webkit-transform:translate3d(-300px,0,0);transform:translate3d(-300px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@-moz-keyframes iziT-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes iziT-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-o-keyframes iziT-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes iziT-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg)}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-moz-keyframes iziT-fadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes iziT-fadeOut{0%{opacity:1}to{opacity:0}}@-o-keyframes iziT-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes iziT-fadeOut{0%{opacity:1}to{opacity:0}}@-moz-keyframes iziT-fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes iziT-fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-o-keyframes iziT-fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes iziT-fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-moz-keyframes iziT-fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-webkit-keyframes iziT-fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-o-keyframes iziT-fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes iziT-fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@-moz-keyframes iziT-fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-200px,0,0);transform:translate3d(-200px,0,0)}}@-webkit-keyframes iziT-fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-200px,0,0);transform:translate3d(-200px,0,0)}}@-o-keyframes iziT-fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-200px,0,0);transform:translate3d(-200px,0,0)}}@keyframes iziT-fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-200px,0,0);transform:translate3d(-200px,0,0)}}@-moz-keyframes iziT-fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(200px,0,0);transform:translate3d(200px,0,0)}}@-webkit-keyframes iziT-fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(200px,0,0);transform:translate3d(200px,0,0)}}@-o-keyframes iziT-fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(200px,0,0);transform:translate3d(200px,0,0)}}@keyframes iziT-fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(200px,0,0);transform:translate3d(200px,0,0)}}@-moz-keyframes iziT-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@-webkit-keyframes iziT-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@-o-keyframes iziT-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes iziT-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}} \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/css/jquery.dataTables.min.css b/Penilaian-Esai/public/assets/css/jquery.dataTables.min.css new file mode 100644 index 0000000..173ae3c --- /dev/null +++ b/Penilaian-Esai/public/assets/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.9em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▴"}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▾"}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody table.dataTable thead>tr>th:before,div.dataTables_scrollBody table.dataTable thead>tr>th:after,div.dataTables_scrollBody table.dataTable thead>tr>td:before,div.dataTables_scrollBody table.dataTable thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgba(13, 110, 253, 0.9);animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px;border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 10px 6px 10px;border-top:1px solid rgba(0, 0, 0, 0.3)}table.dataTable tbody tr{background-color:transparent}table.dataTable tbody tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.9);color:white}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid rgba(0, 0, 0, 0.15);border-right:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid rgba(0, 0, 0, 0.15)}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe>tbody>tr.odd>*,table.dataTable.display>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.023)}table.dataTable.stripe>tbody>tr.odd.selected>*,table.dataTable.display>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.923)}table.dataTable.hover>tbody>tr:hover>*,table.dataTable.display>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.035)}table.dataTable.hover>tbody>tr.selected:hover>*,table.dataTable.display>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.935)}table.dataTable.order-column>tbody tr>.sorting_1,table.dataTable.order-column>tbody tr>.sorting_2,table.dataTable.order-column>tbody tr>.sorting_3,table.dataTable.display>tbody tr>.sorting_1,table.dataTable.display>tbody tr>.sorting_2,table.dataTable.display>tbody tr>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019)}table.dataTable.order-column>tbody tr.selected>.sorting_1,table.dataTable.order-column>tbody tr.selected>.sorting_2,table.dataTable.order-column>tbody tr.selected>.sorting_3,table.dataTable.display>tbody tr.selected>.sorting_1,table.dataTable.display>tbody tr.selected>.sorting_2,table.dataTable.display>tbody tr.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919)}table.dataTable.display>tbody>tr.odd>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.054)}table.dataTable.display>tbody>tr.odd>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.047)}table.dataTable.display>tbody>tr.odd>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.039)}table.dataTable.display>tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.954)}table.dataTable.display>tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.947)}table.dataTable.display>tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.939)}table.dataTable.display>tbody>tr.even>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.019)}table.dataTable.display>tbody>tr.even>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.011)}table.dataTable.display>tbody>tr.even>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.003)}table.dataTable.display>tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.919)}table.dataTable.display>tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.911)}table.dataTable.display>tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.903)}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.082)}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.074)}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.062)}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.982)}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.974)}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{box-shadow:inset 0 0 0 9999px rgba(13, 110, 253, 0.962)}table.dataTable.no-footer{border-bottom:1px solid rgba(0, 0, 0, 0.3)}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_length select{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;padding:4px}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;margin-left:3px}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid rgba(0, 0, 0, 0.3);background-color:rgba(230, 230, 230, 0.1);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.1)), color-stop(100%, rgba(0, 0, 0, 0.1)));background:-webkit-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);background:-moz-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);background:-ms-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);background:-o-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);background:linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid rgba(0, 0, 0, 0.3)}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}} diff --git a/Penilaian-Esai/public/assets/css/select2.min.css b/Penilaian-Esai/public/assets/css/select2.min.css new file mode 100644 index 0000000..7c18ad5 --- /dev/null +++ b/Penilaian-Esai/public/assets/css/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/Penilaian-Esai/public/assets/css/sweetalert.css b/Penilaian-Esai/public/assets/css/sweetalert.css new file mode 100644 index 0000000..76f159d --- /dev/null +++ b/Penilaian-Esai/public/assets/css/sweetalert.css @@ -0,0 +1,932 @@ +body.stop-scrolling { + height: 100%; + overflow: hidden; } + +.sweet-overlay { + background-color: black; + /* IE8 */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; + /* IE8 */ + background-color: rgba(0, 0, 0, 0.4); + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: none; + z-index: 10000; } + +.sweet-alert { + background-color: white; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + width: 478px; + padding: 17px; + border-radius: 5px; + text-align: center; + position: fixed; + left: 50%; + top: 50%; + margin-left: -256px; + margin-top: -200px; + overflow: hidden; + display: none; + z-index: 99999; } + @media all and (max-width: 540px) { + .sweet-alert { + width: auto; + margin-left: 0; + margin-right: 0; + left: 15px; + right: 15px; } } + .sweet-alert h2 { + color: #575757; + font-size: 30px; + text-align: center; + font-weight: 600; + text-transform: none; + position: relative; + margin: 25px 0; + padding: 0; + line-height: 40px; + display: block; } + .sweet-alert p { + color: #797979; + font-size: 16px; + text-align: center; + font-weight: 300; + position: relative; + text-align: inherit; + float: none; + margin: 0; + padding: 0; + line-height: normal; } + .sweet-alert fieldset { + border: none; + position: relative; } + .sweet-alert .sa-error-container { + background-color: #f1f1f1; + margin-left: -17px; + margin-right: -17px; + overflow: hidden; + padding: 0 10px; + max-height: 0; + webkit-transition: padding 0.15s, max-height 0.15s; + transition: padding 0.15s, max-height 0.15s; } + .sweet-alert .sa-error-container.show { + padding: 10px 0; + max-height: 100px; + webkit-transition: padding 0.2s, max-height 0.2s; + transition: padding 0.25s, max-height 0.25s; } + .sweet-alert .sa-error-container .icon { + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #ea7d7d; + color: white; + line-height: 24px; + text-align: center; + margin-right: 3px; } + .sweet-alert .sa-error-container p { + display: inline-block; } + .sweet-alert .sa-input-error { + position: absolute; + top: 29px; + right: 26px; + width: 20px; + height: 20px; + opacity: 0; + -webkit-transform: scale(0.5); + transform: scale(0.5); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.1s; + transition: all 0.1s; } + .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after { + content: ""; + width: 20px; + height: 6px; + background-color: #f06e57; + border-radius: 3px; + position: absolute; + top: 50%; + margin-top: -4px; + left: 50%; + margin-left: -9px; } + .sweet-alert .sa-input-error::before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-input-error::after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-input-error.show { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); } + .sweet-alert input { + width: 100%; + box-sizing: border-box; + border-radius: 3px; + border: 1px solid #d7d7d7; + height: 43px; + margin-top: 10px; + margin-bottom: 17px; + font-size: 18px; + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06); + padding: 0 12px; + display: none; + -webkit-transition: all 0.3s; + transition: all 0.3s; } + .sweet-alert input:focus { + outline: none; + box-shadow: 0px 0px 3px #c4e6f5; + border: 1px solid #b4dbed; } + .sweet-alert input:focus::-moz-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input:focus:-ms-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input:focus::-webkit-input-placeholder { + transition: opacity 0.3s 0.03s ease; + opacity: 0.5; } + .sweet-alert input::-moz-placeholder { + color: #bdbdbd; } + .sweet-alert input:-ms-input-placeholder { + color: #bdbdbd; } + .sweet-alert input::-webkit-input-placeholder { + color: #bdbdbd; } + .sweet-alert.show-input input { + display: block; } + .sweet-alert .sa-confirm-button-container { + display: inline-block; + position: relative; } + .sweet-alert .la-ball-fall { + position: absolute; + left: 50%; + top: 50%; + margin-left: -27px; + margin-top: 4px; + opacity: 0; + visibility: hidden; } + .sweet-alert button { + background-color: #8CD4F5; + color: white; + border: none; + box-shadow: none; + font-size: 17px; + font-weight: 500; + -webkit-border-radius: 4px; + border-radius: 5px; + padding: 10px 32px; + margin: 26px 5px 0 5px; + cursor: pointer; } + .sweet-alert button:focus { + outline: none; + box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); } + .sweet-alert button:hover { + background-color: #7ecff4; } + .sweet-alert button:active { + background-color: #5dc2f1; } + .sweet-alert button.cancel { + background-color: #C1C1C1; } + .sweet-alert button.cancel:hover { + background-color: #b9b9b9; } + .sweet-alert button.cancel:active { + background-color: #a8a8a8; } + .sweet-alert button.cancel:focus { + box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; } + .sweet-alert button[disabled] { + opacity: .6; + cursor: default; } + .sweet-alert button.confirm[disabled] { + color: transparent; } + .sweet-alert button.confirm[disabled] ~ .la-ball-fall { + opacity: 1; + visibility: visible; + transition-delay: 0s; } + .sweet-alert button::-moz-focus-inner { + border: 0; } + .sweet-alert[data-has-cancel-button=false] button { + box-shadow: none !important; } + .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] { + padding-bottom: 40px; } + .sweet-alert .sa-icon { + width: 80px; + height: 80px; + border: 4px solid gray; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + margin: 20px auto; + padding: 0; + position: relative; + box-sizing: content-box; } + .sweet-alert .sa-icon.sa-error { + border-color: #F27474; } + .sweet-alert .sa-icon.sa-error .sa-x-mark { + position: relative; + display: block; } + .sweet-alert .sa-icon.sa-error .sa-line { + position: absolute; + height: 5px; + width: 47px; + background-color: #F27474; + display: block; + top: 37px; + border-radius: 2px; } + .sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; } + .sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; } + .sweet-alert .sa-icon.sa-warning { + border-color: #F8BB86; } + .sweet-alert .sa-icon.sa-warning .sa-body { + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + -webkit-border-radius: 2px; + border-radius: 2px; + margin-left: -2px; + background-color: #F8BB86; } + .sweet-alert .sa-icon.sa-warning .sa-dot { + position: absolute; + width: 7px; + height: 7px; + -webkit-border-radius: 50%; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: #F8BB86; } + .sweet-alert .sa-icon.sa-info { + border-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-info::before { + content: ""; + position: absolute; + width: 5px; + height: 29px; + left: 50%; + bottom: 17px; + border-radius: 2px; + margin-left: -2px; + background-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-info::after { + content: ""; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + top: 19px; + background-color: #C9DAE1; } + .sweet-alert .sa-icon.sa-success { + border-color: #A5DC86; } + .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after { + content: ''; + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: white; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-icon.sa-success::before { + -webkit-border-radius: 120px 0 0 120px; + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; } + .sweet-alert .sa-icon.sa-success::after { + -webkit-border-radius: 0 120px 120px 0; + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0px 60px; + transform-origin: 0px 60px; } + .sweet-alert .sa-icon.sa-success .sa-placeholder { + width: 80px; + height: 80px; + border: 4px solid rgba(165, 220, 134, 0.2); + -webkit-border-radius: 40px; + border-radius: 40px; + border-radius: 50%; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2; } + .sweet-alert .sa-icon.sa-success .sa-fix { + width: 5px; + height: 90px; + background-color: white; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-icon.sa-success .sa-line { + height: 5px; + background-color: #A5DC86; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2; } + .sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); } + .sweet-alert .sa-icon.sa-success .sa-line.sa-long { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + .sweet-alert .sa-icon.sa-custom { + background-size: contain; + border-radius: 0; + border: none; + background-position: center center; + background-repeat: no-repeat; } + +/* + * Animations + */ +@-webkit-keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); } + 100% { + transform: scale(1); + -webkit-transform: scale(1); } } + +@keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); } + 80% { + transform: scale(0.95); + -webkit-transform: scale(0.95); } + 100% { + transform: scale(1); + -webkit-transform: scale(1); } } + +@-webkit-keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); } } + +@keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); } } + +@-webkit-keyframes slideFromTop { + 0% { + top: 0%; } + 100% { + top: 50%; } } + +@keyframes slideFromTop { + 0% { + top: 0%; } + 100% { + top: 50%; } } + +@-webkit-keyframes slideToTop { + 0% { + top: 50%; } + 100% { + top: 0%; } } + +@keyframes slideToTop { + 0% { + top: 50%; } + 100% { + top: 0%; } } + +@-webkit-keyframes slideFromBottom { + 0% { + top: 70%; } + 100% { + top: 50%; } } + +@keyframes slideFromBottom { + 0% { + top: 70%; } + 100% { + top: 50%; } } + +@-webkit-keyframes slideToBottom { + 0% { + top: 50%; } + 100% { + top: 70%; } } + +@keyframes slideToBottom { + 0% { + top: 50%; } + 100% { + top: 70%; } } + +.showSweetAlert[data-animation=pop] { + -webkit-animation: showSweetAlert 0.3s; + animation: showSweetAlert 0.3s; } + +.showSweetAlert[data-animation=none] { + -webkit-animation: none; + animation: none; } + +.showSweetAlert[data-animation=slide-from-top] { + -webkit-animation: slideFromTop 0.3s; + animation: slideFromTop 0.3s; } + +.showSweetAlert[data-animation=slide-from-bottom] { + -webkit-animation: slideFromBottom 0.3s; + animation: slideFromBottom 0.3s; } + +.hideSweetAlert[data-animation=pop] { + -webkit-animation: hideSweetAlert 0.2s; + animation: hideSweetAlert 0.2s; } + +.hideSweetAlert[data-animation=none] { + -webkit-animation: none; + animation: none; } + +.hideSweetAlert[data-animation=slide-from-top] { + -webkit-animation: slideToTop 0.4s; + animation: slideToTop 0.4s; } + +.hideSweetAlert[data-animation=slide-from-bottom] { + -webkit-animation: slideToBottom 0.3s; + animation: slideToBottom 0.3s; } + +@-webkit-keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; } + 54% { + width: 0; + left: 1px; + top: 19px; } + 70% { + width: 50px; + left: -8px; + top: 37px; } + 84% { + width: 17px; + left: 21px; + top: 48px; } + 100% { + width: 25px; + left: 14px; + top: 45px; } } + +@keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; } + 54% { + width: 0; + left: 1px; + top: 19px; } + 70% { + width: 50px; + left: -8px; + top: 37px; } + 84% { + width: 17px; + left: 21px; + top: 48px; } + 100% { + width: 25px; + left: 14px; + top: 45px; } } + +@-webkit-keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; } + 65% { + width: 0; + right: 46px; + top: 54px; } + 84% { + width: 55px; + right: 0px; + top: 35px; } + 100% { + width: 47px; + right: 8px; + top: 38px; } } + +@keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; } + 65% { + width: 0; + right: 46px; + top: 54px; } + 84% { + width: 55px; + right: 0px; + top: 35px; } + 100% { + width: 47px; + right: 8px; + top: 38px; } } + +@-webkit-keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } } + +@keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); } } + +.animateSuccessTip { + -webkit-animation: animateSuccessTip 0.75s; + animation: animateSuccessTip 0.75s; } + +.animateSuccessLong { + -webkit-animation: animateSuccessLong 0.75s; + animation: animateSuccessLong 0.75s; } + +.sa-icon.sa-success.animate::after { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in; } + +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; } } + +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; } } + +.animateErrorIcon { + -webkit-animation: animateErrorIcon 0.5s; + animation: animateErrorIcon 0.5s; } + +@-webkit-keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; } } + +@keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; } } + +.animateXMark { + -webkit-animation: animateXMark 0.5s; + animation: animateXMark 0.5s; } + +@-webkit-keyframes pulseWarning { + 0% { + border-color: #F8D486; } + 100% { + border-color: #F8BB86; } } + +@keyframes pulseWarning { + 0% { + border-color: #F8D486; } + 100% { + border-color: #F8BB86; } } + +.pulseWarning { + -webkit-animation: pulseWarning 0.75s infinite alternate; + animation: pulseWarning 0.75s infinite alternate; } + +@-webkit-keyframes pulseWarningIns { + 0% { + background-color: #F8D486; } + 100% { + background-color: #F8BB86; } } + +@keyframes pulseWarningIns { + 0% { + background-color: #F8D486; } + 100% { + background-color: #F8BB86; } } + +.pulseWarningIns { + -webkit-animation: pulseWarningIns 0.75s infinite alternate; + animation: pulseWarningIns 0.75s infinite alternate; } + +@-webkit-keyframes rotate-loading { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +@keyframes rotate-loading { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +/* Internet Explorer 9 has some special quirks that are fixed here */ +/* The icons are not animated. */ +/* This file is automatically merged into sweet-alert.min.js through Gulp */ +/* Error icon */ +.sweet-alert .sa-icon.sa-error .sa-line.sa-left { + -ms-transform: rotate(45deg) \9; } + +.sweet-alert .sa-icon.sa-error .sa-line.sa-right { + -ms-transform: rotate(-45deg) \9; } + +/* Success icon */ +.sweet-alert .sa-icon.sa-success { + border-color: transparent\9; } + +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip { + -ms-transform: rotate(45deg) \9; } + +.sweet-alert .sa-icon.sa-success .sa-line.sa-long { + -ms-transform: rotate(-45deg) \9; } + +/*! + * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) + * Copyright 2015 Daniel Cardoso <@DanielCardoso> + * Licensed under MIT + */ +.la-ball-fall, +.la-ball-fall > div { + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +.la-ball-fall { + display: block; + font-size: 0; + color: #fff; } + +.la-ball-fall.la-dark { + color: #333; } + +.la-ball-fall > div { + display: inline-block; + float: none; + background-color: currentColor; + border: 0 solid currentColor; } + +.la-ball-fall { + width: 54px; + height: 18px; } + +.la-ball-fall > div { + width: 10px; + height: 10px; + margin: 4px; + border-radius: 100%; + opacity: 0; + -webkit-animation: ball-fall 1s ease-in-out infinite; + -moz-animation: ball-fall 1s ease-in-out infinite; + -o-animation: ball-fall 1s ease-in-out infinite; + animation: ball-fall 1s ease-in-out infinite; } + +.la-ball-fall > div:nth-child(1) { + -webkit-animation-delay: -200ms; + -moz-animation-delay: -200ms; + -o-animation-delay: -200ms; + animation-delay: -200ms; } + +.la-ball-fall > div:nth-child(2) { + -webkit-animation-delay: -100ms; + -moz-animation-delay: -100ms; + -o-animation-delay: -100ms; + animation-delay: -100ms; } + +.la-ball-fall > div:nth-child(3) { + -webkit-animation-delay: 0ms; + -moz-animation-delay: 0ms; + -o-animation-delay: 0ms; + animation-delay: 0ms; } + +.la-ball-fall.la-sm { + width: 26px; + height: 8px; } + +.la-ball-fall.la-sm > div { + width: 4px; + height: 4px; + margin: 2px; } + +.la-ball-fall.la-2x { + width: 108px; + height: 36px; } + +.la-ball-fall.la-2x > div { + width: 20px; + height: 20px; + margin: 8px; } + +.la-ball-fall.la-3x { + width: 162px; + height: 54px; } + +.la-ball-fall.la-3x > div { + width: 30px; + height: 30px; + margin: 12px; } + +/* + * Animation + */ +@-webkit-keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + transform: translateY(145%); } } + +@-moz-keyframes ball-fall { + 0% { + opacity: 0; + -moz-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -moz-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -moz-transform: translateY(145%); + transform: translateY(145%); } } + +@-o-keyframes ball-fall { + 0% { + opacity: 0; + -o-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -o-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -o-transform: translateY(145%); + transform: translateY(145%); } } + +@keyframes ball-fall { + 0% { + opacity: 0; + -webkit-transform: translateY(-145%); + -moz-transform: translateY(-145%); + -o-transform: translateY(-145%); + transform: translateY(-145%); } + 10% { + opacity: .5; } + 20% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + 80% { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + 90% { + opacity: .5; } + 100% { + opacity: 0; + -webkit-transform: translateY(145%); + -moz-transform: translateY(145%); + -o-transform: translateY(145%); + transform: translateY(145%); } } diff --git a/Penilaian-Esai/public/assets/images/favicon.ico b/Penilaian-Esai/public/assets/images/favicon.ico new file mode 100644 index 0000000..6eeaa2a Binary files /dev/null and b/Penilaian-Esai/public/assets/images/favicon.ico differ diff --git a/Penilaian-Esai/public/assets/images/sort_asc.png b/Penilaian-Esai/public/assets/images/sort_asc.png new file mode 100644 index 0000000..e1ba61a Binary files /dev/null and b/Penilaian-Esai/public/assets/images/sort_asc.png differ diff --git a/Penilaian-Esai/public/assets/images/sort_asc_disabled.png b/Penilaian-Esai/public/assets/images/sort_asc_disabled.png new file mode 100644 index 0000000..c9fdd8a Binary files /dev/null and b/Penilaian-Esai/public/assets/images/sort_asc_disabled.png differ diff --git a/Penilaian-Esai/public/assets/images/sort_both.png b/Penilaian-Esai/public/assets/images/sort_both.png new file mode 100644 index 0000000..af5bc7c Binary files /dev/null and b/Penilaian-Esai/public/assets/images/sort_both.png differ diff --git a/Penilaian-Esai/public/assets/images/sort_desc.png b/Penilaian-Esai/public/assets/images/sort_desc.png new file mode 100644 index 0000000..0e156de Binary files /dev/null and b/Penilaian-Esai/public/assets/images/sort_desc.png differ diff --git a/Penilaian-Esai/public/assets/images/sort_desc_disabled.png b/Penilaian-Esai/public/assets/images/sort_desc_disabled.png new file mode 100644 index 0000000..fb11dfe Binary files /dev/null and b/Penilaian-Esai/public/assets/images/sort_desc_disabled.png differ diff --git a/Penilaian-Esai/public/assets/js/bootstrap.min.js b/Penilaian-Esai/public/assets/js/bootstrap.min.js new file mode 100644 index 0000000..3d72895 --- /dev/null +++ b/Penilaian-Esai/public/assets/js/bootstrap.min.js @@ -0,0 +1,1885 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function (t, e) { + "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? e(exports, require("jquery"), require("popper.js")) : "function" == typeof define && define.amd ? define(["exports", "jquery", "popper.js"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = {}, t.jQuery, t.Popper); +}(this, function (t, e, n) { + "use strict"; + + function i(t) { + return t && "object" == _typeof(t) && "default" in t ? t : { + "default": t + }; + } + + var o = i(e), + a = i(n); + + function s(t, e) { + for (var n = 0; n < e.length; n++) { + var i = e[n]; + i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i); + } + } + + function l(t, e, n) { + return e && s(t.prototype, e), n && s(t, n), t; + } + + function r() { + return r = Object.assign || function (t) { + for (var e = 1; e < arguments.length; e++) { + var n = arguments[e]; + + for (var i in n) { + Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]); + } + } + + return t; + }, r.apply(this, arguments); + } + + function u(t, e) { + return u = Object.setPrototypeOf || function (t, e) { + return t.__proto__ = e, t; + }, u(t, e); + } + + var f = "transitionend"; + var d = { + TRANSITION_END: "bsTransitionEnd", + getUID: function getUID(t) { + do { + t += ~~(1e6 * Math.random()); + } while (document.getElementById(t)); + + return t; + }, + getSelectorFromElement: function getSelectorFromElement(t) { + var e = t.getAttribute("data-target"); + + if (!e || "#" === e) { + var n = t.getAttribute("href"); + e = n && "#" !== n ? n.trim() : ""; + } + + try { + return document.querySelector(e) ? e : null; + } catch (t) { + return null; + } + }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(t) { + if (!t) return 0; + var e = o["default"](t).css("transition-duration"), + n = o["default"](t).css("transition-delay"), + i = parseFloat(e), + a = parseFloat(n); + return i || a ? (e = e.split(",")[0], n = n.split(",")[0], 1e3 * (parseFloat(e) + parseFloat(n))) : 0; + }, + reflow: function reflow(t) { + return t.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(t) { + o["default"](t).trigger(f); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(f); + }, + isElement: function isElement(t) { + return (t[0] || t).nodeType; + }, + typeCheckConfig: function typeCheckConfig(t, e, n) { + for (var i in n) { + if (Object.prototype.hasOwnProperty.call(n, i)) { + var o = n[i], + a = e[i], + s = a && d.isElement(a) ? "element" : null === (l = a) || "undefined" == typeof l ? "" + l : {}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase(); + if (!new RegExp(o).test(s)) throw new Error(t.toUpperCase() + ': Option "' + i + '" provided type "' + s + '" but expected type "' + o + '".'); + } + } + + var l; + }, + findShadowRoot: function findShadowRoot(t) { + if (!document.documentElement.attachShadow) return null; + + if ("function" == typeof t.getRootNode) { + var e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + + return t instanceof ShadowRoot ? t : t.parentNode ? d.findShadowRoot(t.parentNode) : null; + }, + jQueryDetection: function jQueryDetection() { + if ("undefined" == typeof o["default"]) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); + var t = o["default"].fn.jquery.split(" ")[0].split("."); + if (t[0] < 2 && t[1] < 9 || 1 === t[0] && 9 === t[1] && t[2] < 1 || t[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0"); + } + }; + d.jQueryDetection(), o["default"].fn.emulateTransitionEnd = function (t) { + var e = this, + n = !1; + return o["default"](this).one(d.TRANSITION_END, function () { + n = !0; + }), setTimeout(function () { + n || d.triggerTransitionEnd(e); + }, t), this; + }, o["default"].event.special[d.TRANSITION_END] = { + bindType: f, + delegateType: f, + handle: function handle(t) { + if (o["default"](t.target).is(this)) return t.handleObj.handler.apply(this, arguments); + } + }; + + var c = "bs.alert", + h = o["default"].fn.alert, + g = function () { + function t(t) { + this._element = t; + } + + var e = t.prototype; + return e.close = function (t) { + var e = this._element; + t && (e = this._getRootElement(t)), this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e); + }, e.dispose = function () { + o["default"].removeData(this._element, c), this._element = null; + }, e._getRootElement = function (t) { + var e = d.getSelectorFromElement(t), + n = !1; + return e && (n = document.querySelector(e)), n || (n = o["default"](t).closest(".alert")[0]), n; + }, e._triggerCloseEvent = function (t) { + var e = o["default"].Event("close.bs.alert"); + return o["default"](t).trigger(e), e; + }, e._removeElement = function (t) { + var e = this; + + if (o["default"](t).removeClass("show"), o["default"](t).hasClass("fade")) { + var n = d.getTransitionDurationFromElement(t); + o["default"](t).one(d.TRANSITION_END, function (n) { + return e._destroyElement(t, n); + }).emulateTransitionEnd(n); + } else this._destroyElement(t); + }, e._destroyElement = function (t) { + o["default"](t).detach().trigger("closed.bs.alert").remove(); + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this), + i = n.data(c); + i || (i = new t(this), n.data(c, i)), "close" === e && i[e](this); + }); + }, t._handleDismiss = function (t) { + return function (e) { + e && e.preventDefault(), t.close(this); + }; + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }]), t; + }(); + + o["default"](document).on("click.bs.alert.data-api", '[data-dismiss="alert"]', g._handleDismiss(new g())), o["default"].fn.alert = g._jQueryInterface, o["default"].fn.alert.Constructor = g, o["default"].fn.alert.noConflict = function () { + return o["default"].fn.alert = h, g._jQueryInterface; + }; + + var m = "bs.button", + p = o["default"].fn.button, + _ = "active", + v = '[data-toggle^="button"]', + y = 'input:not([type="hidden"])', + b = ".btn", + E = function () { + function t(t) { + this._element = t, this.shouldAvoidTriggerChange = !1; + } + + var e = t.prototype; + return e.toggle = function () { + var t = !0, + e = !0, + n = o["default"](this._element).closest('[data-toggle="buttons"]')[0]; + + if (n) { + var i = this._element.querySelector(y); + + if (i) { + if ("radio" === i.type) if (i.checked && this._element.classList.contains(_)) t = !1;else { + var a = n.querySelector(".active"); + a && o["default"](a).removeClass(_); + } + t && ("checkbox" !== i.type && "radio" !== i.type || (i.checked = !this._element.classList.contains(_)), this.shouldAvoidTriggerChange || o["default"](i).trigger("change")), i.focus(), e = !1; + } + } + + this._element.hasAttribute("disabled") || this._element.classList.contains("disabled") || (e && this._element.setAttribute("aria-pressed", !this._element.classList.contains(_)), t && o["default"](this._element).toggleClass(_)); + }, e.dispose = function () { + o["default"].removeData(this._element, m), this._element = null; + }, t._jQueryInterface = function (e, n) { + return this.each(function () { + var i = o["default"](this), + a = i.data(m); + a || (a = new t(this), i.data(m, a)), a.shouldAvoidTriggerChange = n, "toggle" === e && a[e](); + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }]), t; + }(); + + o["default"](document).on("click.bs.button.data-api", v, function (t) { + var e = t.target, + n = e; + if (o["default"](e).hasClass("btn") || (e = o["default"](e).closest(b)[0]), !e || e.hasAttribute("disabled") || e.classList.contains("disabled")) t.preventDefault();else { + var i = e.querySelector(y); + if (i && (i.hasAttribute("disabled") || i.classList.contains("disabled"))) return void t.preventDefault(); + "INPUT" !== n.tagName && "LABEL" === e.tagName || E._jQueryInterface.call(o["default"](e), "toggle", "INPUT" === n.tagName); + } + }).on("focus.bs.button.data-api blur.bs.button.data-api", v, function (t) { + var e = o["default"](t.target).closest(b)[0]; + o["default"](e).toggleClass("focus", /^focus(in)?$/.test(t.type)); + }), o["default"](window).on("load.bs.button.data-api", function () { + for (var t = [].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')), e = 0, n = t.length; e < n; e++) { + var i = t[e], + o = i.querySelector(y); + o.checked || o.hasAttribute("checked") ? i.classList.add(_) : i.classList.remove(_); + } + + for (var a = 0, s = (t = [].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length; a < s; a++) { + var l = t[a]; + "true" === l.getAttribute("aria-pressed") ? l.classList.add(_) : l.classList.remove(_); + } + }), o["default"].fn.button = E._jQueryInterface, o["default"].fn.button.Constructor = E, o["default"].fn.button.noConflict = function () { + return o["default"].fn.button = p, E._jQueryInterface; + }; + + var T = "carousel", + w = "bs.carousel", + C = o["default"].fn[T], + S = "active", + N = "next", + D = "prev", + A = "slid.bs.carousel", + I = ".active.carousel-item", + k = { + interval: 5e3, + keyboard: !0, + slide: !1, + pause: "hover", + wrap: !0, + touch: !0 + }, + O = { + interval: "(number|boolean)", + keyboard: "boolean", + slide: "(boolean|string)", + pause: "(string|boolean)", + wrap: "boolean", + touch: "boolean" + }, + j = { + TOUCH: "touch", + PEN: "pen" + }, + P = function () { + function t(t, e) { + this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(e), this._element = t, this._indicatorsElement = this._element.querySelector(".carousel-indicators"), this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners(); + } + + var e = t.prototype; + return e.next = function () { + this._isSliding || this._slide(N); + }, e.nextWhenVisible = function () { + var t = o["default"](this._element); + !document.hidden && t.is(":visible") && "hidden" !== t.css("visibility") && this.next(); + }, e.prev = function () { + this._isSliding || this._slide(D); + }, e.pause = function (t) { + t || (this._isPaused = !0), this._element.querySelector(".carousel-item-next, .carousel-item-prev") && (d.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null; + }, e.cycle = function (t) { + t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._updateInterval(), this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval)); + }, e.to = function (t) { + var e = this; + this._activeElement = this._element.querySelector(I); + + var n = this._getItemIndex(this._activeElement); + + if (!(t > this._items.length - 1 || t < 0)) if (this._isSliding) o["default"](this._element).one(A, function () { + return e.to(t); + });else { + if (n === t) return this.pause(), void this.cycle(); + var i = t > n ? N : D; + + this._slide(i, this._items[t]); + } + }, e.dispose = function () { + o["default"](this._element).off(".bs.carousel"), o["default"].removeData(this._element, w), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null; + }, e._getConfig = function (t) { + return t = r({}, k, t), d.typeCheckConfig(T, t, O), t; + }, e._handleSwipe = function () { + var t = Math.abs(this.touchDeltaX); + + if (!(t <= 40)) { + var e = t / this.touchDeltaX; + this.touchDeltaX = 0, e > 0 && this.prev(), e < 0 && this.next(); + } + }, e._addEventListeners = function () { + var t = this; + this._config.keyboard && o["default"](this._element).on("keydown.bs.carousel", function (e) { + return t._keydown(e); + }), "hover" === this._config.pause && o["default"](this._element).on("mouseenter.bs.carousel", function (e) { + return t.pause(e); + }).on("mouseleave.bs.carousel", function (e) { + return t.cycle(e); + }), this._config.touch && this._addTouchEventListeners(); + }, e._addTouchEventListeners = function () { + var t = this; + + if (this._touchSupported) { + var e = function e(_e2) { + t._pointerEvent && j[_e2.originalEvent.pointerType.toUpperCase()] ? t.touchStartX = _e2.originalEvent.clientX : t._pointerEvent || (t.touchStartX = _e2.originalEvent.touches[0].clientX); + }, + n = function n(e) { + t._pointerEvent && j[e.originalEvent.pointerType.toUpperCase()] && (t.touchDeltaX = e.originalEvent.clientX - t.touchStartX), t._handleSwipe(), "hover" === t._config.pause && (t.pause(), t.touchTimeout && clearTimeout(t.touchTimeout), t.touchTimeout = setTimeout(function (e) { + return t.cycle(e); + }, 500 + t._config.interval)); + }; + + o["default"](this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel", function (t) { + return t.preventDefault(); + }), this._pointerEvent ? (o["default"](this._element).on("pointerdown.bs.carousel", function (t) { + return e(t); + }), o["default"](this._element).on("pointerup.bs.carousel", function (t) { + return n(t); + }), this._element.classList.add("pointer-event")) : (o["default"](this._element).on("touchstart.bs.carousel", function (t) { + return e(t); + }), o["default"](this._element).on("touchmove.bs.carousel", function (e) { + return function (e) { + t.touchDeltaX = e.originalEvent.touches && e.originalEvent.touches.length > 1 ? 0 : e.originalEvent.touches[0].clientX - t.touchStartX; + }(e); + }), o["default"](this._element).on("touchend.bs.carousel", function (t) { + return n(t); + })); + } + }, e._keydown = function (t) { + if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) { + case 37: + t.preventDefault(), this.prev(); + break; + + case 39: + t.preventDefault(), this.next(); + } + }, e._getItemIndex = function (t) { + return this._items = t && t.parentNode ? [].slice.call(t.parentNode.querySelectorAll(".carousel-item")) : [], this._items.indexOf(t); + }, e._getItemByDirection = function (t, e) { + var n = t === N, + i = t === D, + o = this._getItemIndex(e), + a = this._items.length - 1; + + if ((i && 0 === o || n && o === a) && !this._config.wrap) return e; + var s = (o + (t === D ? -1 : 1)) % this._items.length; + return -1 === s ? this._items[this._items.length - 1] : this._items[s]; + }, e._triggerSlideEvent = function (t, e) { + var n = this._getItemIndex(t), + i = this._getItemIndex(this._element.querySelector(I)), + a = o["default"].Event("slide.bs.carousel", { + relatedTarget: t, + direction: e, + from: i, + to: n + }); + + return o["default"](this._element).trigger(a), a; + }, e._setActiveIndicatorElement = function (t) { + if (this._indicatorsElement) { + var e = [].slice.call(this._indicatorsElement.querySelectorAll(".active")); + o["default"](e).removeClass(S); + + var n = this._indicatorsElement.children[this._getItemIndex(t)]; + + n && o["default"](n).addClass(S); + } + }, e._updateInterval = function () { + var t = this._activeElement || this._element.querySelector(I); + + if (t) { + var e = parseInt(t.getAttribute("data-interval"), 10); + e ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = e) : this._config.interval = this._config.defaultInterval || this._config.interval; + } + }, e._slide = function (t, e) { + var n, + i, + a, + s = this, + l = this._element.querySelector(I), + r = this._getItemIndex(l), + u = e || l && this._getItemByDirection(t, l), + f = this._getItemIndex(u), + c = Boolean(this._interval); + + if (t === N ? (n = "carousel-item-left", i = "carousel-item-next", a = "left") : (n = "carousel-item-right", i = "carousel-item-prev", a = "right"), u && o["default"](u).hasClass(S)) this._isSliding = !1;else if (!this._triggerSlideEvent(u, a).isDefaultPrevented() && l && u) { + this._isSliding = !0, c && this.pause(), this._setActiveIndicatorElement(u), this._activeElement = u; + var h = o["default"].Event(A, { + relatedTarget: u, + direction: a, + from: r, + to: f + }); + + if (o["default"](this._element).hasClass("slide")) { + o["default"](u).addClass(i), d.reflow(u), o["default"](l).addClass(n), o["default"](u).addClass(n); + var g = d.getTransitionDurationFromElement(l); + o["default"](l).one(d.TRANSITION_END, function () { + o["default"](u).removeClass(n + " " + i).addClass(S), o["default"](l).removeClass("active " + i + " " + n), s._isSliding = !1, setTimeout(function () { + return o["default"](s._element).trigger(h); + }, 0); + }).emulateTransitionEnd(g); + } else o["default"](l).removeClass(S), o["default"](u).addClass(S), this._isSliding = !1, o["default"](this._element).trigger(h); + + c && this.cycle(); + } + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this).data(w), + i = r({}, k, o["default"](this).data()); + "object" == _typeof(e) && (i = r({}, i, e)); + var a = "string" == typeof e ? e : i.slide; + if (n || (n = new t(this, i), o["default"](this).data(w, n)), "number" == typeof e) n.to(e);else if ("string" == typeof a) { + if ("undefined" == typeof n[a]) throw new TypeError('No method named "' + a + '"'); + n[a](); + } else i.interval && i.ride && (n.pause(), n.cycle()); + }); + }, t._dataApiClickHandler = function (e) { + var n = d.getSelectorFromElement(this); + + if (n) { + var i = o["default"](n)[0]; + + if (i && o["default"](i).hasClass("carousel")) { + var a = r({}, o["default"](i).data(), o["default"](this).data()), + s = this.getAttribute("data-slide-to"); + s && (a.interval = !1), t._jQueryInterface.call(o["default"](i), a), s && o["default"](i).data(w).to(s), e.preventDefault(); + } + } + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return k; + } + }]), t; + }(); + + o["default"](document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", P._dataApiClickHandler), o["default"](window).on("load.bs.carousel.data-api", function () { + for (var t = [].slice.call(document.querySelectorAll('[data-ride="carousel"]')), e = 0, n = t.length; e < n; e++) { + var i = o["default"](t[e]); + + P._jQueryInterface.call(i, i.data()); + } + }), o["default"].fn[T] = P._jQueryInterface, o["default"].fn[T].Constructor = P, o["default"].fn[T].noConflict = function () { + return o["default"].fn[T] = C, P._jQueryInterface; + }; + + var L = "collapse", + R = "bs.collapse", + x = o["default"].fn[L], + q = "show", + F = "collapse", + Q = "collapsing", + B = "collapsed", + H = "width", + U = '[data-toggle="collapse"]', + M = { + toggle: !0, + parent: "" + }, + W = { + toggle: "boolean", + parent: "(string|element)" + }, + V = function () { + function t(t, e) { + this._isTransitioning = !1, this._element = t, this._config = this._getConfig(e), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + t.id + '"],[data-toggle="collapse"][data-target="#' + t.id + '"]')); + + for (var n = [].slice.call(document.querySelectorAll(U)), i = 0, o = n.length; i < o; i++) { + var a = n[i], + s = d.getSelectorFromElement(a), + l = [].slice.call(document.querySelectorAll(s)).filter(function (e) { + return e === t; + }); + null !== s && l.length > 0 && (this._selector = s, this._triggerArray.push(a)); + } + + this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle(); + } + + var e = t.prototype; + return e.toggle = function () { + o["default"](this._element).hasClass(q) ? this.hide() : this.show(); + }, e.show = function () { + var e, + n, + i = this; + + if (!(this._isTransitioning || o["default"](this._element).hasClass(q) || (this._parent && 0 === (e = [].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter(function (t) { + return "string" == typeof i._config.parent ? t.getAttribute("data-parent") === i._config.parent : t.classList.contains(F); + })).length && (e = null), e && (n = o["default"](e).not(this._selector).data(R)) && n._isTransitioning))) { + var a = o["default"].Event("show.bs.collapse"); + + if (o["default"](this._element).trigger(a), !a.isDefaultPrevented()) { + e && (t._jQueryInterface.call(o["default"](e).not(this._selector), "hide"), n || o["default"](e).data(R, null)); + + var s = this._getDimension(); + + o["default"](this._element).removeClass(F).addClass(Q), this._element.style[s] = 0, this._triggerArray.length && o["default"](this._triggerArray).removeClass(B).attr("aria-expanded", !0), this.setTransitioning(!0); + var l = "scroll" + (s[0].toUpperCase() + s.slice(1)), + r = d.getTransitionDurationFromElement(this._element); + o["default"](this._element).one(d.TRANSITION_END, function () { + o["default"](i._element).removeClass(Q).addClass("collapse show"), i._element.style[s] = "", i.setTransitioning(!1), o["default"](i._element).trigger("shown.bs.collapse"); + }).emulateTransitionEnd(r), this._element.style[s] = this._element[l] + "px"; + } + } + }, e.hide = function () { + var t = this; + + if (!this._isTransitioning && o["default"](this._element).hasClass(q)) { + var e = o["default"].Event("hide.bs.collapse"); + + if (o["default"](this._element).trigger(e), !e.isDefaultPrevented()) { + var n = this._getDimension(); + + this._element.style[n] = this._element.getBoundingClientRect()[n] + "px", d.reflow(this._element), o["default"](this._element).addClass(Q).removeClass("collapse show"); + var i = this._triggerArray.length; + if (i > 0) for (var a = 0; a < i; a++) { + var s = this._triggerArray[a], + l = d.getSelectorFromElement(s); + null !== l && (o["default"]([].slice.call(document.querySelectorAll(l))).hasClass(q) || o["default"](s).addClass(B).attr("aria-expanded", !1)); + } + this.setTransitioning(!0), this._element.style[n] = ""; + var r = d.getTransitionDurationFromElement(this._element); + o["default"](this._element).one(d.TRANSITION_END, function () { + t.setTransitioning(!1), o["default"](t._element).removeClass(Q).addClass(F).trigger("hidden.bs.collapse"); + }).emulateTransitionEnd(r); + } + } + }, e.setTransitioning = function (t) { + this._isTransitioning = t; + }, e.dispose = function () { + o["default"].removeData(this._element, R), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null; + }, e._getConfig = function (t) { + return (t = r({}, M, t)).toggle = Boolean(t.toggle), d.typeCheckConfig(L, t, W), t; + }, e._getDimension = function () { + return o["default"](this._element).hasClass(H) ? H : "height"; + }, e._getParent = function () { + var e, + n = this; + d.isElement(this._config.parent) ? (e = this._config.parent, "undefined" != typeof this._config.parent.jquery && (e = this._config.parent[0])) : e = document.querySelector(this._config.parent); + var i = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]', + a = [].slice.call(e.querySelectorAll(i)); + return o["default"](a).each(function (e, i) { + n._addAriaAndCollapsedClass(t._getTargetFromElement(i), [i]); + }), e; + }, e._addAriaAndCollapsedClass = function (t, e) { + var n = o["default"](t).hasClass(q); + e.length && o["default"](e).toggleClass(B, !n).attr("aria-expanded", n); + }, t._getTargetFromElement = function (t) { + var e = d.getSelectorFromElement(t); + return e ? document.querySelector(e) : null; + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this), + i = n.data(R), + a = r({}, M, n.data(), "object" == _typeof(e) && e ? e : {}); + + if (!i && a.toggle && "string" == typeof e && /show|hide/.test(e) && (a.toggle = !1), i || (i = new t(this, a), n.data(R, i)), "string" == typeof e) { + if ("undefined" == typeof i[e]) throw new TypeError('No method named "' + e + '"'); + i[e](); + } + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return M; + } + }]), t; + }(); + + o["default"](document).on("click.bs.collapse.data-api", U, function (t) { + "A" === t.currentTarget.tagName && t.preventDefault(); + var e = o["default"](this), + n = d.getSelectorFromElement(this), + i = [].slice.call(document.querySelectorAll(n)); + o["default"](i).each(function () { + var t = o["default"](this), + n = t.data(R) ? "toggle" : e.data(); + + V._jQueryInterface.call(t, n); + }); + }), o["default"].fn[L] = V._jQueryInterface, o["default"].fn[L].Constructor = V, o["default"].fn[L].noConflict = function () { + return o["default"].fn[L] = x, V._jQueryInterface; + }; + + var z = "dropdown", + K = "bs.dropdown", + X = o["default"].fn[z], + Y = new RegExp("38|40|27"), + $ = "disabled", + J = "show", + G = "dropdown-menu-right", + Z = "hide.bs.dropdown", + tt = "hidden.bs.dropdown", + et = "click.bs.dropdown.data-api", + nt = "keydown.bs.dropdown.data-api", + it = '[data-toggle="dropdown"]', + ot = ".dropdown-menu", + at = { + offset: 0, + flip: !0, + boundary: "scrollParent", + reference: "toggle", + display: "dynamic", + popperConfig: null + }, + st = { + offset: "(number|string|function)", + flip: "boolean", + boundary: "(string|element)", + reference: "(string|element)", + display: "string", + popperConfig: "(null|object)" + }, + lt = function () { + function t(t, e) { + this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners(); + } + + var e = t.prototype; + return e.toggle = function () { + if (!this._element.disabled && !o["default"](this._element).hasClass($)) { + var e = o["default"](this._menu).hasClass(J); + t._clearMenus(), e || this.show(!0); + } + }, e.show = function (e) { + if (void 0 === e && (e = !1), !(this._element.disabled || o["default"](this._element).hasClass($) || o["default"](this._menu).hasClass(J))) { + var n = { + relatedTarget: this._element + }, + i = o["default"].Event("show.bs.dropdown", n), + s = t._getParentFromElement(this._element); + + if (o["default"](s).trigger(i), !i.isDefaultPrevented()) { + if (!this._inNavbar && e) { + if ("undefined" == typeof a["default"]) throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)"); + var l = this._element; + "parent" === this._config.reference ? l = s : d.isElement(this._config.reference) && (l = this._config.reference, "undefined" != typeof this._config.reference.jquery && (l = this._config.reference[0])), "scrollParent" !== this._config.boundary && o["default"](s).addClass("position-static"), this._popper = new a["default"](l, this._menu, this._getPopperConfig()); + } + + "ontouchstart" in document.documentElement && 0 === o["default"](s).closest(".navbar-nav").length && o["default"](document.body).children().on("mouseover", null, o["default"].noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), o["default"](this._menu).toggleClass(J), o["default"](s).toggleClass(J).trigger(o["default"].Event("shown.bs.dropdown", n)); + } + } + }, e.hide = function () { + if (!this._element.disabled && !o["default"](this._element).hasClass($) && o["default"](this._menu).hasClass(J)) { + var e = { + relatedTarget: this._element + }, + n = o["default"].Event(Z, e), + i = t._getParentFromElement(this._element); + + o["default"](i).trigger(n), n.isDefaultPrevented() || (this._popper && this._popper.destroy(), o["default"](this._menu).toggleClass(J), o["default"](i).toggleClass(J).trigger(o["default"].Event(tt, e))); + } + }, e.dispose = function () { + o["default"].removeData(this._element, K), o["default"](this._element).off(".bs.dropdown"), this._element = null, this._menu = null, null !== this._popper && (this._popper.destroy(), this._popper = null); + }, e.update = function () { + this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate(); + }, e._addEventListeners = function () { + var t = this; + o["default"](this._element).on("click.bs.dropdown", function (e) { + e.preventDefault(), e.stopPropagation(), t.toggle(); + }); + }, e._getConfig = function (t) { + return t = r({}, this.constructor.Default, o["default"](this._element).data(), t), d.typeCheckConfig(z, t, this.constructor.DefaultType), t; + }, e._getMenuElement = function () { + if (!this._menu) { + var e = t._getParentFromElement(this._element); + + e && (this._menu = e.querySelector(ot)); + } + + return this._menu; + }, e._getPlacement = function () { + var t = o["default"](this._element.parentNode), + e = "bottom-start"; + return t.hasClass("dropup") ? e = o["default"](this._menu).hasClass(G) ? "top-end" : "top-start" : t.hasClass("dropright") ? e = "right-start" : t.hasClass("dropleft") ? e = "left-start" : o["default"](this._menu).hasClass(G) && (e = "bottom-end"), e; + }, e._detectNavbar = function () { + return o["default"](this._element).closest(".navbar").length > 0; + }, e._getOffset = function () { + var t = this, + e = {}; + return "function" == typeof this._config.offset ? e.fn = function (e) { + return e.offsets = r({}, e.offsets, t._config.offset(e.offsets, t._element)), e; + } : e.offset = this._config.offset, e; + }, e._getPopperConfig = function () { + var t = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } + }; + return "static" === this._config.display && (t.modifiers.applyStyle = { + enabled: !1 + }), r({}, t, this._config.popperConfig); + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this).data(K); + + if (n || (n = new t(this, "object" == _typeof(e) ? e : null), o["default"](this).data(K, n)), "string" == typeof e) { + if ("undefined" == typeof n[e]) throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }, t._clearMenus = function (e) { + if (!e || 3 !== e.which && ("keyup" !== e.type || 9 === e.which)) for (var n = [].slice.call(document.querySelectorAll(it)), i = 0, a = n.length; i < a; i++) { + var s = t._getParentFromElement(n[i]), + l = o["default"](n[i]).data(K), + r = { + relatedTarget: n[i] + }; + + if (e && "click" === e.type && (r.clickEvent = e), l) { + var u = l._menu; + + if (o["default"](s).hasClass(J) && !(e && ("click" === e.type && /input|textarea/i.test(e.target.tagName) || "keyup" === e.type && 9 === e.which) && o["default"].contains(s, e.target))) { + var f = o["default"].Event(Z, r); + o["default"](s).trigger(f), f.isDefaultPrevented() || ("ontouchstart" in document.documentElement && o["default"](document.body).children().off("mouseover", null, o["default"].noop), n[i].setAttribute("aria-expanded", "false"), l._popper && l._popper.destroy(), o["default"](u).removeClass(J), o["default"](s).removeClass(J).trigger(o["default"].Event(tt, r))); + } + } + } + }, t._getParentFromElement = function (t) { + var e, + n = d.getSelectorFromElement(t); + return n && (e = document.querySelector(n)), e || t.parentNode; + }, t._dataApiKeydownHandler = function (e) { + if (!(/input|textarea/i.test(e.target.tagName) ? 32 === e.which || 27 !== e.which && (40 !== e.which && 38 !== e.which || o["default"](e.target).closest(ot).length) : !Y.test(e.which)) && !this.disabled && !o["default"](this).hasClass($)) { + var n = t._getParentFromElement(this), + i = o["default"](n).hasClass(J); + + if (i || 27 !== e.which) { + if (e.preventDefault(), e.stopPropagation(), !i || 27 === e.which || 32 === e.which) return 27 === e.which && o["default"](n.querySelector(it)).trigger("focus"), void o["default"](this).trigger("click"); + var a = [].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter(function (t) { + return o["default"](t).is(":visible"); + }); + + if (0 !== a.length) { + var s = a.indexOf(e.target); + 38 === e.which && s > 0 && s--, 40 === e.which && s < a.length - 1 && s++, s < 0 && (s = 0), a[s].focus(); + } + } + } + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return at; + } + }, { + key: "DefaultType", + get: function get() { + return st; + } + }]), t; + }(); + + o["default"](document).on(nt, it, lt._dataApiKeydownHandler).on(nt, ot, lt._dataApiKeydownHandler).on(et + " keyup.bs.dropdown.data-api", lt._clearMenus).on(et, it, function (t) { + t.preventDefault(), t.stopPropagation(), lt._jQueryInterface.call(o["default"](this), "toggle"); + }).on(et, ".dropdown form", function (t) { + t.stopPropagation(); + }), o["default"].fn[z] = lt._jQueryInterface, o["default"].fn[z].Constructor = lt, o["default"].fn[z].noConflict = function () { + return o["default"].fn[z] = X, lt._jQueryInterface; + }; + + var rt = "bs.modal", + ut = o["default"].fn.modal, + ft = "modal-open", + dt = "fade", + ct = "show", + ht = "modal-static", + gt = "hidden.bs.modal", + mt = "show.bs.modal", + pt = "focusin.bs.modal", + _t = "resize.bs.modal", + vt = "click.dismiss.bs.modal", + yt = "keydown.dismiss.bs.modal", + bt = "mousedown.dismiss.bs.modal", + Et = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", + Tt = { + backdrop: !0, + keyboard: !0, + focus: !0, + show: !0 + }, + wt = { + backdrop: "(boolean|string)", + keyboard: "boolean", + focus: "boolean", + show: "boolean" + }, + Ct = function () { + function t(t, e) { + this._config = this._getConfig(e), this._element = t, this._dialog = t.querySelector(".modal-dialog"), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0; + } + + var e = t.prototype; + return e.toggle = function (t) { + return this._isShown ? this.hide() : this.show(t); + }, e.show = function (t) { + var e = this; + + if (!this._isShown && !this._isTransitioning) { + var n = o["default"].Event(mt, { + relatedTarget: t + }); + o["default"](this._element).trigger(n), n.isDefaultPrevented() || (this._isShown = !0, o["default"](this._element).hasClass(dt) && (this._isTransitioning = !0), this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), o["default"](this._element).on(vt, '[data-dismiss="modal"]', function (t) { + return e.hide(t); + }), o["default"](this._dialog).on(bt, function () { + o["default"](e._element).one("mouseup.dismiss.bs.modal", function (t) { + o["default"](t.target).is(e._element) && (e._ignoreBackdropClick = !0); + }); + }), this._showBackdrop(function () { + return e._showElement(t); + })); + } + }, e.hide = function (t) { + var e = this; + + if (t && t.preventDefault(), this._isShown && !this._isTransitioning) { + var n = o["default"].Event("hide.bs.modal"); + + if (o["default"](this._element).trigger(n), this._isShown && !n.isDefaultPrevented()) { + this._isShown = !1; + var i = o["default"](this._element).hasClass(dt); + + if (i && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), o["default"](document).off(pt), o["default"](this._element).removeClass(ct), o["default"](this._element).off(vt), o["default"](this._dialog).off(bt), i) { + var a = d.getTransitionDurationFromElement(this._element); + o["default"](this._element).one(d.TRANSITION_END, function (t) { + return e._hideModal(t); + }).emulateTransitionEnd(a); + } else this._hideModal(); + } + } + }, e.dispose = function () { + [window, this._element, this._dialog].forEach(function (t) { + return o["default"](t).off(".bs.modal"); + }), o["default"](document).off(pt), o["default"].removeData(this._element, rt), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null; + }, e.handleUpdate = function () { + this._adjustDialog(); + }, e._getConfig = function (t) { + return t = r({}, Tt, t), d.typeCheckConfig("modal", t, wt), t; + }, e._triggerBackdropTransition = function () { + var t = this, + e = o["default"].Event("hidePrevented.bs.modal"); + + if (o["default"](this._element).trigger(e), !e.isDefaultPrevented()) { + var n = this._element.scrollHeight > document.documentElement.clientHeight; + n || (this._element.style.overflowY = "hidden"), this._element.classList.add(ht); + var i = d.getTransitionDurationFromElement(this._dialog); + o["default"](this._element).off(d.TRANSITION_END), o["default"](this._element).one(d.TRANSITION_END, function () { + t._element.classList.remove(ht), n || o["default"](t._element).one(d.TRANSITION_END, function () { + t._element.style.overflowY = ""; + }).emulateTransitionEnd(t._element, i); + }).emulateTransitionEnd(i), this._element.focus(); + } + }, e._showElement = function (t) { + var e = this, + n = o["default"](this._element).hasClass(dt), + i = this._dialog ? this._dialog.querySelector(".modal-body") : null; + this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), o["default"](this._dialog).hasClass("modal-dialog-scrollable") && i ? i.scrollTop = 0 : this._element.scrollTop = 0, n && d.reflow(this._element), o["default"](this._element).addClass(ct), this._config.focus && this._enforceFocus(); + + var a = o["default"].Event("shown.bs.modal", { + relatedTarget: t + }), + s = function s() { + e._config.focus && e._element.focus(), e._isTransitioning = !1, o["default"](e._element).trigger(a); + }; + + if (n) { + var l = d.getTransitionDurationFromElement(this._dialog); + o["default"](this._dialog).one(d.TRANSITION_END, s).emulateTransitionEnd(l); + } else s(); + }, e._enforceFocus = function () { + var t = this; + o["default"](document).off(pt).on(pt, function (e) { + document !== e.target && t._element !== e.target && 0 === o["default"](t._element).has(e.target).length && t._element.focus(); + }); + }, e._setEscapeEvent = function () { + var t = this; + this._isShown ? o["default"](this._element).on(yt, function (e) { + t._config.keyboard && 27 === e.which ? (e.preventDefault(), t.hide()) : t._config.keyboard || 27 !== e.which || t._triggerBackdropTransition(); + }) : this._isShown || o["default"](this._element).off(yt); + }, e._setResizeEvent = function () { + var t = this; + this._isShown ? o["default"](window).on(_t, function (e) { + return t.handleUpdate(e); + }) : o["default"](window).off(_t); + }, e._hideModal = function () { + var t = this; + this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._isTransitioning = !1, this._showBackdrop(function () { + o["default"](document.body).removeClass(ft), t._resetAdjustments(), t._resetScrollbar(), o["default"](t._element).trigger(gt); + }); + }, e._removeBackdrop = function () { + this._backdrop && (o["default"](this._backdrop).remove(), this._backdrop = null); + }, e._showBackdrop = function (t) { + var e = this, + n = o["default"](this._element).hasClass(dt) ? dt : ""; + + if (this._isShown && this._config.backdrop) { + if (this._backdrop = document.createElement("div"), this._backdrop.className = "modal-backdrop", n && this._backdrop.classList.add(n), o["default"](this._backdrop).appendTo(document.body), o["default"](this._element).on(vt, function (t) { + e._ignoreBackdropClick ? e._ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" === e._config.backdrop ? e._triggerBackdropTransition() : e.hide()); + }), n && d.reflow(this._backdrop), o["default"](this._backdrop).addClass(ct), !t) return; + if (!n) return void t(); + var i = d.getTransitionDurationFromElement(this._backdrop); + o["default"](this._backdrop).one(d.TRANSITION_END, t).emulateTransitionEnd(i); + } else if (!this._isShown && this._backdrop) { + o["default"](this._backdrop).removeClass(ct); + + var a = function a() { + e._removeBackdrop(), t && t(); + }; + + if (o["default"](this._element).hasClass(dt)) { + var s = d.getTransitionDurationFromElement(this._backdrop); + o["default"](this._backdrop).one(d.TRANSITION_END, a).emulateTransitionEnd(s); + } else a(); + } else t && t(); + }, e._adjustDialog = function () { + var t = this._element.scrollHeight > document.documentElement.clientHeight; + !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px"); + }, e._resetAdjustments = function () { + this._element.style.paddingLeft = "", this._element.style.paddingRight = ""; + }, e._checkScrollbar = function () { + var t = document.body.getBoundingClientRect(); + this._isBodyOverflowing = Math.round(t.left + t.right) < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth(); + }, e._setScrollbar = function () { + var t = this; + + if (this._isBodyOverflowing) { + var e = [].slice.call(document.querySelectorAll(Et)), + n = [].slice.call(document.querySelectorAll(".sticky-top")); + o["default"](e).each(function (e, n) { + var i = n.style.paddingRight, + a = o["default"](n).css("padding-right"); + o["default"](n).data("padding-right", i).css("padding-right", parseFloat(a) + t._scrollbarWidth + "px"); + }), o["default"](n).each(function (e, n) { + var i = n.style.marginRight, + a = o["default"](n).css("margin-right"); + o["default"](n).data("margin-right", i).css("margin-right", parseFloat(a) - t._scrollbarWidth + "px"); + }); + var i = document.body.style.paddingRight, + a = o["default"](document.body).css("padding-right"); + o["default"](document.body).data("padding-right", i).css("padding-right", parseFloat(a) + this._scrollbarWidth + "px"); + } + + o["default"](document.body).addClass(ft); + }, e._resetScrollbar = function () { + var t = [].slice.call(document.querySelectorAll(Et)); + o["default"](t).each(function (t, e) { + var n = o["default"](e).data("padding-right"); + o["default"](e).removeData("padding-right"), e.style.paddingRight = n || ""; + }); + var e = [].slice.call(document.querySelectorAll(".sticky-top")); + o["default"](e).each(function (t, e) { + var n = o["default"](e).data("margin-right"); + "undefined" != typeof n && o["default"](e).css("margin-right", n).removeData("margin-right"); + }); + var n = o["default"](document.body).data("padding-right"); + o["default"](document.body).removeData("padding-right"), document.body.style.paddingRight = n || ""; + }, e._getScrollbarWidth = function () { + var t = document.createElement("div"); + t.className = "modal-scrollbar-measure", document.body.appendChild(t); + var e = t.getBoundingClientRect().width - t.clientWidth; + return document.body.removeChild(t), e; + }, t._jQueryInterface = function (e, n) { + return this.each(function () { + var i = o["default"](this).data(rt), + a = r({}, Tt, o["default"](this).data(), "object" == _typeof(e) && e ? e : {}); + + if (i || (i = new t(this, a), o["default"](this).data(rt, i)), "string" == typeof e) { + if ("undefined" == typeof i[e]) throw new TypeError('No method named "' + e + '"'); + i[e](n); + } else a.show && i.show(n); + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return Tt; + } + }]), t; + }(); + + o["default"](document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (t) { + var e, + n = this, + i = d.getSelectorFromElement(this); + i && (e = document.querySelector(i)); + var a = o["default"](e).data(rt) ? "toggle" : r({}, o["default"](e).data(), o["default"](this).data()); + "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault(); + var s = o["default"](e).one(mt, function (t) { + t.isDefaultPrevented() || s.one(gt, function () { + o["default"](n).is(":visible") && n.focus(); + }); + }); + + Ct._jQueryInterface.call(o["default"](e), a, this); + }), o["default"].fn.modal = Ct._jQueryInterface, o["default"].fn.modal.Constructor = Ct, o["default"].fn.modal.noConflict = function () { + return o["default"].fn.modal = ut, Ct._jQueryInterface; + }; + var St = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], + Nt = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i, + Dt = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; + + function At(t, e, n) { + if (0 === t.length) return t; + if (n && "function" == typeof n) return n(t); + + for (var i = new window.DOMParser().parseFromString(t, "text/html"), o = Object.keys(e), a = [].slice.call(i.body.querySelectorAll("*")), s = function s(t, n) { + var i = a[t], + s = i.nodeName.toLowerCase(); + if (-1 === o.indexOf(i.nodeName.toLowerCase())) return i.parentNode.removeChild(i), "continue"; + var l = [].slice.call(i.attributes), + r = [].concat(e["*"] || [], e[s] || []); + l.forEach(function (t) { + (function (t, e) { + var n = t.nodeName.toLowerCase(); + if (-1 !== e.indexOf(n)) return -1 === St.indexOf(n) || Boolean(Nt.test(t.nodeValue) || Dt.test(t.nodeValue)); + + for (var i = e.filter(function (t) { + return t instanceof RegExp; + }), o = 0, a = i.length; o < a; o++) { + if (i[o].test(n)) return !0; + } + + return !1; + })(t, r) || i.removeAttribute(t.nodeName); + }); + }, l = 0, r = a.length; l < r; l++) { + s(l); + } + + return i.body.innerHTML; + } + + var It = "tooltip", + kt = "bs.tooltip", + Ot = o["default"].fn.tooltip, + jt = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), + Pt = ["sanitize", "whiteList", "sanitizeFn"], + Lt = "fade", + Rt = "show", + xt = "show", + qt = "out", + Ft = "hover", + Qt = "focus", + Bt = { + AUTO: "auto", + TOP: "top", + RIGHT: "right", + BOTTOM: "bottom", + LEFT: "left" + }, + Ht = { + animation: !0, + template: '', + trigger: "hover focus", + title: "", + delay: 0, + html: !1, + selector: !1, + placement: "top", + offset: 0, + container: !1, + fallbackPlacement: "flip", + boundary: "scrollParent", + customClass: "", + sanitize: !0, + sanitizeFn: null, + whiteList: { + "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], + a: ["target", "href", "title", "rel"], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ["src", "srcset", "alt", "title", "width", "height"], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + popperConfig: null + }, + Ut = { + animation: "boolean", + template: "string", + title: "(string|element|function)", + trigger: "string", + delay: "(number|object)", + html: "boolean", + selector: "(string|boolean)", + placement: "(string|function)", + offset: "(number|string|function)", + container: "(string|element|boolean)", + fallbackPlacement: "(string|array)", + boundary: "(string|element)", + customClass: "(string|function)", + sanitize: "boolean", + sanitizeFn: "(null|function)", + whiteList: "object", + popperConfig: "(null|object)" + }, + Mt = { + HIDE: "hide.bs.tooltip", + HIDDEN: "hidden.bs.tooltip", + SHOW: "show.bs.tooltip", + SHOWN: "shown.bs.tooltip", + INSERTED: "inserted.bs.tooltip", + CLICK: "click.bs.tooltip", + FOCUSIN: "focusin.bs.tooltip", + FOCUSOUT: "focusout.bs.tooltip", + MOUSEENTER: "mouseenter.bs.tooltip", + MOUSELEAVE: "mouseleave.bs.tooltip" + }, + Wt = function () { + function t(t, e) { + if ("undefined" == typeof a["default"]) throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)"); + this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners(); + } + + var e = t.prototype; + return e.enable = function () { + this._isEnabled = !0; + }, e.disable = function () { + this._isEnabled = !1; + }, e.toggleEnabled = function () { + this._isEnabled = !this._isEnabled; + }, e.toggle = function (t) { + if (this._isEnabled) if (t) { + var e = this.constructor.DATA_KEY, + n = o["default"](t.currentTarget).data(e); + n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), o["default"](t.currentTarget).data(e, n)), n._activeTrigger.click = !n._activeTrigger.click, n._isWithActiveTrigger() ? n._enter(null, n) : n._leave(null, n); + } else { + if (o["default"](this.getTipElement()).hasClass(Rt)) return void this._leave(null, this); + + this._enter(null, this); + } + }, e.dispose = function () { + clearTimeout(this._timeout), o["default"].removeData(this.element, this.constructor.DATA_KEY), o["default"](this.element).off(this.constructor.EVENT_KEY), o["default"](this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && o["default"](this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null; + }, e.show = function () { + var t = this; + if ("none" === o["default"](this.element).css("display")) throw new Error("Please use show on visible elements"); + var e = o["default"].Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + o["default"](this.element).trigger(e); + var n = d.findShadowRoot(this.element), + i = o["default"].contains(null !== n ? n : this.element.ownerDocument.documentElement, this.element); + if (e.isDefaultPrevented() || !i) return; + var s = this.getTipElement(), + l = d.getUID(this.constructor.NAME); + s.setAttribute("id", l), this.element.setAttribute("aria-describedby", l), this.setContent(), this.config.animation && o["default"](s).addClass(Lt); + + var r = "function" == typeof this.config.placement ? this.config.placement.call(this, s, this.element) : this.config.placement, + u = this._getAttachment(r); + + this.addAttachmentClass(u); + + var f = this._getContainer(); + + o["default"](s).data(this.constructor.DATA_KEY, this), o["default"].contains(this.element.ownerDocument.documentElement, this.tip) || o["default"](s).appendTo(f), o["default"](this.element).trigger(this.constructor.Event.INSERTED), this._popper = new a["default"](this.element, s, this._getPopperConfig(u)), o["default"](s).addClass(Rt), o["default"](s).addClass(this.config.customClass), "ontouchstart" in document.documentElement && o["default"](document.body).children().on("mouseover", null, o["default"].noop); + + var c = function c() { + t.config.animation && t._fixTransition(); + var e = t._hoverState; + t._hoverState = null, o["default"](t.element).trigger(t.constructor.Event.SHOWN), e === qt && t._leave(null, t); + }; + + if (o["default"](this.tip).hasClass(Lt)) { + var h = d.getTransitionDurationFromElement(this.tip); + o["default"](this.tip).one(d.TRANSITION_END, c).emulateTransitionEnd(h); + } else c(); + } + }, e.hide = function (t) { + var e = this, + n = this.getTipElement(), + i = o["default"].Event(this.constructor.Event.HIDE), + a = function a() { + e._hoverState !== xt && n.parentNode && n.parentNode.removeChild(n), e._cleanTipClass(), e.element.removeAttribute("aria-describedby"), o["default"](e.element).trigger(e.constructor.Event.HIDDEN), null !== e._popper && e._popper.destroy(), t && t(); + }; + + if (o["default"](this.element).trigger(i), !i.isDefaultPrevented()) { + if (o["default"](n).removeClass(Rt), "ontouchstart" in document.documentElement && o["default"](document.body).children().off("mouseover", null, o["default"].noop), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1, o["default"](this.tip).hasClass(Lt)) { + var s = d.getTransitionDurationFromElement(n); + o["default"](n).one(d.TRANSITION_END, a).emulateTransitionEnd(s); + } else a(); + + this._hoverState = ""; + } + }, e.update = function () { + null !== this._popper && this._popper.scheduleUpdate(); + }, e.isWithContent = function () { + return Boolean(this.getTitle()); + }, e.addAttachmentClass = function (t) { + o["default"](this.getTipElement()).addClass("bs-tooltip-" + t); + }, e.getTipElement = function () { + return this.tip = this.tip || o["default"](this.config.template)[0], this.tip; + }, e.setContent = function () { + var t = this.getTipElement(); + this.setElementContent(o["default"](t.querySelectorAll(".tooltip-inner")), this.getTitle()), o["default"](t).removeClass("fade show"); + }, e.setElementContent = function (t, e) { + "object" != _typeof(e) || !e.nodeType && !e.jquery ? this.config.html ? (this.config.sanitize && (e = At(e, this.config.whiteList, this.config.sanitizeFn)), t.html(e)) : t.text(e) : this.config.html ? o["default"](e).parent().is(t) || t.empty().append(e) : t.text(o["default"](e).text()); + }, e.getTitle = function () { + var t = this.element.getAttribute("data-original-title"); + return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t; + }, e._getPopperConfig = function (t) { + var e = this; + return r({}, { + placement: t, + modifiers: { + offset: this._getOffset(), + flip: { + behavior: this.config.fallbackPlacement + }, + arrow: { + element: ".arrow" + }, + preventOverflow: { + boundariesElement: this.config.boundary + } + }, + onCreate: function onCreate(t) { + t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t); + }, + onUpdate: function onUpdate(t) { + return e._handlePopperPlacementChange(t); + } + }, this.config.popperConfig); + }, e._getOffset = function () { + var t = this, + e = {}; + return "function" == typeof this.config.offset ? e.fn = function (e) { + return e.offsets = r({}, e.offsets, t.config.offset(e.offsets, t.element)), e; + } : e.offset = this.config.offset, e; + }, e._getContainer = function () { + return !1 === this.config.container ? document.body : d.isElement(this.config.container) ? o["default"](this.config.container) : o["default"](document).find(this.config.container); + }, e._getAttachment = function (t) { + return Bt[t.toUpperCase()]; + }, e._setListeners = function () { + var t = this; + this.config.trigger.split(" ").forEach(function (e) { + if ("click" === e) o["default"](t.element).on(t.constructor.Event.CLICK, t.config.selector, function (e) { + return t.toggle(e); + });else if ("manual" !== e) { + var n = e === Ft ? t.constructor.Event.MOUSEENTER : t.constructor.Event.FOCUSIN, + i = e === Ft ? t.constructor.Event.MOUSELEAVE : t.constructor.Event.FOCUSOUT; + o["default"](t.element).on(n, t.config.selector, function (e) { + return t._enter(e); + }).on(i, t.config.selector, function (e) { + return t._leave(e); + }); + } + }), this._hideModalHandler = function () { + t.element && t.hide(); + }, o["default"](this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = r({}, this.config, { + trigger: "manual", + selector: "" + }) : this._fixTitle(); + }, e._fixTitle = function () { + var t = _typeof(this.element.getAttribute("data-original-title")); + + (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", "")); + }, e._enter = function (t, e) { + var n = this.constructor.DATA_KEY; + (e = e || o["default"](t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), o["default"](t.currentTarget).data(n, e)), t && (e._activeTrigger["focusin" === t.type ? Qt : Ft] = !0), o["default"](e.getTipElement()).hasClass(Rt) || e._hoverState === xt ? e._hoverState = xt : (clearTimeout(e._timeout), e._hoverState = xt, e.config.delay && e.config.delay.show ? e._timeout = setTimeout(function () { + e._hoverState === xt && e.show(); + }, e.config.delay.show) : e.show()); + }, e._leave = function (t, e) { + var n = this.constructor.DATA_KEY; + (e = e || o["default"](t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), o["default"](t.currentTarget).data(n, e)), t && (e._activeTrigger["focusout" === t.type ? Qt : Ft] = !1), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = qt, e.config.delay && e.config.delay.hide ? e._timeout = setTimeout(function () { + e._hoverState === qt && e.hide(); + }, e.config.delay.hide) : e.hide()); + }, e._isWithActiveTrigger = function () { + for (var t in this._activeTrigger) { + if (this._activeTrigger[t]) return !0; + } + + return !1; + }, e._getConfig = function (t) { + var e = o["default"](this.element).data(); + return Object.keys(e).forEach(function (t) { + -1 !== Pt.indexOf(t) && delete e[t]; + }), "number" == typeof (t = r({}, this.constructor.Default, e, "object" == _typeof(t) && t ? t : {})).delay && (t.delay = { + show: t.delay, + hide: t.delay + }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), d.typeCheckConfig(It, t, this.constructor.DefaultType), t.sanitize && (t.template = At(t.template, t.whiteList, t.sanitizeFn)), t; + }, e._getDelegateConfig = function () { + var t = {}; + if (this.config) for (var e in this.config) { + this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]); + } + return t; + }, e._cleanTipClass = function () { + var t = o["default"](this.getTipElement()), + e = t.attr("class").match(jt); + null !== e && e.length && t.removeClass(e.join("")); + }, e._handlePopperPlacementChange = function (t) { + this.tip = t.instance.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement)); + }, e._fixTransition = function () { + var t = this.getTipElement(), + e = this.config.animation; + null === t.getAttribute("x-placement") && (o["default"](t).removeClass(Lt), this.config.animation = !1, this.hide(), this.show(), this.config.animation = e); + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this), + i = n.data(kt), + a = "object" == _typeof(e) && e; + + if ((i || !/dispose|hide/.test(e)) && (i || (i = new t(this, a), n.data(kt, i)), "string" == typeof e)) { + if ("undefined" == typeof i[e]) throw new TypeError('No method named "' + e + '"'); + i[e](); + } + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return Ht; + } + }, { + key: "NAME", + get: function get() { + return It; + } + }, { + key: "DATA_KEY", + get: function get() { + return kt; + } + }, { + key: "Event", + get: function get() { + return Mt; + } + }, { + key: "EVENT_KEY", + get: function get() { + return ".bs.tooltip"; + } + }, { + key: "DefaultType", + get: function get() { + return Ut; + } + }]), t; + }(); + + o["default"].fn.tooltip = Wt._jQueryInterface, o["default"].fn.tooltip.Constructor = Wt, o["default"].fn.tooltip.noConflict = function () { + return o["default"].fn.tooltip = Ot, Wt._jQueryInterface; + }; + + var Vt = "bs.popover", + zt = o["default"].fn.popover, + Kt = new RegExp("(^|\\s)bs-popover\\S+", "g"), + Xt = r({}, Wt.Default, { + placement: "right", + trigger: "click", + content: "", + template: '' + }), + Yt = r({}, Wt.DefaultType, { + content: "(string|element|function)" + }), + $t = { + HIDE: "hide.bs.popover", + HIDDEN: "hidden.bs.popover", + SHOW: "show.bs.popover", + SHOWN: "shown.bs.popover", + INSERTED: "inserted.bs.popover", + CLICK: "click.bs.popover", + FOCUSIN: "focusin.bs.popover", + FOCUSOUT: "focusout.bs.popover", + MOUSEENTER: "mouseenter.bs.popover", + MOUSELEAVE: "mouseleave.bs.popover" + }, + Jt = function (t) { + var e, n; + + function i() { + return t.apply(this, arguments) || this; + } + + n = t, (e = i).prototype = Object.create(n.prototype), e.prototype.constructor = e, u(e, n); + var a = i.prototype; + return a.isWithContent = function () { + return this.getTitle() || this._getContent(); + }, a.addAttachmentClass = function (t) { + o["default"](this.getTipElement()).addClass("bs-popover-" + t); + }, a.getTipElement = function () { + return this.tip = this.tip || o["default"](this.config.template)[0], this.tip; + }, a.setContent = function () { + var t = o["default"](this.getTipElement()); + this.setElementContent(t.find(".popover-header"), this.getTitle()); + + var e = this._getContent(); + + "function" == typeof e && (e = e.call(this.element)), this.setElementContent(t.find(".popover-body"), e), t.removeClass("fade show"); + }, a._getContent = function () { + return this.element.getAttribute("data-content") || this.config.content; + }, a._cleanTipClass = function () { + var t = o["default"](this.getTipElement()), + e = t.attr("class").match(Kt); + null !== e && e.length > 0 && t.removeClass(e.join("")); + }, i._jQueryInterface = function (t) { + return this.each(function () { + var e = o["default"](this).data(Vt), + n = "object" == _typeof(t) ? t : null; + + if ((e || !/dispose|hide/.test(t)) && (e || (e = new i(this, n), o["default"](this).data(Vt, e)), "string" == typeof t)) { + if ("undefined" == typeof e[t]) throw new TypeError('No method named "' + t + '"'); + e[t](); + } + }); + }, l(i, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return Xt; + } + }, { + key: "NAME", + get: function get() { + return "popover"; + } + }, { + key: "DATA_KEY", + get: function get() { + return Vt; + } + }, { + key: "Event", + get: function get() { + return $t; + } + }, { + key: "EVENT_KEY", + get: function get() { + return ".bs.popover"; + } + }, { + key: "DefaultType", + get: function get() { + return Yt; + } + }]), i; + }(Wt); + + o["default"].fn.popover = Jt._jQueryInterface, o["default"].fn.popover.Constructor = Jt, o["default"].fn.popover.noConflict = function () { + return o["default"].fn.popover = zt, Jt._jQueryInterface; + }; + + var Gt = "scrollspy", + Zt = "bs.scrollspy", + te = o["default"].fn[Gt], + ee = "active", + ne = "position", + ie = ".nav, .list-group", + oe = { + offset: 10, + method: "auto", + target: "" + }, + ae = { + offset: "number", + method: "string", + target: "(string|element)" + }, + se = function () { + function t(t, e) { + var n = this; + this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(e), this._selector = this._config.target + " .nav-link," + this._config.target + " .list-group-item," + this._config.target + " .dropdown-item", this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, o["default"](this._scrollElement).on("scroll.bs.scrollspy", function (t) { + return n._process(t); + }), this.refresh(), this._process(); + } + + var e = t.prototype; + return e.refresh = function () { + var t = this, + e = this._scrollElement === this._scrollElement.window ? "offset" : ne, + n = "auto" === this._config.method ? e : this._config.method, + i = n === ne ? this._getScrollTop() : 0; + this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map(function (t) { + var e, + a = d.getSelectorFromElement(t); + + if (a && (e = document.querySelector(a)), e) { + var s = e.getBoundingClientRect(); + if (s.width || s.height) return [o["default"](e)[n]().top + i, a]; + } + + return null; + }).filter(function (t) { + return t; + }).sort(function (t, e) { + return t[0] - e[0]; + }).forEach(function (e) { + t._offsets.push(e[0]), t._targets.push(e[1]); + }); + }, e.dispose = function () { + o["default"].removeData(this._element, Zt), o["default"](this._scrollElement).off(".bs.scrollspy"), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null; + }, e._getConfig = function (t) { + if ("string" != typeof (t = r({}, oe, "object" == _typeof(t) && t ? t : {})).target && d.isElement(t.target)) { + var e = o["default"](t.target).attr("id"); + e || (e = d.getUID(Gt), o["default"](t.target).attr("id", e)), t.target = "#" + e; + } + + return d.typeCheckConfig(Gt, t, ae), t; + }, e._getScrollTop = function () { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }, e._getScrollHeight = function () { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }, e._getOffsetHeight = function () { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + }, e._process = function () { + var t = this._getScrollTop() + this._config.offset, + e = this._getScrollHeight(), + n = this._config.offset + e - this._getOffsetHeight(); + + if (this._scrollHeight !== e && this.refresh(), t >= n) { + var i = this._targets[this._targets.length - 1]; + this._activeTarget !== i && this._activate(i); + } else { + if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear(); + + for (var o = this._offsets.length; o--;) { + this._activeTarget !== this._targets[o] && t >= this._offsets[o] && ("undefined" == typeof this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o]); + } + } + }, e._activate = function (t) { + this._activeTarget = t, this._clear(); + + var e = this._selector.split(",").map(function (e) { + return e + '[data-target="' + t + '"],' + e + '[href="' + t + '"]'; + }), + n = o["default"]([].slice.call(document.querySelectorAll(e.join(",")))); + + n.hasClass("dropdown-item") ? (n.closest(".dropdown").find(".dropdown-toggle").addClass(ee), n.addClass(ee)) : (n.addClass(ee), n.parents(ie).prev(".nav-link, .list-group-item").addClass(ee), n.parents(ie).prev(".nav-item").children(".nav-link").addClass(ee)), o["default"](this._scrollElement).trigger("activate.bs.scrollspy", { + relatedTarget: t + }); + }, e._clear = function () { + [].slice.call(document.querySelectorAll(this._selector)).filter(function (t) { + return t.classList.contains(ee); + }).forEach(function (t) { + return t.classList.remove(ee); + }); + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this).data(Zt); + + if (n || (n = new t(this, "object" == _typeof(e) && e), o["default"](this).data(Zt, n)), "string" == typeof e) { + if ("undefined" == typeof n[e]) throw new TypeError('No method named "' + e + '"'); + n[e](); + } + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "Default", + get: function get() { + return oe; + } + }]), t; + }(); + + o["default"](window).on("load.bs.scrollspy.data-api", function () { + for (var t = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), e = t.length; e--;) { + var n = o["default"](t[e]); + + se._jQueryInterface.call(n, n.data()); + } + }), o["default"].fn[Gt] = se._jQueryInterface, o["default"].fn[Gt].Constructor = se, o["default"].fn[Gt].noConflict = function () { + return o["default"].fn[Gt] = te, se._jQueryInterface; + }; + + var le = "bs.tab", + re = o["default"].fn.tab, + ue = "active", + fe = "fade", + de = "show", + ce = ".active", + he = "> li > .active", + ge = function () { + function t(t) { + this._element = t; + } + + var e = t.prototype; + return e.show = function () { + var t = this; + + if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && o["default"](this._element).hasClass(ue) || o["default"](this._element).hasClass("disabled"))) { + var e, + n, + i = o["default"](this._element).closest(".nav, .list-group")[0], + a = d.getSelectorFromElement(this._element); + + if (i) { + var s = "UL" === i.nodeName || "OL" === i.nodeName ? he : ce; + n = (n = o["default"].makeArray(o["default"](i).find(s)))[n.length - 1]; + } + + var l = o["default"].Event("hide.bs.tab", { + relatedTarget: this._element + }), + r = o["default"].Event("show.bs.tab", { + relatedTarget: n + }); + + if (n && o["default"](n).trigger(l), o["default"](this._element).trigger(r), !r.isDefaultPrevented() && !l.isDefaultPrevented()) { + a && (e = document.querySelector(a)), this._activate(this._element, i); + + var u = function u() { + var e = o["default"].Event("hidden.bs.tab", { + relatedTarget: t._element + }), + i = o["default"].Event("shown.bs.tab", { + relatedTarget: n + }); + o["default"](n).trigger(e), o["default"](t._element).trigger(i); + }; + + e ? this._activate(e, e.parentNode, u) : u(); + } + } + }, e.dispose = function () { + o["default"].removeData(this._element, le), this._element = null; + }, e._activate = function (t, e, n) { + var i = this, + a = (!e || "UL" !== e.nodeName && "OL" !== e.nodeName ? o["default"](e).children(ce) : o["default"](e).find(he))[0], + s = n && a && o["default"](a).hasClass(fe), + l = function l() { + return i._transitionComplete(t, a, n); + }; + + if (a && s) { + var r = d.getTransitionDurationFromElement(a); + o["default"](a).removeClass(de).one(d.TRANSITION_END, l).emulateTransitionEnd(r); + } else l(); + }, e._transitionComplete = function (t, e, n) { + if (e) { + o["default"](e).removeClass(ue); + var i = o["default"](e.parentNode).find("> .dropdown-menu .active")[0]; + i && o["default"](i).removeClass(ue), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !1); + } + + o["default"](t).addClass(ue), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), d.reflow(t), t.classList.contains(fe) && t.classList.add(de); + var a = t.parentNode; + + if (a && "LI" === a.nodeName && (a = a.parentNode), a && o["default"](a).hasClass("dropdown-menu")) { + var s = o["default"](t).closest(".dropdown")[0]; + + if (s) { + var l = [].slice.call(s.querySelectorAll(".dropdown-toggle")); + o["default"](l).addClass(ue); + } + + t.setAttribute("aria-expanded", !0); + } + + n && n(); + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this), + i = n.data(le); + + if (i || (i = new t(this), n.data(le, i)), "string" == typeof e) { + if ("undefined" == typeof i[e]) throw new TypeError('No method named "' + e + '"'); + i[e](); + } + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }]), t; + }(); + + o["default"](document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', function (t) { + t.preventDefault(), ge._jQueryInterface.call(o["default"](this), "show"); + }), o["default"].fn.tab = ge._jQueryInterface, o["default"].fn.tab.Constructor = ge, o["default"].fn.tab.noConflict = function () { + return o["default"].fn.tab = re, ge._jQueryInterface; + }; + + var me = "bs.toast", + pe = o["default"].fn.toast, + _e = "hide", + ve = "show", + ye = "showing", + be = "click.dismiss.bs.toast", + Ee = { + animation: !0, + autohide: !0, + delay: 500 + }, + Te = { + animation: "boolean", + autohide: "boolean", + delay: "number" + }, + we = function () { + function t(t, e) { + this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners(); + } + + var e = t.prototype; + return e.show = function () { + var t = this, + e = o["default"].Event("show.bs.toast"); + + if (o["default"](this._element).trigger(e), !e.isDefaultPrevented()) { + this._clearTimeout(), this._config.animation && this._element.classList.add("fade"); + + var n = function n() { + t._element.classList.remove(ye), t._element.classList.add(ve), o["default"](t._element).trigger("shown.bs.toast"), t._config.autohide && (t._timeout = setTimeout(function () { + t.hide(); + }, t._config.delay)); + }; + + if (this._element.classList.remove(_e), d.reflow(this._element), this._element.classList.add(ye), this._config.animation) { + var i = d.getTransitionDurationFromElement(this._element); + o["default"](this._element).one(d.TRANSITION_END, n).emulateTransitionEnd(i); + } else n(); + } + }, e.hide = function () { + if (this._element.classList.contains(ve)) { + var t = o["default"].Event("hide.bs.toast"); + o["default"](this._element).trigger(t), t.isDefaultPrevented() || this._close(); + } + }, e.dispose = function () { + this._clearTimeout(), this._element.classList.contains(ve) && this._element.classList.remove(ve), o["default"](this._element).off(be), o["default"].removeData(this._element, me), this._element = null, this._config = null; + }, e._getConfig = function (t) { + return t = r({}, Ee, o["default"](this._element).data(), "object" == _typeof(t) && t ? t : {}), d.typeCheckConfig("toast", t, this.constructor.DefaultType), t; + }, e._setListeners = function () { + var t = this; + o["default"](this._element).on(be, '[data-dismiss="toast"]', function () { + return t.hide(); + }); + }, e._close = function () { + var t = this, + e = function e() { + t._element.classList.add(_e), o["default"](t._element).trigger("hidden.bs.toast"); + }; + + if (this._element.classList.remove(ve), this._config.animation) { + var n = d.getTransitionDurationFromElement(this._element); + o["default"](this._element).one(d.TRANSITION_END, e).emulateTransitionEnd(n); + } else e(); + }, e._clearTimeout = function () { + clearTimeout(this._timeout), this._timeout = null; + }, t._jQueryInterface = function (e) { + return this.each(function () { + var n = o["default"](this), + i = n.data(me); + + if (i || (i = new t(this, "object" == _typeof(e) && e), n.data(me, i)), "string" == typeof e) { + if ("undefined" == typeof i[e]) throw new TypeError('No method named "' + e + '"'); + i[e](this); + } + }); + }, l(t, null, [{ + key: "VERSION", + get: function get() { + return "4.6.1"; + } + }, { + key: "DefaultType", + get: function get() { + return Te; + } + }, { + key: "Default", + get: function get() { + return Ee; + } + }]), t; + }(); + + o["default"].fn.toast = we._jQueryInterface, o["default"].fn.toast.Constructor = we, o["default"].fn.toast.noConflict = function () { + return o["default"].fn.toast = pe, we._jQueryInterface; + }, t.Alert = g, t.Button = E, t.Carousel = P, t.Collapse = V, t.Dropdown = lt, t.Modal = Ct, t.Popover = Jt, t.Scrollspy = se, t.Tab = ge, t.Toast = we, t.Tooltip = Wt, t.Util = d, Object.defineProperty(t, "__esModule", { + value: !0 + }); +}); diff --git a/Penilaian-Esai/public/assets/js/custom/custom-datatable.js b/Penilaian-Esai/public/assets/js/custom/custom-datatable.js new file mode 100644 index 0000000..da3c858 --- /dev/null +++ b/Penilaian-Esai/public/assets/js/custom/custom-datatable.js @@ -0,0 +1,29 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +var __webpack_exports__ = {}; +/*!********************************************************!*\ + !*** ./resources/assets/js/custom/custom-datatable.js ***! + \********************************************************/ + + +$.extend($.fn.dataTable.defaults, { + 'paging': true, + 'info': true, + 'ordering': true, + 'autoWidth': false, + 'pageLength': 10, + 'language': { + 'search': '', + 'sSearch': 'Search' + }, + "preDrawCallback": function preDrawCallback() { + customSearch(); + } +}); + +function customSearch() { + $('.dataTables_filter input').addClass("form-control"); + $('.dataTables_filter input').attr("placeholder", "Search"); +} +/******/ })() +; \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/js/custom/custom.js b/Penilaian-Esai/public/assets/js/custom/custom.js new file mode 100644 index 0000000..9cf7d81 --- /dev/null +++ b/Penilaian-Esai/public/assets/js/custom/custom.js @@ -0,0 +1,3336 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/jsrender/jsrender.js": +/*!*******************************************!*\ + !*** ./node_modules/jsrender/jsrender.js ***! + \*******************************************/ +/***/ ((module) => { + +/*! JsRender v1.0.11: http://jsviews.com/#jsrender */ +/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */ +/* + * Best-of-breed templating in browser or on Node.js. + * Does not require jQuery, or HTML DOM + * Integrates with JsViews (http://jsviews.com/#jsviews) + * + * Copyright 2021, Boris Moore + * Released under the MIT License. + */ + +//jshint -W018, -W041, -W120 + +(function(factory, global) { + // global var is the this object, which is window when running in the usual browser environment + var $ = global.jQuery; + + if (true) { // CommonJS e.g. Browserify + module.exports = $ + ? factory(global, $) + : function($) { // If no global jQuery, take optional jQuery passed as parameter: require('jsrender')(jQuery) + if ($ && !$.fn) { + throw "Provide jQuery or null"; + } + return factory(global, $); + }; + } else {} +} ( + +// factory (for jsrender.js) +function(global, $) { +"use strict"; + +//========================== Top-level vars ========================== + +// global var is the this object, which is window when running in the usual browser environment +var setGlobals = $ === false; // Only set globals if script block in browser (not AMD and not CommonJS) + +$ = $ && $.fn ? $ : global.jQuery; // $ is jQuery passed in by CommonJS loader (Browserify), or global jQuery. + +var versionNumber = "v1.0.11", + jsvStoreName, rTag, rTmplString, topView, $views, $expando, + _ocp = "_ocp", // Observable contextual parameter + + $isFunction, $isArray, $templates, $converters, $helpers, $tags, $sub, $subSettings, $subSettingsAdvanced, $viewsSettings, + delimOpenChar0, delimOpenChar1, delimCloseChar0, delimCloseChar1, linkChar, setting, baseOnError, + + isRenderCall, + rNewLine = /[ \t]*(\r\n|\n|\r)/g, + rUnescapeQuotes = /\\(['"\\])/g, // Unescape quotes and trim + rEscapeQuotes = /['"\\]/g, // Escape quotes and \ character + rBuildHash = /(?:\x08|^)(onerror:)?(?:(~?)(([\w$.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi, + rTestElseIf = /^if\s/, + rFirstElem = /<(\w+)[>\s]/, + rAttrEncode = /[\x00`><"'&=]/g, // Includes > encoding since rConvertMarkers in JsViews does not skip > characters in attribute strings + rIsHtml = /[\x00`><\"'&=]/, + rHasHandlers = /^on[A-Z]|^convert(Back)?$/, + rWrappedInViewMarker = /^\#\d+_`[\s\S]*\/\d+_`$/, + rHtmlEncode = rAttrEncode, + rDataEncode = /[&<>]/g, + rDataUnencode = /&(amp|gt|lt);/g, + rBracketQuote = /\[['"]?|['"]?\]/g, + viewId = 0, + charEntities = { + "&": "&", + "<": "<", + ">": ">", + "\x00": "�", + "'": "'", + '"': """, + "`": "`", + "=": "=" + }, + charsFromEntities = { + amp: "&", + gt: ">", + lt: "<" + }, + HTML = "html", + OBJECT = "object", + tmplAttr = "data-jsv-tmpl", + jsvTmpl = "jsvTmpl", + indexStr = "For #index in nested block use #getIndex().", + cpFnStore = {}, // Compiled furnctions for computed values in template expressions (properties, methods, helpers) + $render = {}, + + jsr = global.jsrender, + jsrToJq = jsr && $ && !$.render, // JsRender already loaded, without jQuery. but we will re-load it now to attach to jQuery + + jsvStores = { + template: { + compile: compileTmpl + }, + tag: { + compile: compileTag + }, + viewModel: { + compile: compileViewModel + }, + helper: {}, + converter: {} + }; + + // views object ($.views if jQuery is loaded, jsrender.views if no jQuery, e.g. in Node.js) + $views = { + jsviews: versionNumber, + sub: { + // subscription, e.g. JsViews integration + rPath: /^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g, + // not object helper view viewProperty pathTokens leafToken + + rPrm: /(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(~?[\w$.^]+)?\s*((\+\+|--)|\+|-|~(?![\w$])|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?(@)?[#~]?[\w$.^]+)([([])?)|(,\s*)|(?:(\()\s*)?\\?(?:(')|("))|(?:\s*(([)\]])(?=[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g, + // lftPrn0 lftPrn bound path operator err eq path2 late prn comma lftPrn2 apos quot rtPrn rtPrnDot prn2 space + + View: View, + Err: JsViewsError, + tmplFn: tmplFn, + parse: parseParams, + extend: $extend, + extendCtx: extendCtx, + syntaxErr: syntaxError, + onStore: { + template: function(name, item) { + if (item === null) { + delete $render[name]; + } else if (name) { + $render[name] = item; + } + } + }, + addSetting: addSetting, + settings: { + allowCode: false + }, + advSet: noop, // Update advanced settings + _thp: tagHandlersFromProps, + _gm: getMethod, + _tg: function() {}, // Constructor for tagDef + _cnvt: convertVal, + _tag: renderTag, + _er: error, + _err: onRenderError, + _cp: retVal, // Get observable contextual parameters (or properties) ~foo=expr. In JsRender, simply returns val. + _sq: function(token) { + if (token === "constructor") { + syntaxError(""); + } + return token; + } + }, + settings: { + delimiters: $viewsDelimiters, + advanced: function(value) { + return value + ? ( + $extend($subSettingsAdvanced, value), + $sub.advSet(), + $viewsSettings + ) + : $subSettingsAdvanced; + } + }, + map: dataMap // If jsObservable loaded first, use that definition of dataMap + }; + +function getDerivedMethod(baseMethod, method) { + return function() { + var ret, + tag = this, + prevBase = tag.base; + + tag.base = baseMethod; // Within method call, calling this.base will call the base method + ret = method.apply(tag, arguments); // Call the method + tag.base = prevBase; // Replace this.base to be the base method of the previous call, for chained calls + return ret; + }; +} + +function getMethod(baseMethod, method) { + // For derived methods (or handlers declared declaratively as in {{:foo onChange=~fooChanged}} replace by a derived method, to allow using this.base(...) + // or this.baseApply(arguments) to call the base implementation. (Equivalent to this._super(...) and this._superApply(arguments) in jQuery UI) + if ($isFunction(method)) { + method = getDerivedMethod( + !baseMethod + ? noop // no base method implementation, so use noop as base method + : baseMethod._d + ? baseMethod // baseMethod is a derived method, so use it + : getDerivedMethod(noop, baseMethod), // baseMethod is not derived so make its base method be the noop method + method + ); + method._d = (baseMethod && baseMethod._d || 0) + 1; // Add flag for derived method (incremented for derived of derived...) + } + return method; +} + +function tagHandlersFromProps(tag, tagCtx) { + var prop, + props = tagCtx.props; + for (prop in props) { + if (rHasHandlers.test(prop) && !(tag[prop] && tag[prop].fix)) { // Don't override handlers with fix expando (used in datepicker and spinner) + tag[prop] = prop !== "convert" ? getMethod(tag.constructor.prototype[prop], props[prop]) : props[prop]; + // Copy over the onFoo props, convert and convertBack from tagCtx.props to tag (overrides values in tagDef). + // Note: unsupported scenario: if handlers are dynamically added ^onFoo=expression this will work, but dynamically removing will not work. + } + } +} + +function retVal(val) { + return val; +} + +function noop() { + return ""; +} + +function dbgBreak(val) { + // Usage examples: {{dbg:...}}, {{:~dbg(...)}}, {{dbg .../}}, {^{for ... onAfterLink=~dbg}} etc. + try { + console.log("JsRender dbg breakpoint: " + val); + throw "dbg breakpoint"; // To break here, stop on caught exceptions. + } + catch (e) {} + return this.base ? this.baseApply(arguments) : val; +} + +function JsViewsError(message) { + // Error exception type for JsViews/JsRender + // Override of $.views.sub.Error is possible + this.name = ($.link ? "JsViews" : "JsRender") + " Error"; + this.message = message || this.name; +} + +function $extend(target, source) { + if (target) { + for (var name in source) { + target[name] = source[name]; + } + return target; + } +} + +(JsViewsError.prototype = new Error()).constructor = JsViewsError; + +//========================== Top-level functions ========================== + +//=================== +// views.delimiters +//=================== + + /** + * Set the tag opening and closing delimiters and 'link' character. Default is "{{", "}}" and "^" + * openChars, closeChars: opening and closing strings, each with two characters + * $.views.settings.delimiters(...) + * + * @param {string} openChars + * @param {string} [closeChars] + * @param {string} [link] + * @returns {Settings} + * + * Get delimiters + * delimsArray = $.views.settings.delimiters() + * + * @returns {string[]} + */ +function $viewsDelimiters(openChars, closeChars, link) { + if (!openChars) { + return $subSettings.delimiters; + } + if ($isArray(openChars)) { + return $viewsDelimiters.apply($views, openChars); + } + linkChar = link ? link[0] : linkChar; + if (!/^(\W|_){5}$/.test(openChars + closeChars + linkChar)) { + error("Invalid delimiters"); // Must be non-word characters, and openChars and closeChars must each be length 2 + } + delimOpenChar0 = openChars[0]; + delimOpenChar1 = openChars[1]; + delimCloseChar0 = closeChars[0]; + delimCloseChar1 = closeChars[1]; + + $subSettings.delimiters = [delimOpenChar0 + delimOpenChar1, delimCloseChar0 + delimCloseChar1, linkChar]; + + // Escape the characters - since they could be regex special characters + openChars = "\\" + delimOpenChar0 + "(\\" + linkChar + ")?\\" + delimOpenChar1; // Default is "{^{" + closeChars = "\\" + delimCloseChar0 + "\\" + delimCloseChar1; // Default is "}}" + // Build regex with new delimiters + // [tag (followed by / space or }) or cvtr+colon or html or code] followed by space+params then convertBack? + rTag = "(?:(\\w+(?=[\\/\\s\\" + delimCloseChar0 + "]))|(\\w+)?(:)|(>)|(\\*))\\s*((?:[^\\" + + delimCloseChar0 + "]|\\" + delimCloseChar0 + "(?!\\" + delimCloseChar1 + "))*?)"; + + // Make rTag available to JsViews (or other components) for parsing binding expressions + $sub.rTag = "(?:" + rTag + ")"; + // { ^? { tag+params slash? or closingTag or comment + rTag = new RegExp("(?:" + openChars + rTag + "(\\/)?|\\" + delimOpenChar0 + "(\\" + linkChar + ")?\\" + delimOpenChar1 + "(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))" + closeChars, "g"); + + // Default: bind tagName cvt cln html code params slash bind2 closeBlk comment + // /(?:{(\^)?{(?:(\w+(?=[\/\s}]))|(\w+)?(:)|(>)|(\*))\s*((?:[^}]|}(?!}))*?)(\/)?|{(\^)?{(?:(?:\/(\w+))\s*|!--[\s\S]*?--))}} + + $sub.rTmpl = new RegExp("^\\s|\\s$|<.*>|([^\\\\]|^)[{}]|" + openChars + ".*" + closeChars); + // $sub.rTmpl looks for initial or final white space, html tags or { or } char not preceded by \\, or JsRender tags {{xxx}}. + // Each of these strings are considered NOT to be jQuery selectors + return $viewsSettings; +} + +//========= +// View.get +//========= + +function getView(inner, type) { //view.get(inner, type) + if (!type && inner !== true) { + // view.get(type) + type = inner; + inner = undefined; + } + + var views, i, l, found, + view = this, + root = type === "root"; + // view.get("root") returns view.root, view.get() returns view.parent, view.get(true) returns view.views[0]. + + if (inner) { + // Go through views - this one, and all nested ones, depth-first - and return first one with given type. + // If type is undefined, i.e. view.get(true), return first child view. + found = type && view.type === type && view; + if (!found) { + views = view.views; + if (view._.useKey) { + for (i in views) { + if (found = type ? views[i].get(inner, type) : views[i]) { + break; + } + } + } else { + for (i = 0, l = views.length; !found && i < l; i++) { + found = type ? views[i].get(inner, type) : views[i]; + } + } + } + } else if (root) { + // Find root view. (view whose parent is top view) + found = view.root; + } else if (type) { + while (view && !found) { + // Go through views - this one, and all parent ones - and return first one with given type. + found = view.type === type ? view : undefined; + view = view.parent; + } + } else { + found = view.parent; + } + return found || undefined; +} + +function getNestedIndex() { + var view = this.get("item"); + return view ? view.index : undefined; +} + +getNestedIndex.depends = function() { + return [this.get("item"), "index"]; +}; + +function getIndex() { + return this.index; +} + +getIndex.depends = "index"; + +//================== +// View.ctxPrm, etc. +//================== + +/* Internal private: view._getOb() */ +function getPathObject(ob, path, ltOb, fn) { + // Iterate through path to late paths: @a.b.c paths + // Return "" (or noop if leaf is a function @a.b.c(...) ) if intermediate object not yet available + var prevOb, tokens, l, + i = 0; + if (ltOb === 1) { + fn = 1; + ltOb = undefined; + } + // Paths like ^a^b^c or ~^a^b^c will not throw if an object in path is undefined. + if (path) { + tokens = path.split("."); + l = tokens.length; + + for (; ob && i < l; i++) { + prevOb = ob; + ob = tokens[i] ? ob[tokens[i]] : ob; + } + } + if (ltOb) { + ltOb.lt = ltOb.lt || i 1, + store = storeView.ctx; + if (key) { + if (!storeView._) { // tagCtx.ctxPrm() call + tagElse = storeView.index; + storeView = storeView.tag; + } + callView = storeView; + if (store && store.hasOwnProperty(key) || (store = $helpers).hasOwnProperty(key)) { + res = store[key]; + if (key === "tag" || key === "tagCtx" || key === "root" || key === "parentTags") { + return res; + } + } else { + store = undefined; + } + if (!isRenderCall && storeView.tagCtx || storeView.linked) { // Data-linked view, or tag instance + if (!res || !res._cxp) { + // Not a contextual parameter + // Set storeView to tag (if this is a tag.ctxPrm() call) or to root view ("data" view of linked template) + storeView = storeView.tagCtx || $isFunction(res) + ? storeView // Is a tag, not a view, or is a computed contextual parameter, so scope to the callView, no the 'scope view' + : (storeView = storeView.scope || storeView, + !storeView.isTop && storeView.ctx.tag // If this view is in a tag, set storeView to the tag + || storeView); + if (res !== undefined && storeView.tagCtx) { + // If storeView is a tag, but the contextual parameter has been set at at higher level (e.g. helpers)... + storeView = storeView.tagCtx.view.scope; // then move storeView to the outer level (scope of tag container view) + } + store = storeView._ocps; + res = store && store.hasOwnProperty(key) && store[key] || res; + if (!(res && res._cxp) && (get || isUpdate)) { + // Create observable contextual parameter + (store || (storeView._ocps = storeView._ocps || {}))[key] + = res + = [{ + _ocp: res, // The observable contextual parameter value + _vw: callView, + _key: key + }]; + res._cxp = { + path: _ocp, + ind: 0, + updateValue: function(val, path) { + $.observable(res[0]).setProperty(_ocp, val); // Set the value (res[0]._ocp) + return this; + } + }; + } + } + if (obsCtxPrm = res && res._cxp) { + // If this helper resource is an observable contextual parameter + if (arguments.length > 2) { + deps = res[1] ? $sub._ceo(res[1].deps) : [_ocp]; // fn deps (with any exprObs cloned using $sub._ceo) + deps.unshift(res[0]); // view + deps._cxp = obsCtxPrm; + // In a context callback for a contextual param, we set get = true, to get ctxPrm [view, dependencies...] array - needed for observe call + return deps; + } + tagElse = obsCtxPrm.tagElse; + newRes = res[1] // linkFn for compiled expression + ? obsCtxPrm.tag && obsCtxPrm.tag.cvtArgs + ? obsCtxPrm.tag.cvtArgs(tagElse, 1)[obsCtxPrm.ind] // = tag.bndArgs() - for tag contextual parameter + : res[1](res[0].data, res[0], $sub) // = fn(data, view, $sub) for compiled binding expression + : res[0]._ocp; // Observable contextual parameter (uninitialized, or initialized as static expression, so no path dependencies) + if (isUpdate) { + $sub._ucp(key, value, storeView, obsCtxPrm); // Update observable contextual parameter + return storeView; + } + res = newRes; + } + } + if (res && $isFunction(res)) { + // If a helper is of type function we will wrap it, so if called with no this pointer it will be called with the + // view as 'this' context. If the helper ~foo() was in a data-link expression, the view will have a 'temporary' linkCtx property too. + // Note that helper functions on deeper paths will have specific this pointers, from the preceding path. + // For example, ~util.foo() will have the ~util object as 'this' pointer + wrapped = function() { + return res.apply((!this || this === global) ? callView : this, arguments); + }; + $extend(wrapped, res); // Attach same expandos (if any) to the wrapped function + } + return wrapped || res; + } +} + +/* Internal private: view._getTmpl() */ +function getTemplate(tmpl) { + return tmpl && (tmpl.fn + ? tmpl + : this.getRsc("templates", tmpl) || $templates(tmpl)); // not yet compiled +} + +//============== +// views._cnvt +//============== + +function convertVal(converter, view, tagCtx, onError) { + // Called from compiled template code for {{:}} + // self is template object or linkCtx object + var tag, linkCtx, value, argsLen, bindTo, + // If tagCtx is an integer, then it is the key for the compiled function to return the boundTag tagCtx + boundTag = typeof tagCtx === "number" && view.tmpl.bnds[tagCtx-1]; + + if (onError === undefined && boundTag && boundTag._lr) { // lateRender + onError = ""; + } + if (onError !== undefined) { + tagCtx = onError = {props: {}, args: [onError]}; + } else if (boundTag) { + tagCtx = boundTag(view.data, view, $sub); + } + boundTag = boundTag._bd && boundTag; + if (converter || boundTag) { + linkCtx = view._lc; // For data-link="{cvt:...}"... See onDataLinkedTagChange + tag = linkCtx && linkCtx.tag; + tagCtx.view = view; + if (!tag) { + tag = $extend(new $sub._tg(), { + _: { + bnd: boundTag, + unlinked: true, + lt: tagCtx.lt // If a late path @some.path has not returned @some object, mark tag as late + }, + inline: !linkCtx, + tagName: ":", + convert: converter, + onArrayChange: true, + flow: true, + tagCtx: tagCtx, + tagCtxs: [tagCtx], + _is: "tag" + }); + argsLen = tagCtx.args.length; + if (argsLen>1) { + bindTo = tag.bindTo = []; + while (argsLen--) { + bindTo.unshift(argsLen); // Bind to all the arguments - generate bindTo array: [0,1,2...] + } + } + if (linkCtx) { + linkCtx.tag = tag; + tag.linkCtx = linkCtx; + } + tagCtx.ctx = extendCtx(tagCtx.ctx, (linkCtx ? linkCtx.view : view).ctx); + tagHandlersFromProps(tag, tagCtx); + } + tag._er = onError && value; + tag.ctx = tagCtx.ctx || tag.ctx || {}; + tagCtx.ctx = undefined; + value = tag.cvtArgs()[0]; // If there is a convertBack but no convert, converter will be "true" + tag._er = onError && value; + } else { + value = tagCtx.args[0]; + } + + // Call onRender (used by JsViews if present, to add binding annotations around rendered content) + value = boundTag && view._.onRender + ? view._.onRender(value, view, tag) + : value; + return value != undefined ? value : ""; +} + +function convertArgs(tagElse, bound) { // tag.cvtArgs() or tag.cvtArgs(tagElse?, true?) + var l, key, boundArgs, args, bindFrom, tag, converter, + tagCtx = this; + + if (tagCtx.tagName) { + tag = tagCtx; + tagCtx = (tag.tagCtxs || [tagCtx])[tagElse||0]; + if (!tagCtx) { + return; + } + } else { + tag = tagCtx.tag; + } + + bindFrom = tag.bindFrom; + args = tagCtx.args; + + if ((converter = tag.convert) && "" + converter === converter) { + converter = converter === "true" + ? undefined + : (tagCtx.view.getRsc("converters", converter) || error("Unknown converter: '" + converter + "'")); + } + + if (converter && !bound) { // If there is a converter, use a copy of the tagCtx.args array for rendering, and replace the args[0] in + args = args.slice(); // the copied array with the converted value. But we do not modify the value of tag.tagCtx.args[0] (the original args array) + } + if (bindFrom) { // Get the values of the boundArgs + boundArgs = []; + l = bindFrom.length; + while (l--) { + key = bindFrom[l]; + boundArgs.unshift(argOrProp(tagCtx, key)); + } + if (bound) { + args = boundArgs; // Call to bndArgs() - returns the boundArgs + } + } + if (converter) { + converter = converter.apply(tag, boundArgs || args); + if (converter === undefined) { + return args; // Returning undefined from a converter is equivalent to not having a converter. + } + bindFrom = bindFrom || [0]; + l = bindFrom.length; + if (!$isArray(converter) || (converter.arg0 !== false && (l === 1 || converter.length !== l || converter.arg0))) { + converter = [converter]; // Returning converter as first arg, even if converter value is an array + bindFrom = [0]; + l = 1; + } + if (bound) { // Call to bndArgs() - so apply converter to all boundArgs + args = converter; // The array of values returned from the converter + } else { // Call to cvtArgs() + while (l--) { + key = bindFrom[l]; + if (+key === key) { + args[key] = converter[l]; + } + } + } + } + return args; +} + +function argOrProp(context, key) { + context = context[+key === key ? "args" : "props"]; + return context && context[key]; +} + +function convertBoundArgs(tagElse) { // tag.bndArgs() + return this.cvtArgs(tagElse, 1); +} + +//============= +// views.tag +//============= + +/* view.getRsc() */ +function getResource(resourceType, itemName) { + var res, store, + view = this; + if ("" + itemName === itemName) { + while ((res === undefined) && view) { + store = view.tmpl && view.tmpl[resourceType]; + res = store && store[itemName]; + view = view.parent; + } + return res || $views[resourceType][itemName]; + } +} + +function renderTag(tagName, parentView, tmpl, tagCtxs, isUpdate, onError) { + function bindToOrBindFrom(type) { + var bindArray = tag[type]; + + if (bindArray !== undefined) { + bindArray = $isArray(bindArray) ? bindArray : [bindArray]; + m = bindArray.length; + while (m--) { + key = bindArray[m]; + if (!isNaN(parseInt(key))) { + bindArray[m] = parseInt(key); // Convert "0" to 0, etc. + } + } + } + + return bindArray || [0]; + } + + parentView = parentView || topView; + var tag, tagDef, template, tags, attr, parentTag, l, m, n, itemRet, tagCtx, tagCtxCtx, ctxPrm, bindTo, bindFrom, initVal, + content, callInit, mapDef, thisMap, args, bdArgs, props, tagDataMap, contentCtx, key, bindFromLength, bindToLength, linkedElement, defaultCtx, + i = 0, + ret = "", + linkCtx = parentView._lc || false, // For data-link="{myTag...}"... See onDataLinkedTagChange + ctx = parentView.ctx, + parentTmpl = tmpl || parentView.tmpl, + // If tagCtxs is an integer, then it is the key for the compiled function to return the boundTag tagCtxs + boundTag = typeof tagCtxs === "number" && parentView.tmpl.bnds[tagCtxs-1]; + + if (tagName._is === "tag") { + tag = tagName; + tagName = tag.tagName; + tagCtxs = tag.tagCtxs; + template = tag.template; + } else { + tagDef = parentView.getRsc("tags", tagName) || error("Unknown tag: {{" + tagName + "}} "); + template = tagDef.template; + } + if (onError === undefined && boundTag && (boundTag._lr = (tagDef.lateRender && boundTag._lr!== false || boundTag._lr))) { + onError = ""; // If lateRender, set temporary onError, to skip initial rendering (and render just "") + } + if (onError !== undefined) { + ret += onError; + tagCtxs = onError = [{props: {}, args: [], params: {props:{}}}]; + } else if (boundTag) { + tagCtxs = boundTag(parentView.data, parentView, $sub); + } + + l = tagCtxs.length; + for (; i < l; i++) { + tagCtx = tagCtxs[i]; + content = tagCtx.tmpl; + if (!linkCtx || !linkCtx.tag || i && !linkCtx.tag.inline || tag._er || content && +content===content) { + // Initialize tagCtx + // For block tags, tagCtx.tmpl is an integer > 0 + if (content && parentTmpl.tmpls) { + tagCtx.tmpl = tagCtx.content = parentTmpl.tmpls[content - 1]; // Set the tmpl property to the content of the block tag + } + tagCtx.index = i; + tagCtx.ctxPrm = contextParameter; + tagCtx.render = renderContent; + tagCtx.cvtArgs = convertArgs; + tagCtx.bndArgs = convertBoundArgs; + tagCtx.view = parentView; + tagCtx.ctx = extendCtx(extendCtx(tagCtx.ctx, tagDef && tagDef.ctx), ctx); // Clone and extend parentView.ctx + } + if (tmpl = tagCtx.props.tmpl) { + // If the tmpl property is overridden, set the value (when initializing, or, in case of binding: ^tmpl=..., when updating) + tagCtx.tmpl = parentView._getTmpl(tmpl); + tagCtx.content = tagCtx.content || tagCtx.tmpl; + } + + if (!tag) { + // This will only be hit for initial tagCtx (not for {{else}}) - if the tag instance does not exist yet + // If the tag has not already been instantiated, we will create a new instance. + // ~tag will access the tag, even within the rendering of the template content of this tag. + // From child/descendant tags, can access using ~tag.parent, or ~parentTags.tagName + tag = new tagDef._ctr(); + callInit = !!tag.init; + + tag.parent = parentTag = ctx && ctx.tag; + tag.tagCtxs = tagCtxs; + + if (linkCtx) { + tag.inline = false; + linkCtx.tag = tag; + } + tag.linkCtx = linkCtx; + if (tag._.bnd = boundTag || linkCtx.fn) { + // Bound if {^{tag...}} or data-link="{tag...}" + tag._.ths = tagCtx.params.props["this"]; // Tag has a this=expr binding, to get javascript reference to tag instance + tag._.lt = tagCtxs.lt; // If a late path @some.path has not returned @some object, mark tag as late + tag._.arrVws = {}; + } else if (tag.dataBoundOnly) { + error(tagName + " must be data-bound:\n{^{" + tagName + "}}"); + } + //TODO better perf for childTags() - keep child tag.tags array, (and remove child, when disposed) + // tag.tags = []; + } else if (linkCtx && linkCtx.fn._lr) { + callInit = !!tag.init; + } + tagDataMap = tag.dataMap; + + tagCtx.tag = tag; + if (tagDataMap && tagCtxs) { + tagCtx.map = tagCtxs[i].map; // Copy over the compiled map instance from the previous tagCtxs to the refreshed ones + } + if (!tag.flow) { + tagCtxCtx = tagCtx.ctx = tagCtx.ctx || {}; + + // tags hash: tag.ctx.tags, merged with parentView.ctx.tags, + tags = tag.parents = tagCtxCtx.parentTags = ctx && extendCtx(tagCtxCtx.parentTags, ctx.parentTags) || {}; + if (parentTag) { + tags[parentTag.tagName] = parentTag; + //TODO better perf for childTags: parentTag.tags.push(tag); + } + tags[tag.tagName] = tagCtxCtx.tag = tag; + tagCtxCtx.tagCtx = tagCtx; + } + } + if (!(tag._er = onError)) { + tagHandlersFromProps(tag, tagCtxs[0]); + tag.rendering = {rndr: tag.rendering}; // Provide object for state during render calls to tag and elses. (Used by {{if}} and {{for}}...) + for (i = 0; i < l; i++) { // Iterate tagCtx for each {{else}} block + tagCtx = tag.tagCtx = tagCtxs[i]; + props = tagCtx.props; + tag.ctx = tagCtx.ctx; + + if (!i) { + if (callInit) { + tag.init(tagCtx, linkCtx, tag.ctx); + callInit = undefined; + } + if (!tagCtx.args.length && tagCtx.argDefault !== false && tag.argDefault !== false) { + tagCtx.args = args = [tagCtx.view.data]; // Missing first arg defaults to the current data context + tagCtx.params.args = ["#data"]; + } + + bindTo = bindToOrBindFrom("bindTo"); + + if (tag.bindTo !== undefined) { + tag.bindTo = bindTo; + } + + if (tag.bindFrom !== undefined) { + tag.bindFrom = bindToOrBindFrom("bindFrom"); + } else if (tag.bindTo) { + tag.bindFrom = tag.bindTo = bindTo; + } + bindFrom = tag.bindFrom || bindTo; + + bindToLength = bindTo.length; + bindFromLength = bindFrom.length; + + if (tag._.bnd && (linkedElement = tag.linkedElement)) { + tag.linkedElement = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; + + if (bindToLength !== linkedElement.length) { + error("linkedElement not same length as bindTo"); + } + } + if (linkedElement = tag.linkedCtxParam) { + tag.linkedCtxParam = linkedElement = $isArray(linkedElement) ? linkedElement: [linkedElement]; + + if (bindFromLength !== linkedElement.length) { + error("linkedCtxParam not same length as bindFrom/bindTo"); + } + } + + if (bindFrom) { + tag._.fromIndex = {}; // Hash of bindFrom index which has same path value as bindTo index. fromIndex = tag._.fromIndex[toIndex] + tag._.toIndex = {}; // Hash of bindFrom index which has same path value as bindTo index. fromIndex = tag._.fromIndex[toIndex] + n = bindFromLength; + while (n--) { + key = bindFrom[n]; + m = bindToLength; + while (m--) { + if (key === bindTo[m]) { + tag._.fromIndex[m] = n; + tag._.toIndex[n] = m; + } + } + } + } + + if (linkCtx) { + // Set attr on linkCtx to ensure outputting to the correct target attribute. + // Setting either linkCtx.attr or this.attr in the init() allows per-instance choice of target attrib. + linkCtx.attr = tag.attr = linkCtx.attr || tag.attr || linkCtx._dfAt; + } + attr = tag.attr; + tag._.noVws = attr && attr !== HTML; + } + args = tag.cvtArgs(i); + if (tag.linkedCtxParam) { + bdArgs = tag.cvtArgs(i, 1); + m = bindFromLength; + defaultCtx = tag.constructor.prototype.ctx; + while (m--) { + if (ctxPrm = tag.linkedCtxParam[m]) { + key = bindFrom[m]; + initVal = bdArgs[m]; + // Create tag contextual parameter + tagCtx.ctx[ctxPrm] = $sub._cp( + defaultCtx && initVal === undefined ? defaultCtx[ctxPrm]: initVal, + initVal !== undefined && argOrProp(tagCtx.params, key), + tagCtx.view, + tag._.bnd && {tag: tag, cvt: tag.convert, ind: m, tagElse: i} + ); + } + } + } + if ((mapDef = props.dataMap || tagDataMap) && (args.length || props.dataMap)) { + thisMap = tagCtx.map; + if (!thisMap || thisMap.src !== args[0] || isUpdate) { + if (thisMap && thisMap.src) { + thisMap.unmap(); // only called if observable map - not when only used in JsRender, e.g. by {{props}} + } + mapDef.map(args[0], tagCtx, thisMap, !tag._.bnd); + thisMap = tagCtx.map; + } + args = [thisMap.tgt]; + } + + itemRet = undefined; + if (tag.render) { + itemRet = tag.render.apply(tag, args); + if (parentView.linked && itemRet && !rWrappedInViewMarker.test(itemRet)) { + // When a tag renders content from the render method, with data linking then we need to wrap with view markers, if absent, + // to provide a contentView for the tag, which will correctly dispose bindings if deleted. The 'tmpl' for this view will + // be a dumbed-down template which will always return the itemRet string (no matter what the data is). The itemRet string + // is not compiled as template markup, so can include "{{" or "}}" without triggering syntax errors + tmpl = { // 'Dumbed-down' template which always renders 'static' itemRet string + links: [] + }; + tmpl.render = tmpl.fn = function() { + return itemRet; + }; + itemRet = renderWithViews(tmpl, parentView.data, undefined, true, parentView, undefined, undefined, tag); + } + } + if (!args.length) { + args = [parentView]; // no arguments - (e.g. {{else}}) get data context from view. + } + if (itemRet === undefined) { + contentCtx = args[0]; // Default data context for wrapped block content is the first argument + if (tag.contentCtx) { // Set tag.contentCtx to true, to inherit parent context, or to a function to provide alternate context. + contentCtx = tag.contentCtx === true ? parentView : tag.contentCtx(contentCtx); + } + itemRet = tagCtx.render(contentCtx, true) || (isUpdate ? undefined : ""); + } + ret = ret + ? ret + (itemRet || "") + : itemRet !== undefined + ? "" + itemRet + : undefined; // If no return value from render, and no template/content tagCtx.render(...), return undefined + } + tag.rendering = tag.rendering.rndr; // Remove tag.rendering object (if this is outermost render call. (In case of nested calls) + } + tag.tagCtx = tagCtxs[0]; + tag.ctx = tag.tagCtx.ctx; + + if (tag._.noVws && tag.inline) { + // inline tag with attr set to "text" will insert HTML-encoded content - as if it was element-based innerText + ret = attr === "text" + ? $converters.html(ret) + : ""; + } + return boundTag && parentView._.onRender + // Call onRender (used by JsViews if present, to add binding annotations around rendered content) + ? parentView._.onRender(ret, parentView, tag) + : ret; +} + +//================= +// View constructor +//================= + +function View(context, type, parentView, data, template, key, onRender, contentTmpl) { + // Constructor for view object in view hierarchy. (Augmented by JsViews if JsViews is loaded) + var views, parentView_, tag, self_, + self = this, + isArray = type === "array"; + // If the data is an array, this is an 'array view' with a views array for each child 'item view' + // If the data is not an array, this is an 'item view' with a views 'hash' object for any child nested views + + self.content = contentTmpl; + self.views = isArray ? [] : {}; + self.data = data; + self.tmpl = template; + self_ = self._ = { + key: 0, + // ._.useKey is non zero if is not an 'array view' (owning a data array). Use this as next key for adding to child views hash + useKey: isArray ? 0 : 1, + id: "" + viewId++, + onRender: onRender, + bnds: {} + }; + self.linked = !!onRender; + self.type = type || "top"; + if (type) { + self.cache = {_ct: $subSettings._cchCt}; // Used for caching results of computed properties and helpers (view.getCache) + } + + if (!parentView || parentView.type === "top") { + (self.ctx = context || {}).root = self.data; + } + + if (self.parent = parentView) { + self.root = parentView.root || self; // view whose parent is top view + views = parentView.views; + parentView_ = parentView._; + self.isTop = parentView_.scp; // Is top content view of a link("#container", ...) call + self.scope = (!context.tag || context.tag === parentView.ctx.tag) && !self.isTop && parentView.scope || self; + // Scope for contextParams - closest non flow tag ancestor or root view + if (parentView_.useKey) { + // Parent is not an 'array view'. Add this view to its views object + // self._key = is the key in the parent view hash + views[self_.key = "_" + parentView_.useKey++] = self; + self.index = indexStr; + self.getIndex = getNestedIndex; + } else if (views.length === (self_.key = self.index = key)) { // Parent is an 'array view'. Add this view to its views array + views.push(self); // Adding to end of views array. (Using push when possible - better perf than splice) + } else { + views.splice(key, 0, self); // Inserting in views array + } + // If no context was passed in, use parent context + // If context was passed in, it should have been merged already with parent context + self.ctx = context || parentView.ctx; + } else if (type) { + self.root = self; // view whose parent is top view + } +} + +View.prototype = { + get: getView, + getIndex: getIndex, + ctxPrm: contextParameter, + getRsc: getResource, + _getTmpl: getTemplate, + _getOb: getPathObject, + getCache: function(key) { // Get cached value of computed value + if ($subSettings._cchCt > this.cache._ct) { + this.cache = {_ct: $subSettings._cchCt}; + } + return this.cache[key] !== undefined ? this.cache[key] : (this.cache[key] = cpFnStore[key](this.data, this, $sub)); + }, + _is: "view" +}; + +//==================================================== +// Registration +//==================================================== + +function compileChildResources(parentTmpl) { + var storeName, storeNames, resources; + for (storeName in jsvStores) { + storeNames = storeName + "s"; + if (parentTmpl[storeNames]) { + resources = parentTmpl[storeNames]; // Resources not yet compiled + parentTmpl[storeNames] = {}; // Remove uncompiled resources + $views[storeNames](resources, parentTmpl); // Add back in the compiled resources + } + } +} + +//=============== +// compileTag +//=============== + +function compileTag(name, tagDef, parentTmpl) { + var tmpl, baseTag, prop, + compiledDef = new $sub._tg(); + + function Tag() { + var tag = this; + tag._ = { + unlinked: true + }; + tag.inline = true; + tag.tagName = name; + } + + if ($isFunction(tagDef)) { + // Simple tag declared as function. No presenter instantation. + tagDef = { + depends: tagDef.depends, + render: tagDef + }; + } else if ("" + tagDef === tagDef) { + tagDef = {template: tagDef}; + } + + if (baseTag = tagDef.baseTag) { + tagDef.flow = !!tagDef.flow; // Set flow property, so defaults to false even if baseTag has flow=true + baseTag = "" + baseTag === baseTag + ? (parentTmpl && parentTmpl.tags[baseTag] || $tags[baseTag]) + : baseTag; + if (!baseTag) { + error('baseTag: "' + tagDef.baseTag + '" not found'); + } + compiledDef = $extend(compiledDef, baseTag); + + for (prop in tagDef) { + compiledDef[prop] = getMethod(baseTag[prop], tagDef[prop]); + } + } else { + compiledDef = $extend(compiledDef, tagDef); + } + + // Tag declared as object, used as the prototype for tag instantiation (control/presenter) + if ((tmpl = compiledDef.template) !== undefined) { + compiledDef.template = "" + tmpl === tmpl ? ($templates[tmpl] || $templates(tmpl)) : tmpl; + } + (Tag.prototype = compiledDef).constructor = compiledDef._ctr = Tag; + + if (parentTmpl) { + compiledDef._parentTmpl = parentTmpl; + } + return compiledDef; +} + +function baseApply(args) { + // In derived method (or handler declared declaratively as in {{:foo onChange=~fooChanged}} can call base method, + // using this.baseApply(arguments) (Equivalent to this._superApply(arguments) in jQuery UI) + return this.base.apply(this, args); +} + +//=============== +// compileTmpl +//=============== + +function compileTmpl(name, tmpl, parentTmpl, options) { + // tmpl is either a template object, a selector for a template script block, or the name of a compiled template + + //==== nested functions ==== + function lookupTemplate(value) { + // If value is of type string - treat as selector, or name of compiled template + // Return the template object, if already compiled, or the markup string + var currentName, tmpl; + if (("" + value === value) || value.nodeType > 0 && (elem = value)) { + if (!elem) { + if (/^\.?\/[^\\:*?"<>]*$/.test(value)) { + // value="./some/file.html" (or "/some/file.html") + // If the template is not named, use "./some/file.html" as name. + if (tmpl = $templates[name = name || value]) { + value = tmpl; + } else { + // BROWSER-SPECIFIC CODE (not on Node.js): + // Look for server-generated script block with id "./some/file.html" + elem = document.getElementById(value); + } + } else if (value.charAt(0) === "#") { + elem = document.getElementById(value.slice(1)); + } else if ($.fn && !$sub.rTmpl.test(value)) { + try { + elem = $(value, document)[0]; // if jQuery is loaded, test for selector returning elements, and get first element + } catch (e) {} + }// END BROWSER-SPECIFIC CODE + } //BROWSER-SPECIFIC CODE + if (elem) { + if (elem.tagName !== "SCRIPT") { + error(value + ": Use script block, not " + elem.tagName); + } + if (options) { + // We will compile a new template using the markup in the script element + value = elem.innerHTML; + } else { + // We will cache a single copy of the compiled template, and associate it with the name + // (renaming from a previous name if there was one). + currentName = elem.getAttribute(tmplAttr); + if (currentName) { + if (currentName !== jsvTmpl) { + value = $templates[currentName]; + delete $templates[currentName]; + } else if ($.fn) { + value = $.data(elem)[jsvTmpl]; // Get cached compiled template + } + } + if (!currentName || !value) { // Not yet compiled, or cached version lost + name = name || ($.fn ? jsvTmpl : value); + value = compileTmpl(name, elem.innerHTML, parentTmpl, options); + } + value.tmplName = name = name || currentName; + if (name !== jsvTmpl) { + $templates[name] = value; + } + elem.setAttribute(tmplAttr, name); + if ($.fn) { + $.data(elem, jsvTmpl, value); + } + } + } // END BROWSER-SPECIFIC CODE + elem = undefined; + } else if (!value.fn) { + value = undefined; + // If value is not a string. HTML element, or compiled template, return undefined + } + return value; + } + + var elem, compiledTmpl, + tmplOrMarkup = tmpl = tmpl || ""; + $sub._html = $converters.html; + + //==== Compile the template ==== + if (options === 0) { + options = undefined; + tmplOrMarkup = lookupTemplate(tmplOrMarkup); // Top-level compile so do a template lookup + } + + // If options, then this was already compiled from a (script) element template declaration. + // If not, then if tmpl is a template object, use it for options + options = options || (tmpl.markup + ? tmpl.bnds + ? $extend({}, tmpl) + : tmpl + : {} + ); + + options.tmplName = options.tmplName || name || "unnamed"; + if (parentTmpl) { + options._parentTmpl = parentTmpl; + } + // If tmpl is not a markup string or a selector string, then it must be a template object + // In that case, get it from the markup property of the object + if (!tmplOrMarkup && tmpl.markup && (tmplOrMarkup = lookupTemplate(tmpl.markup)) && tmplOrMarkup.fn) { + // If the string references a compiled template object, need to recompile to merge any modified options + tmplOrMarkup = tmplOrMarkup.markup; + } + if (tmplOrMarkup !== undefined) { + if (tmplOrMarkup.render || tmpl.render) { + // tmpl is already compiled, so use it + if (tmplOrMarkup.tmpls) { + compiledTmpl = tmplOrMarkup; + } + } else { + // tmplOrMarkup is a markup string, not a compiled template + // Create template object + tmpl = tmplObject(tmplOrMarkup, options); + // Compile to AST and then to compiled function + tmplFn(tmplOrMarkup.replace(rEscapeQuotes, "\\$&"), tmpl); + } + if (!compiledTmpl) { + compiledTmpl = $extend(function() { + return compiledTmpl.render.apply(compiledTmpl, arguments); + }, tmpl); + + compileChildResources(compiledTmpl); + } + return compiledTmpl; + } +} + +//==== /end of function compileTmpl ==== + +//================= +// compileViewModel +//================= + +function getDefaultVal(defaultVal, data) { + return $isFunction(defaultVal) + ? defaultVal.call(data) + : defaultVal; +} + +function addParentRef(ob, ref, parent) { + Object.defineProperty(ob, ref, { + value: parent, + configurable: true + }); +} + +function compileViewModel(name, type) { + var i, constructor, parent, + viewModels = this, + getters = type.getters, + extend = type.extend, + id = type.id, + proto = $.extend({ + _is: name || "unnamed", + unmap: unmap, + merge: merge + }, extend), + args = "", + cnstr = "", + getterCount = getters ? getters.length : 0, + $observable = $.observable, + getterNames = {}; + + function JsvVm(args) { + constructor.apply(this, args); + } + + function vm() { + return new JsvVm(arguments); + } + + function iterate(data, action) { + var getterType, defaultVal, prop, ob, parentRef, + j = 0; + for (; j < getterCount; j++) { + prop = getters[j]; + getterType = undefined; + if (prop + "" !== prop) { + getterType = prop; + prop = getterType.getter; + parentRef = getterType.parentRef; + } + if ((ob = data[prop]) === undefined && getterType && (defaultVal = getterType.defaultVal) !== undefined) { + ob = getDefaultVal(defaultVal, data); + } + action(ob, getterType && viewModels[getterType.type], prop, parentRef); + } + } + + function map(data) { + data = data + "" === data + ? JSON.parse(data) // Accept JSON string + : data; // or object/array + var l, prop, childOb, parentRef, + j = 0, + ob = data, + arr = []; + + if ($isArray(data)) { + data = data || []; + l = data.length; + for (; j tag. (Not worth adding perf cost) + tmpl.markup = $.trim(tmpl.markup); + } + + return tmpl; +} + +//============== +// registerStore +//============== + +/** +* Internal. Register a store type (used for template, tags, helpers, converters) +*/ +function registerStore(storeName, storeSettings) { + +/** +* Generic store() function to register item, named item, or hash of items +* Also used as hash to store the registered items +* Used as implementation of $.templates(), $.views.templates(), $.views.tags(), $.views.helpers() and $.views.converters() +* +* @param {string|hash} name name - or selector, in case of $.templates(). Or hash of items +* @param {any} [item] (e.g. markup for named template) +* @param {template} [parentTmpl] For item being registered as private resource of template +* @returns {any|$.views} item, e.g. compiled template - or $.views in case of registering hash of items +*/ + function theStore(name, item, parentTmpl) { + // The store is also the function used to add items to the store. e.g. $.templates, or $.views.tags + + // For store of name 'thing', Call as: + // $.views.things(items[, parentTmpl]), + // or $.views.things(name[, item, parentTmpl]) + + var compile, itemName, thisStore, cnt, + onStore = $sub.onStore[storeName]; + + if (name && typeof name === OBJECT && !name.nodeType && !name.markup && !name.getTgt && !(storeName === "viewModel" && name.getters || name.extend)) { + // Call to $.views.things(items[, parentTmpl]), + + // Adding items to the store + // If name is a hash, then item is parentTmpl. Iterate over hash and call store for key. + for (itemName in name) { + theStore(itemName, name[itemName], item); + } + return item || $views; + } + // Adding a single unnamed item to the store + if (name && "" + name !== name) { // name must be a string + parentTmpl = item; + item = name; + name = undefined; + } + thisStore = parentTmpl + ? storeName === "viewModel" + ? parentTmpl + : (parentTmpl[storeNames] = parentTmpl[storeNames] || {}) + : theStore; + compile = storeSettings.compile; + + if (item === undefined) { + item = compile ? name : thisStore[name]; + name = undefined; + } + if (item === null) { + // If item is null, delete this entry + if (name) { + delete thisStore[name]; + } + } else { + if (compile) { + item = compile.call(thisStore, name, item, parentTmpl, 0) || {}; + item._is = storeName; // Only do this for compiled objects (tags, templates...) + } + if (name) { + thisStore[name] = item; + } + } + if (onStore) { + // e.g. JsViews integration + onStore(name, item, parentTmpl, compile); + } + return item; + } + + var storeNames = storeName + "s"; + $views[storeNames] = theStore; +} + +/** +* Add settings such as: +* $.views.settings.allowCode(true) +* @param {boolean} value +* @returns {Settings} +* +* allowCode = $.views.settings.allowCode() +* @returns {boolean} +*/ +function addSetting(st) { + $viewsSettings[st] = $viewsSettings[st] || function(value) { + return arguments.length + ? ($subSettings[st] = value, $viewsSettings) + : $subSettings[st]; + }; +} + +//======================== +// dataMap for render only +//======================== + +function dataMap(mapDef) { + function Map(source, options) { + this.tgt = mapDef.getTgt(source, options); + options.map = this; + } + + if ($isFunction(mapDef)) { + // Simple map declared as function + mapDef = { + getTgt: mapDef + }; + } + + if (mapDef.baseMap) { + mapDef = $extend($extend({}, mapDef.baseMap), mapDef); + } + + mapDef.map = function(source, options) { + return new Map(source, options); + }; + return mapDef; +} + +//============== +// renderContent +//============== + +/** Render the template as a string, using the specified data and helpers/context +* $("#tmpl").render(), tmpl.render(), tagCtx.render(), $.render.namedTmpl() +* +* @param {any} data +* @param {hash} [context] helpers or context +* @param {boolean} [noIteration] +* @param {View} [parentView] internal +* @param {string} [key] internal +* @param {function} [onRender] internal +* @returns {string} rendered template internal +*/ +function renderContent(data, context, noIteration, parentView, key, onRender) { + var i, l, tag, tmpl, tagCtx, isTopRenderCall, prevData, prevIndex, + view = parentView, + result = ""; + + if (context === true) { + noIteration = context; // passing boolean as second param - noIteration + context = undefined; + } else if (typeof context !== OBJECT) { + context = undefined; // context must be a boolean (noIteration) or a plain object + } + + if (tag = this.tag) { + // This is a call from renderTag or tagCtx.render(...) + tagCtx = this; + view = view || tagCtx.view; + tmpl = view._getTmpl(tag.template || tagCtx.tmpl); + if (!arguments.length) { + data = tag.contentCtx && $isFunction(tag.contentCtx) + ? data = tag.contentCtx(data) + : view; // Default data context for wrapped block content is the first argument + } + } else { + // This is a template.render(...) call + tmpl = this; + } + + if (tmpl) { + if (!parentView && data && data._is === "view") { + view = data; // When passing in a view to render or link (and not passing in a parent view) use the passed-in view as parentView + } + + if (view && data === view) { + // Inherit the data from the parent view. + data = view.data; + } + + isTopRenderCall = !view; + isRenderCall = isRenderCall || isTopRenderCall; + if (isTopRenderCall) { + (context = context || {}).root = data; // Provide ~root as shortcut to top-level data. + } + if (!isRenderCall || $subSettingsAdvanced.useViews || tmpl.useViews || view && view !== topView) { + result = renderWithViews(tmpl, data, context, noIteration, view, key, onRender, tag); + } else { + if (view) { // In a block + prevData = view.data; + prevIndex = view.index; + view.index = indexStr; + } else { + view = topView; + prevData = view.data; + view.data = data; + view.ctx = context; + } + if ($isArray(data) && !noIteration) { + // Create a view for the array, whose child views correspond to each data item. (Note: if key and parentView are passed in + // along with parent view, treat as insert -e.g. from view.addViews - so parentView is already the view item for array) + for (i = 0, l = data.length; i < l; i++) { + view.index = i; + view.data = data[i]; + result += tmpl.fn(data[i], view, $sub); + } + } else { + view.data = data; + result += tmpl.fn(data, view, $sub); + } + view.data = prevData; + view.index = prevIndex; + } + if (isTopRenderCall) { + isRenderCall = undefined; + } + } + return result; +} + +function renderWithViews(tmpl, data, context, noIteration, view, key, onRender, tag) { + // Render template against data as a tree of subviews (nested rendered template instances), or as a string (top-level template). + // If the data is the parent view, treat as noIteration, re-render with the same data context. + // tmpl can be a string (e.g. rendered by a tag.render() method), or a compiled template. + var i, l, newView, childView, itemResult, swapContent, contentTmpl, outerOnRender, tmplName, itemVar, newCtx, tagCtx, noLinking, + result = ""; + + if (tag) { + // This is a call from renderTag or tagCtx.render(...) + tmplName = tag.tagName; + tagCtx = tag.tagCtx; + context = context ? extendCtx(context, tag.ctx) : tag.ctx; + + if (tmpl === view.content) { // {{xxx tmpl=#content}} + contentTmpl = tmpl !== view.ctx._wrp // We are rendering the #content + ? view.ctx._wrp // #content was the tagCtx.props.tmpl wrapper of the block content - so within this view, #content will now be the view.ctx._wrp block content + : undefined; // #content was the view.ctx._wrp block content - so within this view, there is no longer any #content to wrap. + } else if (tmpl !== tagCtx.content) { + if (tmpl === tag.template) { // Rendering {{tag}} tag.template, replacing block content. + contentTmpl = tagCtx.tmpl; // Set #content to block content (or wrapped block content if tagCtx.props.tmpl is set) + context._wrp = tagCtx.content; // Pass wrapped block content to nested views + } else { // Rendering tagCtx.props.tmpl wrapper + contentTmpl = tagCtx.content || view.content; // Set #content to wrapped block content + } + } else { + contentTmpl = view.content; // Nested views inherit same wrapped #content property + } + + if (tagCtx.props.link === false) { + // link=false setting on block tag + // We will override inherited value of link by the explicit setting link=false taken from props + // The child views of an unlinked view are also unlinked. So setting child back to true will not have any effect. + context = context || {}; + context.link = false; + } + } + + if (view) { + onRender = onRender || view._.onRender; + noLinking = context && context.link === false; + + if (noLinking && view._.nl) { + onRender = undefined; + } + + context = extendCtx(context, view.ctx); + tagCtx = !tag && view.tag + ? view.tag.tagCtxs[view.tagElse] + : tagCtx; + } + + if (itemVar = tagCtx && tagCtx.props.itemVar) { + if (itemVar[0] !== "~") { + syntaxError("Use itemVar='~myItem'"); + } + itemVar = itemVar.slice(1); + } + + if (key === true) { + swapContent = true; + key = 0; + } + + // If link===false, do not call onRender, so no data-linking marker nodes + if (onRender && tag && tag._.noVws) { + onRender = undefined; + } + outerOnRender = onRender; + if (onRender === true) { + // Used by view.refresh(). Don't create a new wrapper view. + outerOnRender = undefined; + onRender = view._.onRender; + } + // Set additional context on views created here, (as modified context inherited from the parent, and to be inherited by child views) + context = tmpl.helpers + ? extendCtx(tmpl.helpers, context) + : context; + + newCtx = context; + if ($isArray(data) && !noIteration) { + // Create a view for the array, whose child views correspond to each data item. (Note: if key and view are passed in + // along with parent view, treat as insert -e.g. from view.addViews - so view is already the view item for array) + newView = swapContent + ? view + : (key !== undefined && view) + || new View(context, "array", view, data, tmpl, key, onRender, contentTmpl); + newView._.nl= noLinking; + if (view && view._.useKey) { + // Parent is not an 'array view' + newView._.bnd = !tag || tag._.bnd && tag; // For array views that are data bound for collection change events, set the + // view._.bnd property to true for top-level link() or data-link="{for}", or to the tag instance for a data-bound tag, e.g. {^{for ...}} + newView.tag = tag; + } + for (i = 0, l = data.length; i < l; i++) { + // Create a view for each data item. + childView = new View(newCtx, "item", newView, data[i], tmpl, (key || 0) + i, onRender, newView.content); + if (itemVar) { + (childView.ctx = $extend({}, newCtx))[itemVar] = $sub._cp(data[i], "#data", childView); + } + itemResult = tmpl.fn(data[i], childView, $sub); + result += newView._.onRender ? newView._.onRender(itemResult, childView) : itemResult; + } + } else { + // Create a view for singleton data object. The type of the view will be the tag name, e.g. "if" or "mytag" except for + // "item", "array" and "data" views. A "data" view is from programmatic render(object) against a 'singleton'. + newView = swapContent ? view : new View(newCtx, tmplName || "data", view, data, tmpl, key, onRender, contentTmpl); + + if (itemVar) { + (newView.ctx = $extend({}, newCtx))[itemVar] = $sub._cp(data, "#data", newView); + } + + newView.tag = tag; + newView._.nl = noLinking; + result += tmpl.fn(data, newView, $sub); + } + if (tag) { + newView.tagElse = tagCtx.index; + tagCtx.contentView = newView; + } + return outerOnRender ? outerOnRender(result, newView) : result; +} + +//=========================== +// Build and compile template +//=========================== + +// Generate a reusable function that will serve to render a template against data +// (Compile AST then build template function) + +function onRenderError(e, view, fallback) { + var message = fallback !== undefined + ? $isFunction(fallback) + ? fallback.call(view.data, e, view) + : fallback || "" + : "{Error: " + (e.message||e) + "}"; + + if ($subSettings.onError && (fallback = $subSettings.onError.call(view.data, e, fallback && message, view)) !== undefined) { + message = fallback; // There is a settings.debugMode(handler) onError override. Call it, and use return value (if any) to replace message + } + return view && !view._lc ? $converters.html(message) : message; // For data-link=\"{... onError=...}"... See onDataLinkedTagChange +} + +function error(message) { + throw new $sub.Err(message); +} + +function syntaxError(message) { + error("Syntax error\n" + message); +} + +function tmplFn(markup, tmpl, isLinkExpr, convertBack, hasElse) { + // Compile markup to AST (abtract syntax tree) then build the template function code from the AST nodes + // Used for compiling templates, and also by JsViews to build functions for data link expressions + + //==== nested functions ==== + function pushprecedingContent(shift) { + shift -= loc; + if (shift) { + content.push(markup.substr(loc, shift).replace(rNewLine, "\\n")); + } + } + + function blockTagCheck(tagName, block) { + if (tagName) { + tagName += '}}'; + // '{{include}} block has {{/for}} with no open {{for}}' + syntaxError(( + block + ? '{{' + block + '}} block has {{/' + tagName + ' without {{' + tagName + : 'Unmatched or missing {{/' + tagName) + ', in template:\n' + markup); + } + } + + function parseTag(all, bind, tagName, converter, colon, html, codeTag, params, slash, bind2, closeBlock, index) { +/* + + bind tagName cvt cln html code params slash bind2 closeBlk comment +/(?:{(\^)?{(?:(\w+(?=[\/\s}]))|(\w+)?(:)|(>)|(\*))\s*((?:[^}]|}(?!}))*?)(\/)?|{(\^)?{(?:(?:\/(\w+))\s*|!--[\s\S]*?--))}}/g + +(?: + {(\^)?{ bind + (?: + (\w+ tagName + (?=[\/\s}]) + ) + | + (\w+)?(:) converter colon + | + (>) html + | + (\*) codeTag + ) + \s* + ( params + (?:[^}]|}(?!}))*? + ) + (\/)? slash + | + {(\^)?{ bind2 + (?: + (?:\/(\w+))\s* closeBlock + | + !--[\s\S]*?-- comment + ) +) +}}/g + +*/ + if (codeTag && bind || slash && !tagName || params && params.slice(-1) === ":" || bind2) { + syntaxError(all); + } + + // Build abstract syntax tree (AST): [tagName, converter, params, content, hash, bindings, contentMarkup] + if (html) { + colon = ":"; + converter = HTML; + } + slash = slash || isLinkExpr && !hasElse; + + var late, openTagName, isLateOb, + pathBindings = (bind || isLinkExpr) && [[]], // pathBindings is an array of arrays for arg bindings and a hash of arrays for prop bindings + props = "", + args = "", + ctxProps = "", + paramsArgs = "", + paramsProps = "", + paramsCtxProps = "", + onError = "", + useTrigger = "", + // Block tag if not self-closing and not {{:}} or {{>}} (special case) and not a data-link expression + block = !slash && !colon; + + //==== nested helper function ==== + tagName = tagName || (params = params || "#data", colon); // {{:}} is equivalent to {{:#data}} + pushprecedingContent(index); + loc = index + all.length; // location marker - parsed up to here + if (codeTag) { + if (allowCode) { + content.push(["*", "\n" + params.replace(/^:/, "ret+= ").replace(rUnescapeQuotes, "$1") + ";\n"]); + } + } else if (tagName) { + if (tagName === "else") { + if (rTestElseIf.test(params)) { + syntaxError('For "{{else if expr}}" use "{{else expr}}"'); + } + pathBindings = current[9] && [[]]; + current[10] = markup.substring(current[10], index); // contentMarkup for block tag + openTagName = current[11] || current[0] || syntaxError("Mismatched: " + all); + // current[0] is tagName, but for {{else}} nodes, current[11] is tagName of preceding open tag + current = stack.pop(); + content = current[2]; + block = true; + } + if (params) { + // remove newlines from the params string, to avoid compiled code errors for unterminated strings + parseParams(params.replace(rNewLine, " "), pathBindings, tmpl, isLinkExpr) + .replace(rBuildHash, function(all, onerror, isCtxPrm, key, keyToken, keyValue, arg, param) { + if (key === "this:") { + keyValue = "undefined"; // this=some.path is always a to parameter (one-way), so don't need to compile/evaluate some.path initialization + } + if (param) { + isLateOb = isLateOb || param[0] === "@"; + } + key = "'" + keyToken + "':"; + if (arg) { + args += isCtxPrm + keyValue + ","; + paramsArgs += "'" + param + "',"; + } else if (isCtxPrm) { // Contextual parameter, ~foo=expr + ctxProps += key + 'j._cp(' + keyValue + ',"' + param + '",view),'; + // Compiled code for evaluating tagCtx on a tag will have: ctx:{'foo':j._cp(compiledExpr, "expr", view)} + paramsCtxProps += key + "'" + param + "',"; + } else if (onerror) { + onError += keyValue; + } else { + if (keyToken === "trigger") { + useTrigger += keyValue; + } + if (keyToken === "lateRender") { + late = param !== "false"; // Render after first pass + } + props += key + keyValue + ","; + paramsProps += key + "'" + param + "',"; + hasHandlers = hasHandlers || rHasHandlers.test(keyToken); + } + return ""; + }).slice(0, -1); + } + + if (pathBindings && pathBindings[0]) { + pathBindings.pop(); // Remove the binding that was prepared for next arg. (There is always an extra one ready). + } + + newNode = [ + tagName, + converter || !!convertBack || hasHandlers || "", + block && [], + parsedParam(paramsArgs || (tagName === ":" ? "'#data'," : ""), paramsProps, paramsCtxProps), // {{:}} equivalent to {{:#data}} + parsedParam(args || (tagName === ":" ? "data," : ""), props, ctxProps), + onError, + useTrigger, + late, + isLateOb, + pathBindings || 0 + ]; + content.push(newNode); + if (block) { + stack.push(current); + current = newNode; + current[10] = loc; // Store current location of open tag, to be able to add contentMarkup when we reach closing tag + current[11] = openTagName; // Used for checking syntax (matching close tag) + } + } else if (closeBlock) { + blockTagCheck(closeBlock !== current[0] && closeBlock !== current[11] && closeBlock, current[0]); // Check matching close tag name + current[10] = markup.substring(current[10], index); // contentMarkup for block tag + current = stack.pop(); + } + blockTagCheck(!current && closeBlock); + content = current[2]; + } + //==== /end of nested functions ==== + + var i, result, newNode, hasHandlers, bindings, + allowCode = $subSettings.allowCode || tmpl && tmpl.allowCode + || $viewsSettings.allowCode === true, // include direct setting of settings.allowCode true for backward compat only + astTop = [], + loc = 0, + stack = [], + content = astTop, + current = [,,astTop]; + + if (allowCode && tmpl._is) { + tmpl.allowCode = allowCode; + } + +//TODO result = tmplFnsCache[markup]; // Only cache if template is not named and markup length < ..., +//and there are no bindings or subtemplates?? Consider standard optimization for data-link="a.b.c" +// if (result) { +// tmpl.fn = result; +// } else { + +// result = markup; + if (isLinkExpr) { + if (convertBack !== undefined) { + markup = markup.slice(0, -convertBack.length - 2) + delimCloseChar0; + } + markup = delimOpenChar0 + markup + delimCloseChar1; + } + + blockTagCheck(stack[0] && stack[0][2].pop()[0]); + // Build the AST (abstract syntax tree) under astTop + markup.replace(rTag, parseTag); + + pushprecedingContent(markup.length); + + if (loc = astTop[astTop.length - 1]) { + blockTagCheck("" + loc !== loc && (+loc[10] === loc[10]) && loc[0]); + } +// result = tmplFnsCache[markup] = buildCode(astTop, tmpl); +// } + + if (isLinkExpr) { + result = buildCode(astTop, markup, isLinkExpr); + bindings = []; + i = astTop.length; + while (i--) { + bindings.unshift(astTop[i][9]); // With data-link expressions, pathBindings array for tagCtx[i] is astTop[i][9] + } + setPaths(result, bindings); + } else { + result = buildCode(astTop, tmpl); + } + return result; +} + +function setPaths(fn, pathsArr) { + var key, paths, + i = 0, + l = pathsArr.length; + fn.deps = []; + fn.paths = []; // The array of path binding (array/dictionary)s for each tag/else block's args and props + for (; i < l; i++) { + fn.paths.push(paths = pathsArr[i]); + for (key in paths) { + if (key !== "_jsvto" && paths.hasOwnProperty(key) && paths[key].length && !paths[key].skp) { + fn.deps = fn.deps.concat(paths[key]); // deps is the concatenation of the paths arrays for the different bindings + } + } + } +} + +function parsedParam(args, props, ctx) { + return [args.slice(0, -1), props.slice(0, -1), ctx.slice(0, -1)]; +} + +function paramStructure(paramCode, paramVals) { + return '\n\tparams:{args:[' + paramCode[0] + '],\n\tprops:{' + paramCode[1] + '}' + + (paramCode[2] ? ',\n\tctx:{' + paramCode[2] + '}' : "") + + '},\n\targs:[' + paramVals[0] + '],\n\tprops:{' + paramVals[1] + '}' + + (paramVals[2] ? ',\n\tctx:{' + paramVals[2] + '}' : ""); +} + +function parseParams(params, pathBindings, tmpl, isLinkExpr) { + + function parseTokens(all, lftPrn0, lftPrn, bound, path, operator, err, eq, path2, late, prn, + comma, lftPrn2, apos, quot, rtPrn, rtPrnDot, prn2, space, index, full) { + // /(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(~?[\w$.^]+)?\s*((\+\+|--)|\+|-|~(?![\w$])|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?(@)?[#~]?[\w$.^]+)([([])?)|(,\s*)|(?:(\()\s*)?\\?(?:(')|("))|(?:\s*(([)\]])(?=[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g, + //lftPrn0 lftPrn bound path operator err eq path2 late prn comma lftPrn2 apos quot rtPrn rtPrnDot prn2 space + // (left paren? followed by (path? followed by operator) or (path followed by paren?)) or comma or apos or quot or right paren or space + + function parsePath(allPath, not, object, helper, view, viewProperty, pathTokens, leafToken) { + // /^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g, + // not object helper view viewProperty pathTokens leafToken + subPath = object === "."; + if (object) { + path = path.slice(not.length); + if (/^\.?constructor$/.test(leafToken||path)) { + syntaxError(allPath); + } + if (!subPath) { + allPath = (late // late path @a.b.c: not throw on 'property of undefined' if a undefined, and will use _getOb() after linking to resolve late. + ? (isLinkExpr ? '' : '(ltOb.lt=ltOb.lt||') + '(ob=' + : "" + ) + + (helper + ? 'view.ctxPrm("' + helper + '")' + : view + ? "view" + : "data") + + (late + ? ')===undefined' + (isLinkExpr ? '' : ')') + '?"":view._getOb(ob,"' + : "" + ) + + (leafToken + ? (viewProperty + ? "." + viewProperty + : helper + ? "" + : (view ? "" : "." + object) + ) + (pathTokens || "") + : (leafToken = helper ? "" : view ? viewProperty || "" : object, "")); + allPath = allPath + (leafToken ? "." + leafToken : ""); + + allPath = not + (allPath.slice(0, 9) === "view.data" + ? allPath.slice(5) // convert #view.data... to data... + : allPath) + + (late + ? (isLinkExpr ? '"': '",ltOb') + (prn ? ',1)':')') + : "" + ); + } + if (bindings) { + binds = named === "_linkTo" ? (bindto = pathBindings._jsvto = pathBindings._jsvto || []) : bndCtx.bd; + if (theOb = subPath && binds[binds.length-1]) { + if (theOb._cpfn) { // Computed property exprOb + while (theOb.sb) { + theOb = theOb.sb; + } + if (theOb.prm) { + if (theOb.bnd) { + path = "^" + path.slice(1); + } + theOb.sb = path; + theOb.bnd = theOb.bnd || path[0] === "^"; + } + } + } else { + binds.push(path); + } + if (prn && !subPath) { + pathStart[fnDp] = ind; + compiledPathStart[fnDp] = compiledPath[fnDp].length; + } + } + } + return allPath; + } + + //bound = bindings && bound; + if (bound && !eq) { + path = bound + path; // e.g. some.fn(...)^some.path - so here path is "^some.path" + } + operator = operator || ""; + lftPrn2 = lftPrn2 || ""; + lftPrn = lftPrn || lftPrn0 || lftPrn2; + path = path || path2; + + if (late && (late = !/\)|]/.test(full[index-1]))) { + path = path.slice(1).split(".").join("^"); // Late path @z.b.c. Use "^" rather than "." to ensure that deep binding will be used + } + // Could do this - but not worth perf cost?? :- + // if (!path.lastIndexOf("#data.", 0)) { path = path.slice(6); } // If path starts with "#data.", remove that. + prn = prn || prn2 || ""; + var expr, binds, theOb, newOb, subPath, lftPrnFCall, ret, + ind = index; + + if (!aposed && !quoted) { + if (err) { + syntaxError(params); + } + if (rtPrnDot && bindings) { + // This is a binding to a path in which an object is returned by a helper/data function/expression, e.g. foo()^x.y or (a?b:c)^x.y + // We create a compiled function to get the object instance (which will be called when the dependent data of the subexpression changes, + // to return the new object, and trigger re-binding of the subsequent path) + expr = pathStart[fnDp-1]; + if (full.length - 1 > ind - (expr || 0)) { // We need to compile a subexpression + expr = $.trim(full.slice(expr, ind + all.length)); + binds = bindto || bndStack[fnDp-1].bd; + // Insert exprOb object, to be used during binding to return the computed object + theOb = binds[binds.length-1]; + if (theOb && theOb.prm) { + while (theOb.sb && theOb.sb.prm) { + theOb = theOb.sb; + } + newOb = theOb.sb = {path: theOb.sb, bnd: theOb.bnd}; + } else { + binds.push(newOb = {path: binds.pop()}); // Insert exprOb object, to be used during binding to return the computed object + } + if (theOb && theOb.sb === newOb) { + compiledPath[fnDp] = compiledPath[fnDp-1].slice(theOb._cpPthSt) + compiledPath[fnDp]; + compiledPath[fnDp-1] = compiledPath[fnDp-1].slice(0, theOb._cpPthSt); + } + newOb._cpPthSt = compiledPathStart[fnDp-1]; + newOb._cpKey = expr; + + compiledPath[fnDp] += full.slice(prevIndex, index); + prevIndex = index; + + newOb._cpfn = cpFnStore[expr] = cpFnStore[expr] || // Compiled function for computed value: get from store, or compile and store + new Function("data,view,j", // Compiled function for computed value in template + "//" + expr + "\nvar v;\nreturn ((v=" + compiledPath[fnDp] + (rtPrn === "]" ? ")]" : rtPrn) + ")!=null?v:null);"); + + compiledPath[fnDp-1] += (fnCall[prnDp] && $subSettingsAdvanced.cache ? "view.getCache(\"" + expr.replace(rEscapeQuotes, "\\$&") + "\"" : compiledPath[fnDp]); + + newOb.prm = bndCtx.bd; + newOb.bnd = newOb.bnd || newOb.path && newOb.path.indexOf("^") >= 0; + } + compiledPath[fnDp] = ""; + } + if (prn === "[") { + prn = "[j._sq("; + } + if (lftPrn === "[") { + lftPrn = "[j._sq("; + } + } + ret = (aposed + // within single-quoted string + ? (aposed = !apos, (aposed ? all : lftPrn2 + '"')) + : quoted + // within double-quoted string + ? (quoted = !quot, (quoted ? all : lftPrn2 + '"')) + : + ( + (lftPrn + ? ( + prnStack[++prnDp] = true, + prnInd[prnDp] = 0, + bindings && ( + pathStart[fnDp++] = ind++, + bndCtx = bndStack[fnDp] = {bd: []}, + compiledPath[fnDp] = "", + compiledPathStart[fnDp] = 1 + ), + lftPrn) // Left paren, (not a function call paren) + : "") + + (space + ? (prnDp + ? "" // A space within parens or within function call parens, so not a separator for tag args + // New arg or prop - so insert backspace \b (\x08) as separator for named params, used subsequently by rBuildHash, and prepare new bindings array + : (paramIndex = full.slice(paramIndex, ind), named + ? (named = boundName = bindto = false, "\b") + : "\b,") + paramIndex + (paramIndex = ind + all.length, bindings && pathBindings.push(bndCtx.bd = []), "\b") + ) + : eq + // named param. Remove bindings for arg and create instead bindings array for prop + ? (fnDp && syntaxError(params), bindings && pathBindings.pop(), named = "_" + path, boundName = bound, paramIndex = ind + all.length, + bindings && ((bindings = bndCtx.bd = pathBindings[named] = []), bindings.skp = !bound), path + ':') + : path + // path + ? (path.split("^").join(".").replace($sub.rPath, parsePath) + + (prn || operator) + ) + : operator + // operator + ? operator + : rtPrn + // function + ? rtPrn === "]" ? ")]" : ")" + : comma + ? (fnCall[prnDp] || syntaxError(params), ",") // We don't allow top-level literal arrays or objects + : lftPrn0 + ? "" + : (aposed = apos, quoted = quot, '"') + )) + ); + + if (!aposed && !quoted) { + if (rtPrn) { + fnCall[prnDp] = false; + prnDp--; + } + } + + if (bindings) { + if (!aposed && !quoted) { + if (rtPrn) { + if (prnStack[prnDp+1]) { + bndCtx = bndStack[--fnDp]; + prnStack[prnDp+1] = false; + } + prnStart = prnInd[prnDp+1]; + } + if (prn) { + prnInd[prnDp+1] = compiledPath[fnDp].length + (lftPrn ? 1 : 0); + if (path || rtPrn) { + bndCtx = bndStack[++fnDp] = {bd: []}; + prnStack[prnDp+1] = true; + } + } + } + + compiledPath[fnDp] = (compiledPath[fnDp]||"") + full.slice(prevIndex, index); + prevIndex = index+all.length; + + if (!aposed && !quoted) { + if (lftPrnFCall = lftPrn && prnStack[prnDp+1]) { + compiledPath[fnDp-1] += lftPrn; + compiledPathStart[fnDp-1]++; + } + if (prn === "(" && subPath && !newOb) { + compiledPath[fnDp] = compiledPath[fnDp-1].slice(prnStart) + compiledPath[fnDp]; + compiledPath[fnDp-1] = compiledPath[fnDp-1].slice(0, prnStart); + } + } + compiledPath[fnDp] += lftPrnFCall ? ret.slice(1) : ret; + } + + if (!aposed && !quoted && prn) { + prnDp++; + if (path && prn === "(") { + fnCall[prnDp] = true; + } + } + + if (!aposed && !quoted && prn2) { + if (bindings) { + compiledPath[fnDp] += prn; + } + ret += prn; + } + return ret; + } + + var named, bindto, boundName, result, + quoted, // boolean for string content in double quotes + aposed, // or in single quotes + bindings = pathBindings && pathBindings[0], // bindings array for the first arg + bndCtx = {bd: bindings}, + bndStack = {0: bndCtx}, + paramIndex = 0, // list, + // The following are used for tracking path parsing including nested paths, such as "a.b(c^d + (e))^f", and chained computed paths such as + // "a.b().c^d().e.f().g" - which has four chained paths, "a.b()", "^c.d()", ".e.f()" and ".g" + prnDp = 0, // For tracking paren depth (not function call parens) + fnDp = 0, // For tracking depth of function call parens + prnInd = {}, // We are in a function call + prnStart = 0, // tracks the start of the current path such as c^d() in the above example + prnStack = {}, // tracks parens which are not function calls, and so are associated with new bndStack contexts + fnCall = {}, // We are in a function call + pathStart = {},// tracks the start of the current path such as c^d() in the above example + compiledPathStart = {0: 0}, + compiledPath = {0:""}, + prevIndex = 0; + + if (params[0] === "@") { + params = params.replace(rBracketQuote, "."); + } + result = (params + (tmpl ? " " : "")).replace($sub.rPrm, parseTokens); + + if (bindings) { + result = compiledPath[0]; + } + + return !prnDp && result || syntaxError(params); // Syntax error if unbalanced parens in params expression +} + +function buildCode(ast, tmpl, isLinkExpr) { + // Build the template function code from the AST nodes, and set as property on the passed-in template object + // Used for compiling templates, and also by JsViews to build functions for data link expressions + var i, node, tagName, converter, tagCtx, hasTag, hasEncoder, getsVal, hasCnvt, useCnvt, tmplBindings, pathBindings, params, boundOnErrStart, + boundOnErrEnd, tagRender, nestedTmpls, tmplName, nestedTmpl, tagAndElses, content, markup, nextIsElse, oldCode, isElse, isGetVal, tagCtxFn, + onError, tagStart, trigger, lateRender, retStrOpen, retStrClose, + tmplBindingKey = 0, + useViews = $subSettingsAdvanced.useViews || tmpl.useViews || tmpl.tags || tmpl.templates || tmpl.helpers || tmpl.converters, + code = "", + tmplOptions = {}, + l = ast.length; + + if ("" + tmpl === tmpl) { + tmplName = isLinkExpr ? 'data-link="' + tmpl.replace(rNewLine, " ").slice(1, -1) + '"' : tmpl; + tmpl = 0; + } else { + tmplName = tmpl.tmplName || "unnamed"; + if (tmpl.allowCode) { + tmplOptions.allowCode = true; + } + if (tmpl.debug) { + tmplOptions.debug = true; + } + tmplBindings = tmpl.bnds; + nestedTmpls = tmpl.tmpls; + } + for (i = 0; i < l; i++) { + // AST nodes: [0: tagName, 1: converter, 2: content, 3: params, 4: code, 5: onError, 6: trigger, 7:pathBindings, 8: contentMarkup] + node = ast[i]; + + // Add newline for each callout to t() c() etc. and each markup string + if ("" + node === node) { + // a markup string to be inserted + code += '+"' + node + '"'; + } else { + // a compiled tag expression to be inserted + tagName = node[0]; + if (tagName === "*") { + // Code tag: {{* }} + code += ";\n" + node[1] + "\nret=ret"; + } else { + converter = node[1]; + content = !isLinkExpr && node[2]; + tagCtx = paramStructure(node[3], params = node[4]); + trigger = node[6]; + lateRender = node[7]; + if (node[8]) { // latePath @a.b.c or @~a.b.c + retStrOpen = "\nvar ob,ltOb={},ctxs="; + retStrClose = ";\nctxs.lt=ltOb.lt;\nreturn ctxs;"; + } else { + retStrOpen = "\nreturn "; + retStrClose = ""; + } + markup = node[10] && node[10].replace(rUnescapeQuotes, "$1"); + if (isElse = tagName === "else") { + if (pathBindings) { + pathBindings.push(node[9]); + } + } else { + onError = node[5] || $subSettings.debugMode !== false && "undefined"; // If debugMode not false, set default onError handler on tag to "undefined" (see onRenderError) + if (tmplBindings && (pathBindings = node[9])) { // Array of paths, or false if not data-bound + pathBindings = [pathBindings]; + tmplBindingKey = tmplBindings.push(1); // Add placeholder in tmplBindings for compiled function + } + } + useViews = useViews || params[1] || params[2] || pathBindings || /view.(?!index)/.test(params[0]); + // useViews is for perf optimization. For render() we only use views if necessary - for the more advanced scenarios. + // We use views if there are props, contextual properties or args with #... (other than #index) - but you can force + // using the full view infrastructure, (and pay a perf price) by opting in: Set useViews: true on the template, manually... + if (isGetVal = tagName === ":") { + if (converter) { + tagName = converter === HTML ? ">" : converter + tagName; + } + } else { + if (content) { // TODO optimize - if content.length === 0 or if there is a tmpl="..." specified - set content to null / don't run this compilation code - since content won't get used!! + // Create template object for nested template + nestedTmpl = tmplObject(markup, tmplOptions); + nestedTmpl.tmplName = tmplName + "/" + tagName; + // Compile to AST and then to compiled function + nestedTmpl.useViews = nestedTmpl.useViews || useViews; + buildCode(content, nestedTmpl); + useViews = nestedTmpl.useViews; + nestedTmpls.push(nestedTmpl); + } + + if (!isElse) { + // This is not an else tag. + tagAndElses = tagName; + useViews = useViews || tagName && (!$tags[tagName] || !$tags[tagName].flow); + // Switch to a new code string for this bound tag (and its elses, if it has any) - for returning the tagCtxs array + oldCode = code; + code = ""; + } + nextIsElse = ast[i + 1]; + nextIsElse = nextIsElse && nextIsElse[0] === "else"; + } + tagStart = onError ? ";\ntry{\nret+=" : "\n+"; + boundOnErrStart = ""; + boundOnErrEnd = ""; + + if (isGetVal && (pathBindings || trigger || converter && converter !== HTML || lateRender)) { + // For convertVal we need a compiled function to return the new tagCtx(s) + tagCtxFn = new Function("data,view,j", "// " + tmplName + " " + (++tmplBindingKey) + " " + tagName + + retStrOpen + "{" + tagCtx + "};" + retStrClose); + tagCtxFn._er = onError; + tagCtxFn._tag = tagName; + tagCtxFn._bd = !!pathBindings; // data-linked tag {^{.../}} + tagCtxFn._lr = lateRender; + + if (isLinkExpr) { + return tagCtxFn; + } + + setPaths(tagCtxFn, pathBindings); + tagRender = 'c("' + converter + '",view,'; + useCnvt = true; + boundOnErrStart = tagRender + tmplBindingKey + ","; + boundOnErrEnd = ")"; + } + code += (isGetVal + ? (isLinkExpr ? (onError ? "try{\n" : "") + "return " : tagStart) + (useCnvt // Call _cnvt if there is a converter: {{cnvt: ... }} or {^{cnvt: ... }} + ? (useCnvt = undefined, useViews = hasCnvt = true, tagRender + (tagCtxFn + ? ((tmplBindings[tmplBindingKey - 1] = tagCtxFn), tmplBindingKey) // Store the compiled tagCtxFn in tmpl.bnds, and pass the key to convertVal() + : "{" + tagCtx + "}") + ")") + : tagName === ">" + ? (hasEncoder = true, "h(" + params[0] + ")") + : (getsVal = true, "((v=" + params[0] + ')!=null?v:' + (isLinkExpr ? 'null)' : '"")')) + // Non strict equality so data-link="title{:expr}" with expr=null/undefined removes title attribute + ) + : (hasTag = true, "\n{view:view,content:false,tmpl:" // Add this tagCtx to the compiled code for the tagCtxs to be passed to renderTag() + + (content ? nestedTmpls.length : "false") + "," // For block tags, pass in the key (nestedTmpls.length) to the nested content template + + tagCtx + "},")); + + if (tagAndElses && !nextIsElse) { + // This is a data-link expression or an inline tag without any elses, or the last {{else}} of an inline tag + // We complete the code for returning the tagCtxs array + code = "[" + code.slice(0, -1) + "]"; + tagRender = 't("' + tagAndElses + '",view,this,'; + if (isLinkExpr || pathBindings) { + // This is a bound tag (data-link expression or inline bound tag {^{tag ...}}) so we store a compiled tagCtxs function in tmp.bnds + code = new Function("data,view,j", " // " + tmplName + " " + tmplBindingKey + " " + tagAndElses + retStrOpen + code + + retStrClose); + code._er = onError; + code._tag = tagAndElses; + if (pathBindings) { + setPaths(tmplBindings[tmplBindingKey - 1] = code, pathBindings); + } + code._lr = lateRender; + if (isLinkExpr) { + return code; // For a data-link expression we return the compiled tagCtxs function + } + boundOnErrStart = tagRender + tmplBindingKey + ",undefined,"; + boundOnErrEnd = ")"; + } + + // This is the last {{else}} for an inline tag. + // For a bound tag, pass the tagCtxs fn lookup key to renderTag. + // For an unbound tag, include the code directly for evaluating tagCtxs array + code = oldCode + tagStart + tagRender + (pathBindings && tmplBindingKey || code) + ")"; + pathBindings = 0; + tagAndElses = 0; + } + if (onError && !nextIsElse) { + useViews = true; + code += ';\n}catch(e){ret' + (isLinkExpr ? "urn " : "+=") + boundOnErrStart + 'j._err(e,view,' + onError + ')' + boundOnErrEnd + ';}' + (isLinkExpr ? "" : '\nret=ret'); + } + } + } + } + // Include only the var references that are needed in the code + code = "// " + tmplName + + (tmplOptions.debug ? "\ndebugger;" : "") + + "\nvar v" + + (hasTag ? ",t=j._tag" : "") // has tag + + (hasCnvt ? ",c=j._cnvt" : "") // converter + + (hasEncoder ? ",h=j._html" : "") // html converter + + (isLinkExpr + ? (node[8] // late @... path? + ? ", ob" + : "" + ) + ";\n" + : ',ret=""') + + code + + (isLinkExpr ? "\n" : ";\nreturn ret;"); + + try { + code = new Function("data,view,j", code); + } catch (e) { + syntaxError("Compiled template code:\n\n" + code + '\n: "' + (e.message||e) + '"'); + } + if (tmpl) { + tmpl.fn = code; + tmpl.useViews = !!useViews; + } + return code; +} + +//========== +// Utilities +//========== + +// Merge objects, in particular contexts which inherit from parent contexts +function extendCtx(context, parentContext) { + // Return copy of parentContext, unless context is defined and is different, in which case return a new merged context + // If neither context nor parentContext are defined, return undefined + return context && context !== parentContext + ? (parentContext + ? $extend($extend({}, parentContext), context) + : context) + : parentContext && $extend({}, parentContext); +} + +function getTargetProps(source, tagCtx) { + // this pointer is theMap - which has tagCtx.props too + // arguments: tagCtx.args. + var key, prop, + map = tagCtx.map, + propsArr = map && map.propsArr; + + if (!propsArr) { // map.propsArr is the full array of {key:..., prop:...} objects + propsArr = []; + if (typeof source === OBJECT || $isFunction(source)) { + for (key in source) { + prop = source[key]; + if (key !== $expando && source.hasOwnProperty(key) && (!tagCtx.props.noFunctions || !$.isFunction(prop))) { + propsArr.push({key: key, prop: prop}); + } + } + } + if (map) { + map.propsArr = map.options && propsArr; // If bound {^{props}} and not isRenderCall, store propsArr on map (map.options is defined only for bound, && !isRenderCall) + } + } + return getTargetSorted(propsArr, tagCtx); // Obtains map.tgt, by filtering, sorting and splicing the full propsArr +} + +function getTargetSorted(value, tagCtx) { + // getTgt + var mapped, start, end, + tag = tagCtx.tag, + props = tagCtx.props, + propParams = tagCtx.params.props, + filter = props.filter, + sort = props.sort, + directSort = sort === true, + step = parseInt(props.step), + reverse = props.reverse ? -1 : 1; + + if (!$isArray(value)) { + return value; + } + if (directSort || sort && "" + sort === sort) { + // Temporary mapped array holds objects with index and sort-value + mapped = value.map(function(item, i) { + item = directSort ? item : getPathObject(item, sort); + return {i: i, v: "" + item === item ? item.toLowerCase() : item}; + }); + // Sort mapped array + mapped.sort(function(a, b) { + return a.v > b.v ? reverse : a.v < b.v ? -reverse : 0; + }); + // Map to new array with resulting order + value = mapped.map(function(item){ + return value[item.i]; + }); + } else if ((sort || reverse < 0) && !tag.dataMap) { + value = value.slice(); // Clone array first if not already a new array + } + if ($isFunction(sort)) { + value = value.sort(function() { // Wrap the sort function to provide tagCtx as 'this' pointer + return sort.apply(tagCtx, arguments); + }); + } + if (reverse < 0 && (!sort || $isFunction(sort))) { // Reverse result if not already reversed in sort + value = value.reverse(); + } + + if (value.filter && filter) { // IE8 does not support filter + value = value.filter(filter, tagCtx); + if (tagCtx.tag.onFilter) { + tagCtx.tag.onFilter(tagCtx); + } + } + + if (propParams.sorted) { + mapped = (sort || reverse < 0) ? value : value.slice(); + if (tag.sorted) { + $.observable(tag.sorted).refresh(mapped); // Note that this might cause the start and end props to be modified - e.g. by pager tag control + } else { + tagCtx.map.sorted = mapped; + } + } + + start = props.start; // Get current value - after possible changes triggered by tag.sorted refresh() above + end = props.end; + if (propParams.start && start === undefined || propParams.end && end === undefined) { + start = end = 0; + } + if (!isNaN(start) || !isNaN(end)) { // start or end specified, but not the auto-create Number array scenario of {{for start=xxx end=yyy}} + start = +start || 0; + end = end === undefined || end > value.length ? value.length : +end; + value = value.slice(start, end); + } + if (step > 1) { + start = 0; + end = value.length; + mapped = []; + for (; start & ' " ` etc. by corresponding entities. + return text != undefined ? rIsHtml.test(text) && ("" + text).replace(rHtmlEncode, getCharEntity) || text : ""; +} + +function dataEncode(text) { + // Encode just < > and & - intended for 'safe data' along with {{:}} rather than {{>}} + return "" + text === text ? text.replace(rDataEncode, getCharEntity) : text; +} + +function dataUnencode(text) { + // Unencode just < > and & - intended for 'safe data' along with {{:}} rather than {{>}} + return "" + text === text ? text.replace(rDataUnencode, getCharFromEntity) : text; +} + +//========================== Initialize ========================== + +$sub = $views.sub; +$viewsSettings = $views.settings; + +if (!(jsr || $ && $.render)) { + // JsRender/JsViews not already loaded (or loaded without jQuery, and we are now moving from jsrender namespace to jQuery namepace) + for (jsvStoreName in jsvStores) { + registerStore(jsvStoreName, jsvStores[jsvStoreName]); + } + + $converters = $views.converters; + $helpers = $views.helpers; + $tags = $views.tags; + + $sub._tg.prototype = { + baseApply: baseApply, + cvtArgs: convertArgs, + bndArgs: convertBoundArgs, + ctxPrm: contextParameter + }; + + topView = $sub.topView = new View(); + + //BROWSER-SPECIFIC CODE + if ($) { + + //////////////////////////////////////////////////////////////////////////////////////////////// + // jQuery (= $) is loaded + + $.fn.render = $fnRender; + $expando = $.expando; + if ($.observable) { + if (versionNumber !== (versionNumber = $.views.jsviews)) { + // Different version of jsRender was loaded + throw "jquery.observable.js requires jsrender.js " + versionNumber; + } + $extend($sub, $.views.sub); // jquery.observable.js was loaded before jsrender.js + $views.map = $.views.map; + } + + } else { + //////////////////////////////////////////////////////////////////////////////////////////////// + // jQuery is not loaded. + + $ = {}; + + if (setGlobals) { + global.jsrender = $; // We are loading jsrender.js from a script element, not AMD or CommonJS, so set global + } + + // Error warning if jsrender.js is used as template engine on Node.js (e.g. Express or Hapi...) + // Use jsrender-node.js instead... + $.renderFile = $.__express = $.compile = function() { throw "Node.js: use npm jsrender, or jsrender-node.js"; }; + + //END BROWSER-SPECIFIC CODE + $.isFunction = function(ob) { + return typeof ob === "function"; + }; + + $.isArray = Array.isArray || function(obj) { + return ({}.toString).call(obj) === "[object Array]"; + }; + + $sub._jq = function(jq) { // private method to move from JsRender APIs from jsrender namespace to jQuery namespace + if (jq !== $) { + $extend(jq, $); // map over from jsrender namespace to jQuery namespace + $ = jq; + $.fn.render = $fnRender; + delete $.jsrender; + $expando = $.expando; + } + }; + + $.jsrender = versionNumber; + } + $subSettings = $sub.settings; + $subSettings.allowCode = false; + $isFunction = $.isFunction; + $.render = $render; + $.views = $views; + $.templates = $templates = $views.templates; + + for (setting in $subSettings) { + addSetting(setting); + } + + /** + * $.views.settings.debugMode(true) + * @param {boolean} debugMode + * @returns {Settings} + * + * debugMode = $.views.settings.debugMode() + * @returns {boolean} + */ + ($viewsSettings.debugMode = function(debugMode) { + return debugMode === undefined + ? $subSettings.debugMode + : ( + $subSettings._clFns && $subSettings._clFns(), // Clear linkExprStore (cached compiled expressions), since debugMode setting affects compilation for expressions + $subSettings.debugMode = debugMode, + $subSettings.onError = debugMode + "" === debugMode + ? function() { return debugMode; } + : $isFunction(debugMode) + ? debugMode + : undefined, + $viewsSettings); + })(false); // jshint ignore:line + + $subSettingsAdvanced = $subSettings.advanced = { + cache: true, // By default use cached values of computed values (Otherwise, set advanced cache setting to false) + useViews: false, + _jsv: false // For global access to JsViews store + }; + + //========================== Register tags ========================== + + $tags({ + "if": { + render: function(val) { + // This function is called once for {{if}} and once for each {{else}}. + // We will use the tag.rendering object for carrying rendering state across the calls. + // If not done (a previous block has not been rendered), look at expression for this block and render the block if expression is truthy + // Otherwise return "" + var self = this, + tagCtx = self.tagCtx, + ret = (self.rendering.done || !val && (tagCtx.args.length || !tagCtx.index)) + ? "" + : (self.rendering.done = true, + self.selected = tagCtx.index, + undefined); // Test is satisfied, so render content on current context + return ret; + }, + contentCtx: true, // Inherit parent view data context + flow: true + }, + "for": { + sortDataMap: dataMap(getTargetSorted), + init: function(val, cloned) { + this.setDataMap(this.tagCtxs); + }, + render: function(val) { + // This function is called once for {{for}} and once for each {{else}}. + // We will use the tag.rendering object for carrying rendering state across the calls. + var value, filter, srtField, isArray, i, sorted, end, step, + self = this, + tagCtx = self.tagCtx, + range = tagCtx.argDefault === false, + props = tagCtx.props, + iterate = range || tagCtx.args.length, // Not final else and not auto-create range + result = "", + done = 0; + + if (!self.rendering.done) { + value = iterate ? val : tagCtx.view.data; // For the final else, defaults to current data without iteration. + + if (range) { + range = props.reverse ? "unshift" : "push"; + end = +props.end; + step = +props.step || 1; + value = []; // auto-create integer array scenario of {{for start=xxx end=yyy}} + for (i = +props.start || 0; (end - i) * step > 0; i += step) { + value[range](i); + } + } + if (value !== undefined) { + isArray = $isArray(value); + result += tagCtx.render(value, !iterate || props.noIteration); + // Iterates if data is an array, except on final else - or if noIteration property + // set to true. (Use {{include}} to compose templates without array iteration) + done += isArray ? value.length : 1; + } + if (self.rendering.done = done) { + self.selected = tagCtx.index; + } + // If nothing was rendered we will look at the next {{else}}. Otherwise, we are done. + } + return result; + }, + setDataMap: function(tagCtxs) { + var tagCtx, props, paramsProps, + self = this, + l = tagCtxs.length; + while (l--) { + tagCtx = tagCtxs[l]; + props = tagCtx.props; + paramsProps = tagCtx.params.props; + tagCtx.argDefault = props.end === undefined || tagCtx.args.length > 0; // Default to #data except for auto-create range scenario {{for start=xxx end=yyy step=zzz}} + props.dataMap = (tagCtx.argDefault !== false && $isArray(tagCtx.args[0]) && + (paramsProps.sort || paramsProps.start || paramsProps.end || paramsProps.step || paramsProps.filter || paramsProps.reverse + || props.sort || props.start || props.end || props.step || props.filter || props.reverse)) + && self.sortDataMap; + } + }, + flow: true + }, + props: { + baseTag: "for", + dataMap: dataMap(getTargetProps), + init: noop, // Don't execute the base init() of the "for" tag + flow: true + }, + include: { + flow: true + }, + "*": { + // {{* code... }} - Ignored if template.allowCode and $.views.settings.allowCode are false. Otherwise include code in compiled template + render: retVal, + flow: true + }, + ":*": { + // {{:* returnedExpression }} - Ignored if template.allowCode and $.views.settings.allowCode are false. Otherwise include code in compiled template + render: retVal, + flow: true + }, + dbg: $helpers.dbg = $converters.dbg = dbgBreak // Register {{dbg/}}, {{dbg:...}} and ~dbg() to throw and catch, as breakpoints for debugging. + }); + + $converters({ + html: htmlEncode, + attr: htmlEncode, // Includes > encoding since rConvertMarkers in JsViews does not skip > characters in attribute strings + encode: dataEncode, + unencode: dataUnencode, // Includes > encoding since rConvertMarkers in JsViews does not skip > characters in attribute strings + url: function(text) { + // URL encoding helper. + return text != undefined ? encodeURI("" + text) : text === null ? text : ""; // null returns null, e.g. to remove attribute. undefined returns "" + } + }); +} +//========================== Define default delimiters ========================== +$subSettings = $sub.settings; +$isArray = ($||jsr).isArray; +$viewsSettings.delimiters("{{", "}}", "^"); + +if (jsrToJq) { // Moving from jsrender namespace to jQuery namepace - copy over the stored items (templates, converters, helpers...) + jsr.views.sub._jq($); +} +return $ || jsr; +}, window)); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +/*!**********************************************!*\ + !*** ./resources/assets/js/custom/custom.js ***! + \**********************************************/ + + +var jsrender = __webpack_require__(/*! jsrender */ "./node_modules/jsrender/jsrender.js"); + +$.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') + } +}); +$(document).ajaxComplete(function () { + // Required for Bootstrap tooltips in DataTables + $('[data-toggle="tooltip"]').tooltip({ + 'html': true, + 'offset': 10 + }); +}); +$('input:text:not([readonly="readonly"])').first().focus(); +$(function () { + $('.modal').on('shown.bs.modal', function () { + $(this).find('input:text').first().focus(); + }); +}); + +window.resetModalForm = function (formId, validationBox) { + $(formId)[0].reset(); + $('select.select2Selector').each(function (index, element) { + var drpSelector = '#' + $(this).attr('id'); + $(drpSelector).val(''); + $(drpSelector).trigger('change'); + }); + $(validationBox).hide(); +}; + +window.printErrorMessage = function (selector, errorResult) { + $(selector).show().html(''); + $(selector).text(errorResult.responseJSON.message); +}; + +window.manageAjaxErrors = function (data) { + var errorDivId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'editValidationErrorsBox'; + + if (data.status == 404) { + iziToast.error({ + title: 'Error!', + message: data.responseJSON.message, + position: 'topRight' + }); + } else { + printErrorMessage('#' + errorDivId, data); + } +}; + +window.displaySuccessMessage = function (message) { + iziToast.success({ + title: 'Success', + message: message, + position: 'topRight' + }); +}; + +window.displayErrorMessage = function (message) { + iziToast.error({ + title: 'Error', + message: message, + position: 'topRight' + }); +}; + +window.deleteItem = function (url, tableId, header) { + var callFunction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + swal({ + title: 'Delete !', + text: 'Are you sure want to delete this "' + header + '" ?', + type: 'warning', + showCancelButton: true, + closeOnConfirm: false, + showLoaderOnConfirm: true, + confirmButtonColor: '#6777ef', + cancelButtonColor: '#d33', + cancelButtonText: 'No', + confirmButtonText: 'Yes' + }, function () { + deleteItemAjax(url, tableId, header, callFunction = null); + }); +}; + +function deleteItemAjax(url, tableId, header) { + var callFunction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + $.ajax({ + url: url, + type: 'DELETE', + dataType: 'json', + success: function success(obj) { + if (obj.success) { + if ($(tableId).DataTable().data().count() == 1) { + $(tableId).DataTable().page('previous').draw('page'); + } else { + $(tableId).DataTable().ajax.reload(null, false); + } + } + + swal({ + title: 'Deleted!', + text: header + ' has been deleted.', + type: 'success', + confirmButtonColor: '#6777ef', + timer: 2000 + }); + + if (callFunction) { + eval(callFunction); + } + }, + error: function error(data) { + swal({ + title: '', + text: data.responseJSON.message, + type: 'error', + confirmButtonColor: '#6777ef', + timer: 5000 + }); + } + }); +} + +window.format = function (dateTime) { + var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'DD-MMM-YYYY'; + return moment(dateTime).format(format); +}; + +window.processingBtn = function (selecter, btnId) { + var state = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var loadingButton = $(selecter).find(btnId); + + if (state === 'loading') { + loadingButton.button('loading'); + } else { + loadingButton.button('reset'); + } +}; + +window.prepareTemplateRender = function (templateSelector, data) { + var template = jsrender.templates(templateSelector); + return template.render(data); +}; + +window.isValidFile = function (inputSelector, validationMessageSelector) { + var ext = $(inputSelector).val().split('.').pop().toLowerCase(); + + if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) { + $(inputSelector).val(''); + $(validationMessageSelector).removeClass('d-none'); + $(validationMessageSelector).html('The image must be a file of type: jpeg, jpg, png.').show(); + return false; + } + + $(validationMessageSelector).hide(); + return true; +}; + +window.displayPhoto = function (input, selector) { + var displayPreview = true; + + if (input.files && input.files[0]) { + var reader = new FileReader(); + + reader.onload = function (e) { + var image = new Image(); + image.src = e.target.result; + + image.onload = function () { + $(selector).attr('src', e.target.result); + displayPreview = true; + }; + }; + + if (displayPreview) { + reader.readAsDataURL(input.files[0]); + $(selector).show(); + } + } +}; + +window.removeCommas = function (str) { + return str.replace(/,/g, ''); +}; + +window.DatetimepickerDefaults = function (opts) { + return $.extend({}, { + sideBySide: true, + ignoreReadonly: true, + icons: { + close: 'fa fa-times', + time: 'fa fa-clock-o', + date: 'fa fa-calendar', + up: 'fa fa-arrow-up', + down: 'fa fa-arrow-down', + previous: 'fa fa-chevron-left', + next: 'fa fa-chevron-right', + today: 'fa fa-clock-o', + clear: 'fa fa-trash-o' + } + }, opts); +}; + +window.isEmpty = function (value) { + return value === undefined || value === null || value === ''; +}; + +window.screenLock = function () { + $('#overlay-screen-lock').show(); + $('body').css({ + 'pointer-events': 'none', + 'opacity': '0.6' + }); +}; + +window.screenUnLock = function () { + $('body').css({ + 'pointer-events': 'auto', + 'opacity': '1' + }); + $('#overlay-screen-lock').hide(); +}; + +window.onload = function () { + window.startLoader = function () { + $('.infy-loader').show(); + }; + + window.stopLoader = function () { + $('.infy-loader').hide(); + }; // infy loader js + + + stopLoader(); +}; + +$(document).ready(function () { + // script to active parent menu if sub menu has currently active + var hasActiveMenu = $(document).find('.nav-item.dropdown ul li').hasClass('active'); + + if (hasActiveMenu) { + $(document).find('.nav-item.dropdown ul li.active').parent('ul').css('display', 'block'); + $(document).find('.nav-item.dropdown ul li.active').parent('ul').parent('li').addClass('active'); + } +}); + +window.urlValidation = function (value, regex) { + var urlCheck = value == '' ? true : value.match(regex) ? true : false; + + if (!urlCheck) { + return false; + } + + return true; +}; + +$('.languageSelection').on('click', function () { + var languageName = $(this).data('prefix-value'); + $.ajax({ + type: 'POST', + url: '/change-language', + data: { + languageName: languageName + }, + success: function success() { + location.reload(); + } + }); +}); +})(); + +/******/ })() +; \ No newline at end of file diff --git a/Penilaian-Esai/public/assets/js/iziToast.min.js b/Penilaian-Esai/public/assets/js/iziToast.min.js new file mode 100644 index 0000000..73b8417 --- /dev/null +++ b/Penilaian-Esai/public/assets/js/iziToast.min.js @@ -0,0 +1,467 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +/* +* iziToast | v1.4.0 +* http://izitoast.marcelodolce.com +* by Marcelo Dolce. +*/ +!function (t, e) { + "function" == typeof define && define.amd ? define([], e(t)) : "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? module.exports = e(t) : t.iziToast = e(t); +}("undefined" != typeof global ? global : window || this.window || this.global, function (t) { + "use strict"; + + var e = {}, + n = "iziToast", + o = (document.querySelector("body"), !!/Mobi/.test(navigator.userAgent)), + i = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), + s = "undefined" != typeof InstallTrigger, + a = ("ontouchstart" in document.documentElement), + r = ["bottomRight", "bottomLeft", "bottomCenter", "topRight", "topLeft", "topCenter", "center"], + l = { + info: { + color: "blue", + icon: "ico-info" + }, + success: { + color: "green", + icon: "ico-success" + }, + warning: { + color: "orange", + icon: "ico-warning" + }, + error: { + color: "red", + icon: "ico-error" + }, + question: { + color: "yellow", + icon: "ico-question" + } + }, + d = 568, + c = {}; + e.children = {}; + var u = { + id: null, + "class": "", + title: "", + titleColor: "", + titleSize: "", + titleLineHeight: "", + message: "", + messageColor: "", + messageSize: "", + messageLineHeight: "", + backgroundColor: "", + theme: "light", + color: "", + icon: "", + iconText: "", + iconColor: "", + iconUrl: null, + image: "", + imageWidth: 50, + maxWidth: null, + zindex: null, + layout: 1, + balloon: !1, + close: !0, + closeOnEscape: !1, + closeOnClick: !1, + displayMode: 0, + position: "bottomRight", + target: "", + targetFirst: !0, + timeout: 5e3, + rtl: !1, + animateInside: !0, + drag: !0, + pauseOnHover: !0, + resetOnHover: !1, + progressBar: !0, + progressBarColor: "", + progressBarEasing: "linear", + overlay: !1, + overlayClose: !1, + overlayColor: "rgba(0, 0, 0, 0.6)", + transitionIn: "fadeInUp", + transitionOut: "fadeOut", + transitionInMobile: "fadeInUp", + transitionOutMobile: "fadeOutDown", + buttons: {}, + inputs: {}, + onOpening: function onOpening() {}, + onOpened: function onOpened() {}, + onClosing: function onClosing() {}, + onClosed: function onClosed() {} + }; + + if ("remove" in Element.prototype || (Element.prototype.remove = function () { + this.parentNode && this.parentNode.removeChild(this); + }), "function" != typeof window.CustomEvent) { + var p = function p(t, e) { + e = e || { + bubbles: !1, + cancelable: !1, + detail: void 0 + }; + var n = document.createEvent("CustomEvent"); + return n.initCustomEvent(t, e.bubbles, e.cancelable, e.detail), n; + }; + + p.prototype = window.Event.prototype, window.CustomEvent = p; + } + + var m = function m(t, e, n) { + if ("[object Object]" === Object.prototype.toString.call(t)) for (var o in t) { + Object.prototype.hasOwnProperty.call(t, o) && e.call(n, t[o], o, t); + } else if (t) for (var i = 0, s = t.length; s > i; i++) { + e.call(n, t[i], i, t); + } + }, + g = function g(t, e) { + var n = {}; + return m(t, function (e, o) { + n[o] = t[o]; + }), m(e, function (t, o) { + n[o] = e[o]; + }), n; + }, + f = function f(t) { + var e = document.createDocumentFragment(), + n = document.createElement("div"); + + for (n.innerHTML = t; n.firstChild;) { + e.appendChild(n.firstChild); + } + + return e; + }, + v = function v(t) { + var e = btoa(encodeURIComponent(t)); + return e.replace(/=/g, ""); + }, + y = function y(t) { + return "#" == t.substring(0, 1) || "rgb" == t.substring(0, 3) || "hsl" == t.substring(0, 3); + }, + h = function h(t) { + try { + return btoa(atob(t)) == t; + } catch (e) { + return !1; + } + }, + b = function () { + return { + move: function move(t, e, o, a) { + var r, + l = .3, + d = 180; + 0 !== a && (t.classList.add(n + "-dragged"), t.style.transform = "translateX(" + a + "px)", a > 0 ? (r = (d - a) / d, l > r && e.hide(g(o, { + transitionOut: "fadeOutRight", + transitionOutMobile: "fadeOutRight" + }), t, "drag")) : (r = (d + a) / d, l > r && e.hide(g(o, { + transitionOut: "fadeOutLeft", + transitionOutMobile: "fadeOutLeft" + }), t, "drag")), t.style.opacity = r, l > r && ((i || s) && (t.style.left = a + "px"), t.parentNode.style.opacity = l, this.stopMoving(t, null))); + }, + startMoving: function startMoving(t, e, n, o) { + o = o || window.event; + var i = a ? o.touches[0].clientX : o.clientX, + s = t.style.transform.replace("px)", ""); + s = s.replace("translateX(", ""); + var r = i - s; + n.transitionIn && t.classList.remove(n.transitionIn), n.transitionInMobile && t.classList.remove(n.transitionInMobile), t.style.transition = "", a ? document.ontouchmove = function (o) { + o.preventDefault(), o = o || window.event; + var i = o.touches[0].clientX, + s = i - r; + b.move(t, e, n, s); + } : document.onmousemove = function (o) { + o.preventDefault(), o = o || window.event; + var i = o.clientX, + s = i - r; + b.move(t, e, n, s); + }; + }, + stopMoving: function stopMoving(t, e) { + a ? document.ontouchmove = function () {} : document.onmousemove = function () {}, t.style.opacity = "", t.style.transform = "", t.classList.contains(n + "-dragged") && (t.classList.remove(n + "-dragged"), t.style.transition = "transform 0.4s ease, opacity 0.4s ease", setTimeout(function () { + t.style.transition = ""; + }, 400)); + } + }; + }(); + + return e.setSetting = function (t, n, o) { + e.children[t][n] = o; + }, e.getSetting = function (t, n) { + return e.children[t][n]; + }, e.destroy = function () { + m(document.querySelectorAll("." + n + "-overlay"), function (t, e) { + t.remove(); + }), m(document.querySelectorAll("." + n + "-wrapper"), function (t, e) { + t.remove(); + }), m(document.querySelectorAll("." + n), function (t, e) { + t.remove(); + }), this.children = {}, document.removeEventListener(n + "-opened", {}, !1), document.removeEventListener(n + "-opening", {}, !1), document.removeEventListener(n + "-closing", {}, !1), document.removeEventListener(n + "-closed", {}, !1), document.removeEventListener("keyup", {}, !1), c = {}; + }, e.settings = function (t) { + e.destroy(), c = t, u = g(u, t || {}); + }, m(l, function (t, n) { + e[n] = function (e) { + var n = g(c, e || {}); + n = g(t, n || {}), this.show(n); + }; + }), e.progress = function (t, e, o) { + var i = this, + s = e.getAttribute("data-iziToast-ref"), + a = g(this.children[s], t || {}), + r = e.querySelector("." + n + "-progressbar div"); + return { + start: function start() { + "undefined" == typeof a.time.REMAINING && (e.classList.remove(n + "-reseted"), null !== r && (r.style.transition = "width " + a.timeout + "ms " + a.progressBarEasing, r.style.width = "0%"), a.time.START = new Date().getTime(), a.time.END = a.time.START + a.timeout, a.time.TIMER = setTimeout(function () { + clearTimeout(a.time.TIMER), e.classList.contains(n + "-closing") || (i.hide(a, e, "timeout"), "function" == typeof o && o.apply(i)); + }, a.timeout), i.setSetting(s, "time", a.time)); + }, + pause: function pause() { + if ("undefined" != typeof a.time.START && !e.classList.contains(n + "-paused") && !e.classList.contains(n + "-reseted")) { + if (e.classList.add(n + "-paused"), a.time.REMAINING = a.time.END - new Date().getTime(), clearTimeout(a.time.TIMER), i.setSetting(s, "time", a.time), null !== r) { + var t = window.getComputedStyle(r), + l = t.getPropertyValue("width"); + r.style.transition = "none", r.style.width = l; + } + + "function" == typeof o && setTimeout(function () { + o.apply(i); + }, 10); + } + }, + resume: function resume() { + "undefined" != typeof a.time.REMAINING ? (e.classList.remove(n + "-paused"), null !== r && (r.style.transition = "width " + a.time.REMAINING + "ms " + a.progressBarEasing, r.style.width = "0%"), a.time.END = new Date().getTime() + a.time.REMAINING, a.time.TIMER = setTimeout(function () { + clearTimeout(a.time.TIMER), e.classList.contains(n + "-closing") || (i.hide(a, e, "timeout"), "function" == typeof o && o.apply(i)); + }, a.time.REMAINING), i.setSetting(s, "time", a.time)) : this.start(); + }, + reset: function reset() { + clearTimeout(a.time.TIMER), delete a.time.REMAINING, i.setSetting(s, "time", a.time), e.classList.add(n + "-reseted"), e.classList.remove(n + "-paused"), null !== r && (r.style.transition = "none", r.style.width = "100%"), "function" == typeof o && setTimeout(function () { + o.apply(i); + }, 10); + } + }; + }, e.hide = function (t, e, i) { + "object" != _typeof(e) && (e = document.querySelector(e)); + var s = this, + a = g(this.children[e.getAttribute("data-iziToast-ref")], t || {}); + a.closedBy = i || null, delete a.time.REMAINING, e.classList.add(n + "-closing"), function () { + var t = document.querySelector("." + n + "-overlay"); + + if (null !== t) { + var e = t.getAttribute("data-iziToast-ref"); + e = e.split(","); + var o = e.indexOf(String(a.ref)); + -1 !== o && e.splice(o, 1), t.setAttribute("data-iziToast-ref", e.join()), 0 === e.length && (t.classList.remove("fadeIn"), t.classList.add("fadeOut"), setTimeout(function () { + t.remove(); + }, 700)); + } + }(), a.transitionIn && e.classList.remove(a.transitionIn), a.transitionInMobile && e.classList.remove(a.transitionInMobile), o || window.innerWidth <= d ? a.transitionOutMobile && e.classList.add(a.transitionOutMobile) : a.transitionOut && e.classList.add(a.transitionOut); + var r = e.parentNode.offsetHeight; + e.parentNode.style.height = r + "px", e.style.pointerEvents = "none", (!o || window.innerWidth > d) && (e.parentNode.style.transitionDelay = "0.2s"); + + try { + var l = new CustomEvent(n + "-closing", { + detail: a, + bubbles: !0, + cancelable: !0 + }); + document.dispatchEvent(l); + } catch (c) { + console.warn(c); + } + + setTimeout(function () { + e.parentNode.style.height = "0px", e.parentNode.style.overflow = "", setTimeout(function () { + delete s.children[a.ref], e.parentNode.remove(); + + try { + var t = new CustomEvent(n + "-closed", { + detail: a, + bubbles: !0, + cancelable: !0 + }); + document.dispatchEvent(t); + } catch (o) { + console.warn(o); + } + + "undefined" != typeof a.onClosed && a.onClosed.apply(null, [a, e, i]); + }, 1e3); + }, 200), "undefined" != typeof a.onClosing && a.onClosing.apply(null, [a, e, i]); + }, e.show = function (t) { + var i = this, + s = g(c, t || {}); + if (s = g(u, s), s.time = {}, null === s.id && (s.id = v(s.title + s.message + s.color)), 1 === s.displayMode || "once" == s.displayMode) try { + if (document.querySelectorAll("." + n + "#" + s.id).length > 0) return !1; + } catch (l) { + console.warn("[" + n + "] Could not find an element with this selector: #" + s.id + ". Try to set an valid id."); + } + if (2 === s.displayMode || "replace" == s.displayMode) try { + m(document.querySelectorAll("." + n + "#" + s.id), function (t, e) { + i.hide(s, t, "replaced"); + }); + } catch (l) { + console.warn("[" + n + "] Could not find an element with this selector: #" + s.id + ". Try to set an valid id."); + } + s.ref = new Date().getTime() + Math.floor(1e7 * Math.random() + 1), e.children[s.ref] = s; + var p = { + body: document.querySelector("body"), + overlay: document.createElement("div"), + toast: document.createElement("div"), + toastBody: document.createElement("div"), + toastTexts: document.createElement("div"), + toastCapsule: document.createElement("div"), + cover: document.createElement("div"), + buttons: document.createElement("div"), + inputs: document.createElement("div"), + icon: s.iconUrl ? document.createElement("img") : document.createElement("i"), + wrapper: null + }; + p.toast.setAttribute("data-iziToast-ref", s.ref), p.toast.appendChild(p.toastBody), p.toastCapsule.appendChild(p.toast), function () { + if (p.toast.classList.add(n), p.toast.classList.add(n + "-opening"), p.toastCapsule.classList.add(n + "-capsule"), p.toastBody.classList.add(n + "-body"), p.toastTexts.classList.add(n + "-texts"), o || window.innerWidth <= d ? s.transitionInMobile && p.toast.classList.add(s.transitionInMobile) : s.transitionIn && p.toast.classList.add(s.transitionIn), s["class"]) { + var t = s["class"].split(" "); + m(t, function (t, e) { + p.toast.classList.add(t); + }); + } + + s.id && (p.toast.id = s.id), s.rtl && (p.toast.classList.add(n + "-rtl"), p.toast.setAttribute("dir", "rtl")), s.layout > 1 && p.toast.classList.add(n + "-layout" + s.layout), s.balloon && p.toast.classList.add(n + "-balloon"), s.maxWidth && (isNaN(s.maxWidth) ? p.toast.style.maxWidth = s.maxWidth : p.toast.style.maxWidth = s.maxWidth + "px"), "" === s.theme && "light" === s.theme || p.toast.classList.add(n + "-theme-" + s.theme), s.color && (y(s.color) ? p.toast.style.background = s.color : p.toast.classList.add(n + "-color-" + s.color)), s.backgroundColor && (p.toast.style.background = s.backgroundColor, s.balloon && (p.toast.style.borderColor = s.backgroundColor)); + }(), function () { + s.image && (p.cover.classList.add(n + "-cover"), p.cover.style.width = s.imageWidth + "px", h(s.image.replace(/ /g, "")) ? p.cover.style.backgroundImage = "url(data:image/png;base64," + s.image.replace(/ /g, "") + ")" : p.cover.style.backgroundImage = "url(" + s.image + ")", s.rtl ? p.toastBody.style.marginRight = s.imageWidth + 10 + "px" : p.toastBody.style.marginLeft = s.imageWidth + 10 + "px", p.toast.appendChild(p.cover)); + }(), function () { + s.close ? (p.buttonClose = document.createElement("button"), p.buttonClose.type = "button", p.buttonClose.classList.add(n + "-close"), p.buttonClose.addEventListener("click", function (t) { + t.target; + i.hide(s, p.toast, "button"); + }), p.toast.appendChild(p.buttonClose)) : s.rtl ? p.toast.style.paddingLeft = "18px" : p.toast.style.paddingRight = "18px"; + }(), function () { + s.progressBar && (p.progressBar = document.createElement("div"), p.progressBarDiv = document.createElement("div"), p.progressBar.classList.add(n + "-progressbar"), p.progressBarDiv.style.background = s.progressBarColor, p.progressBar.appendChild(p.progressBarDiv), p.toast.appendChild(p.progressBar)), s.timeout && (s.pauseOnHover && !s.resetOnHover && (p.toast.addEventListener("mouseenter", function (t) { + i.progress(s, p.toast).pause(); + }), p.toast.addEventListener("mouseleave", function (t) { + i.progress(s, p.toast).resume(); + })), s.resetOnHover && (p.toast.addEventListener("mouseenter", function (t) { + i.progress(s, p.toast).reset(); + }), p.toast.addEventListener("mouseleave", function (t) { + i.progress(s, p.toast).start(); + }))); + }(), function () { + s.iconUrl ? (p.icon.setAttribute("class", n + "-icon"), p.icon.setAttribute("src", s.iconUrl)) : s.icon && (p.icon.setAttribute("class", n + "-icon " + s.icon), s.iconText && p.icon.appendChild(document.createTextNode(s.iconText)), s.iconColor && (p.icon.style.color = s.iconColor)), (s.icon || s.iconUrl) && (s.rtl ? p.toastBody.style.paddingRight = "33px" : p.toastBody.style.paddingLeft = "33px", p.toastBody.appendChild(p.icon)); + }(), function () { + s.title.length > 0 && (p.strong = document.createElement("strong"), p.strong.classList.add(n + "-title"), p.strong.appendChild(f(s.title)), p.toastTexts.appendChild(p.strong), s.titleColor && (p.strong.style.color = s.titleColor), s.titleSize && (isNaN(s.titleSize) ? p.strong.style.fontSize = s.titleSize : p.strong.style.fontSize = s.titleSize + "px"), s.titleLineHeight && (isNaN(s.titleSize) ? p.strong.style.lineHeight = s.titleLineHeight : p.strong.style.lineHeight = s.titleLineHeight + "px")), s.message.length > 0 && (p.p = document.createElement("p"), p.p.classList.add(n + "-message"), p.p.appendChild(f(s.message)), p.toastTexts.appendChild(p.p), s.messageColor && (p.p.style.color = s.messageColor), s.messageSize && (isNaN(s.titleSize) ? p.p.style.fontSize = s.messageSize : p.p.style.fontSize = s.messageSize + "px"), s.messageLineHeight && (isNaN(s.titleSize) ? p.p.style.lineHeight = s.messageLineHeight : p.p.style.lineHeight = s.messageLineHeight + "px")), s.title.length > 0 && s.message.length > 0 && (s.rtl ? p.strong.style.marginLeft = "10px" : 2 === s.layout || s.rtl || (p.strong.style.marginRight = "10px")); + }(), p.toastBody.appendChild(p.toastTexts); + var L; + !function () { + s.inputs.length > 0 && (p.inputs.classList.add(n + "-inputs"), m(s.inputs, function (t, e) { + p.inputs.appendChild(f(t[0])), L = p.inputs.childNodes, L[e].classList.add(n + "-inputs-child"), t[3] && setTimeout(function () { + L[e].focus(); + }, 300), L[e].addEventListener(t[1], function (e) { + var n = t[2]; + return n(i, p.toast, this, e); + }); + }), p.toastBody.appendChild(p.inputs)); + }(), function () { + s.buttons.length > 0 && (p.buttons.classList.add(n + "-buttons"), m(s.buttons, function (t, e) { + p.buttons.appendChild(f(t[0])); + var o = p.buttons.childNodes; + o[e].classList.add(n + "-buttons-child"), t[2] && setTimeout(function () { + o[e].focus(); + }, 300), o[e].addEventListener("click", function (e) { + e.preventDefault(); + var n = t[1]; + return n(i, p.toast, this, e, L); + }); + })), p.toastBody.appendChild(p.buttons); + }(), s.message.length > 0 && (s.inputs.length > 0 || s.buttons.length > 0) && (p.p.style.marginBottom = "0"), (s.inputs.length > 0 || s.buttons.length > 0) && (s.rtl ? p.toastTexts.style.marginLeft = "10px" : p.toastTexts.style.marginRight = "10px", s.inputs.length > 0 && s.buttons.length > 0 && (s.rtl ? p.inputs.style.marginLeft = "8px" : p.inputs.style.marginRight = "8px")), function () { + p.toastCapsule.style.visibility = "hidden", setTimeout(function () { + var t = p.toast.offsetHeight, + e = p.toast.currentStyle || window.getComputedStyle(p.toast), + n = e.marginTop; + n = n.split("px"), n = parseInt(n[0]); + var o = e.marginBottom; + o = o.split("px"), o = parseInt(o[0]), p.toastCapsule.style.visibility = "", p.toastCapsule.style.height = t + o + n + "px", setTimeout(function () { + p.toastCapsule.style.height = "auto", s.target && (p.toastCapsule.style.overflow = "visible"); + }, 500), s.timeout && i.progress(s, p.toast).start(); + }, 100); + }(), function () { + var t = s.position; + if (s.target) p.wrapper = document.querySelector(s.target), p.wrapper.classList.add(n + "-target"), s.targetFirst ? p.wrapper.insertBefore(p.toastCapsule, p.wrapper.firstChild) : p.wrapper.appendChild(p.toastCapsule);else { + if (-1 == r.indexOf(s.position)) return void console.warn("[" + n + "] Incorrect position.\nIt can be › " + r); + t = o || window.innerWidth <= d ? "bottomLeft" == s.position || "bottomRight" == s.position || "bottomCenter" == s.position ? n + "-wrapper-bottomCenter" : "topLeft" == s.position || "topRight" == s.position || "topCenter" == s.position ? n + "-wrapper-topCenter" : n + "-wrapper-center" : n + "-wrapper-" + t, p.wrapper = document.querySelector("." + n + "-wrapper." + t), p.wrapper || (p.wrapper = document.createElement("div"), p.wrapper.classList.add(n + "-wrapper"), p.wrapper.classList.add(t), document.body.appendChild(p.wrapper)), "topLeft" == s.position || "topCenter" == s.position || "topRight" == s.position ? p.wrapper.insertBefore(p.toastCapsule, p.wrapper.firstChild) : p.wrapper.appendChild(p.toastCapsule); + } + isNaN(s.zindex) ? console.warn("[" + n + "] Invalid zIndex.") : p.wrapper.style.zIndex = s.zindex; + }(), function () { + s.overlay && (null !== document.querySelector("." + n + "-overlay.fadeIn") ? (p.overlay = document.querySelector("." + n + "-overlay"), p.overlay.setAttribute("data-iziToast-ref", p.overlay.getAttribute("data-iziToast-ref") + "," + s.ref), isNaN(s.zindex) || null === s.zindex || (p.overlay.style.zIndex = s.zindex - 1)) : (p.overlay.classList.add(n + "-overlay"), p.overlay.classList.add("fadeIn"), p.overlay.style.background = s.overlayColor, p.overlay.setAttribute("data-iziToast-ref", s.ref), isNaN(s.zindex) || null === s.zindex || (p.overlay.style.zIndex = s.zindex - 1), document.querySelector("body").appendChild(p.overlay)), s.overlayClose ? (p.overlay.removeEventListener("click", {}), p.overlay.addEventListener("click", function (t) { + i.hide(s, p.toast, "overlay"); + })) : p.overlay.removeEventListener("click", {})); + }(), function () { + if (s.animateInside) { + p.toast.classList.add(n + "-animateInside"); + var t = [200, 100, 300]; + "bounceInLeft" != s.transitionIn && "bounceInRight" != s.transitionIn || (t = [400, 200, 400]), s.title.length > 0 && setTimeout(function () { + p.strong.classList.add("slideIn"); + }, t[0]), s.message.length > 0 && setTimeout(function () { + p.p.classList.add("slideIn"); + }, t[1]), (s.icon || s.iconUrl) && setTimeout(function () { + p.icon.classList.add("revealIn"); + }, t[2]); + var e = 150; + s.buttons.length > 0 && p.buttons && setTimeout(function () { + m(p.buttons.childNodes, function (t, n) { + setTimeout(function () { + t.classList.add("revealIn"); + }, e), e += 150; + }); + }, s.inputs.length > 0 ? 150 : 0), s.inputs.length > 0 && p.inputs && (e = 150, m(p.inputs.childNodes, function (t, n) { + setTimeout(function () { + t.classList.add("revealIn"); + }, e), e += 150; + })); + } + }(), s.onOpening.apply(null, [s, p.toast]); + + try { + var C = new CustomEvent(n + "-opening", { + detail: s, + bubbles: !0, + cancelable: !0 + }); + document.dispatchEvent(C); + } catch (w) { + console.warn(w); + } + + setTimeout(function () { + p.toast.classList.remove(n + "-opening"), p.toast.classList.add(n + "-opened"); + + try { + var t = new CustomEvent(n + "-opened", { + detail: s, + bubbles: !0, + cancelable: !0 + }); + document.dispatchEvent(t); + } catch (e) { + console.warn(e); + } + + s.onOpened.apply(null, [s, p.toast]); + }, 1e3), s.drag && (a ? (p.toast.addEventListener("touchstart", function (t) { + b.startMoving(this, i, s, t); + }, !1), p.toast.addEventListener("touchend", function (t) { + b.stopMoving(this, t); + }, !1)) : (p.toast.addEventListener("mousedown", function (t) { + t.preventDefault(), b.startMoving(this, i, s, t); + }, !1), p.toast.addEventListener("mouseup", function (t) { + t.preventDefault(), b.stopMoving(this, t); + }, !1))), s.closeOnEscape && document.addEventListener("keyup", function (t) { + t = t || window.event, 27 == t.keyCode && i.hide(s, p.toast, "esc"); + }), s.closeOnClick && p.toast.addEventListener("click", function (t) { + i.hide(s, p.toast, "toast"); + }), i.toast = p.toast; + }, e; +}); diff --git a/Penilaian-Esai/public/assets/js/jquery.dataTables.min.js b/Penilaian-Esai/public/assets/js/jquery.dataTables.min.js new file mode 100644 index 0000000..9590b9f --- /dev/null +++ b/Penilaian-Esai/public/assets/js/jquery.dataTables.min.js @@ -0,0 +1,4566 @@ +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + DataTables 1.12.1 + ©2008-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp = $jscomp || {}; +$jscomp.scope = {}; + +$jscomp.findInternal = function (l, y, A) { + l instanceof String && (l = String(l)); + + for (var q = l.length, E = 0; E < q; E++) { + var P = l[E]; + if (y.call(A, P, E, l)) return { + i: E, + v: P + }; + } + + return { + i: -1, + v: void 0 + }; +}; + +$jscomp.ASSUME_ES5 = !1; +$jscomp.ASSUME_NO_NATIVE_MAP = !1; +$jscomp.ASSUME_NO_NATIVE_SET = !1; +$jscomp.SIMPLE_FROUND_POLYFILL = !1; +$jscomp.ISOLATE_POLYFILLS = !1; +$jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function (l, y, A) { + if (l == Array.prototype || l == Object.prototype) return l; + l[y] = A.value; + return l; +}; + +$jscomp.getGlobal = function (l) { + l = ["object" == (typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) && globalThis, l, "object" == (typeof window === "undefined" ? "undefined" : _typeof(window)) && window, "object" == (typeof self === "undefined" ? "undefined" : _typeof(self)) && self, "object" == (typeof global === "undefined" ? "undefined" : _typeof(global)) && global]; + + for (var y = 0; y < l.length; ++y) { + var A = l[y]; + if (A && A.Math == Math) return A; + } + + throw Error("Cannot find global object"); +}; + +$jscomp.global = $jscomp.getGlobal(this); +$jscomp.IS_SYMBOL_NATIVE = "function" === typeof Symbol && "symbol" === _typeof(Symbol("x")); +$jscomp.TRUST_ES6_POLYFILLS = !$jscomp.ISOLATE_POLYFILLS || $jscomp.IS_SYMBOL_NATIVE; +$jscomp.polyfills = {}; +$jscomp.propertyToPolyfillSymbol = {}; +$jscomp.POLYFILL_PREFIX = "$jscp$"; + +var $jscomp$lookupPolyfilledValue = function $jscomp$lookupPolyfilledValue(l, y) { + var A = $jscomp.propertyToPolyfillSymbol[y]; + if (null == A) return l[y]; + A = l[A]; + return void 0 !== A ? A : l[y]; +}; + +$jscomp.polyfill = function (l, y, A, q) { + y && ($jscomp.ISOLATE_POLYFILLS ? $jscomp.polyfillIsolated(l, y, A, q) : $jscomp.polyfillUnisolated(l, y, A, q)); +}; + +$jscomp.polyfillUnisolated = function (l, y, A, q) { + A = $jscomp.global; + l = l.split("."); + + for (q = 0; q < l.length - 1; q++) { + var E = l[q]; + if (!(E in A)) return; + A = A[E]; + } + + l = l[l.length - 1]; + q = A[l]; + y = y(q); + y != q && null != y && $jscomp.defineProperty(A, l, { + configurable: !0, + writable: !0, + value: y + }); +}; + +$jscomp.polyfillIsolated = function (l, y, A, q) { + var E = l.split("."); + l = 1 === E.length; + q = E[0]; + q = !l && q in $jscomp.polyfills ? $jscomp.polyfills : $jscomp.global; + + for (var P = 0; P < E.length - 1; P++) { + var la = E[P]; + if (!(la in q)) return; + q = q[la]; + } + + E = E[E.length - 1]; + A = $jscomp.IS_SYMBOL_NATIVE && "es6" === A ? q[E] : null; + y = y(A); + null != y && (l ? $jscomp.defineProperty($jscomp.polyfills, E, { + configurable: !0, + writable: !0, + value: y + }) : y !== A && ($jscomp.propertyToPolyfillSymbol[E] = $jscomp.IS_SYMBOL_NATIVE ? $jscomp.global.Symbol(E) : $jscomp.POLYFILL_PREFIX + E, E = $jscomp.propertyToPolyfillSymbol[E], $jscomp.defineProperty(q, E, { + configurable: !0, + writable: !0, + value: y + }))); +}; + +$jscomp.polyfill("Array.prototype.find", function (l) { + return l ? l : function (y, A) { + return $jscomp.findInternal(this, y, A).v; + }; +}, "es6", "es3"); + +(function (l) { + "function" === typeof define && define.amd ? define(["jquery"], function (y) { + return l(y, window, document); + }) : "object" === (typeof exports === "undefined" ? "undefined" : _typeof(exports)) ? module.exports = function (y, A) { + y || (y = window); + A || (A = "undefined" !== typeof window ? require("jquery") : require("jquery")(y)); + return l(A, y, y.document); + } : window.DataTable = l(jQuery, window, document); +})(function (l, y, A, q) { + function E(a) { + var b, + c, + d = {}; + l.each(a, function (e, h) { + (b = e.match(/^([^A-Z]+?)([A-Z])/)) && -1 !== "a aa ai ao as b fn i m o s ".indexOf(b[1] + " ") && (c = e.replace(b[0], b[2].toLowerCase()), d[c] = e, "o" === b[1] && E(a[e])); + }); + a._hungarianMap = d; + } + + function P(a, b, c) { + a._hungarianMap || E(a); + var d; + l.each(b, function (e, h) { + d = a._hungarianMap[e]; + d === q || !c && b[d] !== q || ("o" === d.charAt(0) ? (b[d] || (b[d] = {}), l.extend(!0, b[d], b[e]), P(a[d], b[d], c)) : b[d] = b[e]); + }); + } + + function la(a) { + var b = u.defaults.oLanguage, + c = b.sDecimal; + c && bb(c); + + if (a) { + var d = a.sZeroRecords; + !a.sEmptyTable && d && "No data available in table" === b.sEmptyTable && Y(a, a, "sZeroRecords", "sEmptyTable"); + !a.sLoadingRecords && d && "Loading..." === b.sLoadingRecords && Y(a, a, "sZeroRecords", "sLoadingRecords"); + a.sInfoThousands && (a.sThousands = a.sInfoThousands); + (a = a.sDecimal) && c !== a && bb(a); + } + } + + function Db(a) { + S(a, "ordering", "bSort"); + S(a, "orderMulti", "bSortMulti"); + S(a, "orderClasses", "bSortClasses"); + S(a, "orderCellsTop", "bSortCellsTop"); + S(a, "order", "aaSorting"); + S(a, "orderFixed", "aaSortingFixed"); + S(a, "paging", "bPaginate"); + S(a, "pagingType", "sPaginationType"); + S(a, "pageLength", "iDisplayLength"); + S(a, "searching", "bFilter"); + "boolean" === typeof a.sScrollX && (a.sScrollX = a.sScrollX ? "100%" : ""); + "boolean" === typeof a.scrollX && (a.scrollX = a.scrollX ? "100%" : ""); + if (a = a.aoSearchCols) for (var b = 0, c = a.length; b < c; b++) { + a[b] && P(u.models.oSearch, a[b]); + } + } + + function Eb(a) { + S(a, "orderable", "bSortable"); + S(a, "orderData", "aDataSort"); + S(a, "orderSequence", "asSorting"); + S(a, "orderDataType", "sortDataType"); + var b = a.aDataSort; + "number" !== typeof b || Array.isArray(b) || (a.aDataSort = [b]); + } + + function Fb(a) { + if (!u.__browser) { + var b = {}; + u.__browser = b; + var c = l("
").css({ + position: "fixed", + top: 0, + left: -1 * l(y).scrollLeft(), + height: 1, + width: 1, + overflow: "hidden" + }).append(l("
").css({ + position: "absolute", + top: 1, + left: 1, + width: 100, + overflow: "scroll" + }).append(l("
").css({ + width: "100%", + height: 10 + }))).appendTo("body"), + d = c.children(), + e = d.children(); + b.barWidth = d[0].offsetWidth - d[0].clientWidth; + b.bScrollOversize = 100 === e[0].offsetWidth && 100 !== d[0].clientWidth; + b.bScrollbarLeft = 1 !== Math.round(e.offset().left); + b.bBounding = c[0].getBoundingClientRect().width ? !0 : !1; + c.remove(); + } + + l.extend(a.oBrowser, u.__browser); + a.oScroll.iBarWidth = u.__browser.barWidth; + } + + function Gb(a, b, c, d, e, h) { + var f = !1; + + if (c !== q) { + var g = c; + f = !0; + } + + for (; d !== e;) { + a.hasOwnProperty(d) && (g = f ? b(g, a[d], d, a) : a[d], f = !0, d += h); + } + + return g; + } + + function cb(a, b) { + var c = u.defaults.column, + d = a.aoColumns.length; + c = l.extend({}, u.models.oColumn, c, { + nTh: b ? b : A.createElement("th"), + sTitle: c.sTitle ? c.sTitle : b ? b.innerHTML : "", + aDataSort: c.aDataSort ? c.aDataSort : [d], + mData: c.mData ? c.mData : d, + idx: d + }); + a.aoColumns.push(c); + c = a.aoPreSearchCols; + c[d] = l.extend({}, u.models.oSearch, c[d]); + Ia(a, d, l(b).data()); + } + + function Ia(a, b, c) { + b = a.aoColumns[b]; + var d = a.oClasses, + e = l(b.nTh); + + if (!b.sWidthOrig) { + b.sWidthOrig = e.attr("width") || null; + var h = (e.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/); + h && (b.sWidthOrig = h[1]); + } + + c !== q && null !== c && (Eb(c), P(u.defaults.column, c, !0), c.mDataProp === q || c.mData || (c.mData = c.mDataProp), c.sType && (b._sManualType = c.sType), c.className && !c.sClass && (c.sClass = c.className), c.sClass && e.addClass(c.sClass), h = b.sClass, l.extend(b, c), Y(b, c, "sWidth", "sWidthOrig"), h !== b.sClass && (b.sClass = h + " " + b.sClass), c.iDataSort !== q && (b.aDataSort = [c.iDataSort]), Y(b, c, "aDataSort")); + var f = b.mData, + g = ma(f), + k = b.mRender ? ma(b.mRender) : null; + + c = function c(m) { + return "string" === typeof m && -1 !== m.indexOf("@"); + }; + + b._bAttrSrc = l.isPlainObject(f) && (c(f.sort) || c(f.type) || c(f.filter)); + b._setter = null; + + b.fnGetData = function (m, n, p) { + var t = g(m, n, q, p); + return k && n ? k(t, n, m, p) : t; + }; + + b.fnSetData = function (m, n, p) { + return ha(f)(m, n, p); + }; + + "number" !== typeof f && (a._rowReadObject = !0); + a.oFeatures.bSort || (b.bSortable = !1, e.addClass(d.sSortableNone)); + a = -1 !== l.inArray("asc", b.asSorting); + c = -1 !== l.inArray("desc", b.asSorting); + b.bSortable && (a || c) ? a && !c ? (b.sSortingClass = d.sSortableAsc, b.sSortingClassJUI = d.sSortJUIAscAllowed) : !a && c ? (b.sSortingClass = d.sSortableDesc, b.sSortingClassJUI = d.sSortJUIDescAllowed) : (b.sSortingClass = d.sSortable, b.sSortingClassJUI = d.sSortJUI) : (b.sSortingClass = d.sSortableNone, b.sSortingClassJUI = ""); + } + + function sa(a) { + if (!1 !== a.oFeatures.bAutoWidth) { + var b = a.aoColumns; + db(a); + + for (var c = 0, d = b.length; c < d; c++) { + b[c].nTh.style.width = b[c].sWidth; + } + } + + b = a.oScroll; + "" === b.sY && "" === b.sX || Ja(a); + F(a, null, "column-sizing", [a]); + } + + function ta(a, b) { + a = Ka(a, "bVisible"); + return "number" === typeof a[b] ? a[b] : null; + } + + function ua(a, b) { + a = Ka(a, "bVisible"); + b = l.inArray(b, a); + return -1 !== b ? b : null; + } + + function na(a) { + var b = 0; + l.each(a.aoColumns, function (c, d) { + d.bVisible && "none" !== l(d.nTh).css("display") && b++; + }); + return b; + } + + function Ka(a, b) { + var c = []; + l.map(a.aoColumns, function (d, e) { + d[b] && c.push(e); + }); + return c; + } + + function eb(a) { + var b = a.aoColumns, + c = a.aoData, + d = u.ext.type.detect, + e, + h, + f; + var g = 0; + + for (e = b.length; g < e; g++) { + var k = b[g]; + var m = []; + if (!k.sType && k._sManualType) k.sType = k._sManualType;else if (!k.sType) { + var n = 0; + + for (h = d.length; n < h; n++) { + var p = 0; + + for (f = c.length; p < f; p++) { + m[p] === q && (m[p] = T(a, p, g, "type")); + var t = d[n](m[p], a); + if (!t && n !== d.length - 1) break; + if ("html" === t && !aa(m[p])) break; + } + + if (t) { + k.sType = t; + break; + } + } + + k.sType || (k.sType = "string"); + } + } + } + + function Hb(a, b, c, d) { + var e, + h, + f, + g = a.aoColumns; + if (b) for (e = b.length - 1; 0 <= e; e--) { + var k = b[e]; + var m = k.target !== q ? k.target : k.targets !== q ? k.targets : k.aTargets; + Array.isArray(m) || (m = [m]); + var n = 0; + + for (h = m.length; n < h; n++) { + if ("number" === typeof m[n] && 0 <= m[n]) { + for (; g.length <= m[n];) { + cb(a); + } + + d(m[n], k); + } else if ("number" === typeof m[n] && 0 > m[n]) d(g.length + m[n], k);else if ("string" === typeof m[n]) { + var p = 0; + + for (f = g.length; p < f; p++) { + ("_all" == m[n] || l(g[p].nTh).hasClass(m[n])) && d(p, k); + } + } + } + } + if (c) for (e = 0, a = c.length; e < a; e++) { + d(e, c[e]); + } + } + + function ia(a, b, c, d) { + var e = a.aoData.length, + h = l.extend(!0, {}, u.models.oRow, { + src: c ? "dom" : "data", + idx: e + }); + h._aData = b; + a.aoData.push(h); + + for (var f = a.aoColumns, g = 0, k = f.length; g < k; g++) { + f[g].sType = null; + } + + a.aiDisplayMaster.push(e); + b = a.rowIdFn(b); + b !== q && (a.aIds[b] = h); + !c && a.oFeatures.bDeferRender || fb(a, e, c, d); + return e; + } + + function La(a, b) { + var c; + b instanceof l || (b = l(b)); + return b.map(function (d, e) { + c = gb(a, e); + return ia(a, c.data, e, c.cells); + }); + } + + function T(a, b, c, d) { + "search" === d ? d = "filter" : "order" === d && (d = "sort"); + var e = a.iDraw, + h = a.aoColumns[c], + f = a.aoData[b]._aData, + g = h.sDefaultContent, + k = h.fnGetData(f, d, { + settings: a, + row: b, + col: c + }); + if (k === q) return a.iDrawError != e && null === g && (ea(a, 0, "Requested unknown parameter " + ("function" == typeof h.mData ? "{function}" : "'" + h.mData + "'") + " for row " + b + ", column " + c, 4), a.iDrawError = e), g; + if ((k === f || null === k) && null !== g && d !== q) k = g;else if ("function" === typeof k) return k.call(f); + if (null === k && "display" === d) return ""; + "filter" === d && (a = u.ext.type.search, a[h.sType] && (k = a[h.sType](k))); + return k; + } + + function Ib(a, b, c, d) { + a.aoColumns[c].fnSetData(a.aoData[b]._aData, d, { + settings: a, + row: b, + col: c + }); + } + + function hb(a) { + return l.map(a.match(/(\\.|[^\.])+/g) || [""], function (b) { + return b.replace(/\\\./g, "."); + }); + } + + function ib(a) { + return U(a.aoData, "_aData"); + } + + function Ma(a) { + a.aoData.length = 0; + a.aiDisplayMaster.length = 0; + a.aiDisplay.length = 0; + a.aIds = {}; + } + + function Na(a, b, c) { + for (var d = -1, e = 0, h = a.length; e < h; e++) { + a[e] == b ? d = e : a[e] > b && a[e]--; + } + + -1 != d && c === q && a.splice(d, 1); + } + + function va(a, b, c, d) { + var e = a.aoData[b], + h, + f = function f(k, m) { + for (; k.childNodes.length;) { + k.removeChild(k.firstChild); + } + + k.innerHTML = T(a, b, m, "display"); + }; + + if ("dom" !== c && (c && "auto" !== c || "dom" !== e.src)) { + var g = e.anCells; + if (g) if (d !== q) f(g[d], d);else for (c = 0, h = g.length; c < h; c++) { + f(g[c], c); + } + } else e._aData = gb(a, e, d, d === q ? q : e._aData).data; + + e._aSortData = null; + e._aFilterData = null; + f = a.aoColumns; + if (d !== q) f[d].sType = null;else { + c = 0; + + for (h = f.length; c < h; c++) { + f[c].sType = null; + } + + jb(a, e); + } + } + + function gb(a, b, c, d) { + var e = [], + h = b.firstChild, + f, + g = 0, + k, + m = a.aoColumns, + n = a._rowReadObject; + d = d !== q ? d : n ? {} : []; + + var p = function p(x, w) { + if ("string" === typeof x) { + var r = x.indexOf("@"); + -1 !== r && (r = x.substring(r + 1), ha(x)(d, w.getAttribute(r))); + } + }, + t = function t(x) { + if (c === q || c === g) f = m[g], k = x.innerHTML.trim(), f && f._bAttrSrc ? (ha(f.mData._)(d, k), p(f.mData.sort, x), p(f.mData.type, x), p(f.mData.filter, x)) : n ? (f._setter || (f._setter = ha(f.mData)), f._setter(d, k)) : d[g] = k; + g++; + }; + + if (h) for (; h;) { + var v = h.nodeName.toUpperCase(); + if ("TD" == v || "TH" == v) t(h), e.push(h); + h = h.nextSibling; + } else for (e = b.anCells, h = 0, v = e.length; h < v; h++) { + t(e[h]); + } + (b = b.firstChild ? b : b.nTr) && (b = b.getAttribute("id")) && ha(a.rowId)(d, b); + return { + data: d, + cells: e + }; + } + + function fb(a, b, c, d) { + var e = a.aoData[b], + h = e._aData, + f = [], + g, + k; + + if (null === e.nTr) { + var m = c || A.createElement("tr"); + e.nTr = m; + e.anCells = f; + m._DT_RowIndex = b; + jb(a, e); + var n = 0; + + for (g = a.aoColumns.length; n < g; n++) { + var p = a.aoColumns[n]; + e = (k = c ? !1 : !0) ? A.createElement(p.sCellType) : d[n]; + e._DT_CellIndex = { + row: b, + column: n + }; + f.push(e); + if (k || !(!p.mRender && p.mData === n || l.isPlainObject(p.mData) && p.mData._ === n + ".display")) e.innerHTML = T(a, b, n, "display"); + p.sClass && (e.className += " " + p.sClass); + p.bVisible && !c ? m.appendChild(e) : !p.bVisible && c && e.parentNode.removeChild(e); + p.fnCreatedCell && p.fnCreatedCell.call(a.oInstance, e, T(a, b, n), h, b, n); + } + + F(a, "aoRowCreatedCallback", null, [m, h, b, f]); + } + } + + function jb(a, b) { + var c = b.nTr, + d = b._aData; + + if (c) { + if (a = a.rowIdFn(d)) c.id = a; + d.DT_RowClass && (a = d.DT_RowClass.split(" "), b.__rowc = b.__rowc ? Oa(b.__rowc.concat(a)) : a, l(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass)); + d.DT_RowAttr && l(c).attr(d.DT_RowAttr); + d.DT_RowData && l(c).data(d.DT_RowData); + } + } + + function Jb(a) { + var b, + c, + d = a.nTHead, + e = a.nTFoot, + h = 0 === l("th, td", d).length, + f = a.oClasses, + g = a.aoColumns; + h && (c = l("").appendTo(d)); + var k = 0; + + for (b = g.length; k < b; k++) { + var m = g[k]; + var n = l(m.nTh).addClass(m.sClass); + h && n.appendTo(c); + a.oFeatures.bSort && (n.addClass(m.sSortingClass), !1 !== m.bSortable && (n.attr("tabindex", a.iTabIndex).attr("aria-controls", a.sTableId), kb(a, m.nTh, k))); + m.sTitle != n[0].innerHTML && n.html(m.sTitle); + lb(a, "header")(a, n, m, f); + } + + h && wa(a.aoHeader, d); + l(d).children("tr").children("th, td").addClass(f.sHeaderTH); + l(e).children("tr").children("th, td").addClass(f.sFooterTH); + if (null !== e) for (a = a.aoFooter[0], k = 0, b = a.length; k < b; k++) { + m = g[k], m.nTf = a[k].cell, m.sClass && l(m.nTf).addClass(m.sClass); + } + } + + function xa(a, b, c) { + var d, + e, + h = [], + f = [], + g = a.aoColumns.length; + + if (b) { + c === q && (c = !1); + var k = 0; + + for (d = b.length; k < d; k++) { + h[k] = b[k].slice(); + h[k].nTr = b[k].nTr; + + for (e = g - 1; 0 <= e; e--) { + a.aoColumns[e].bVisible || c || h[k].splice(e, 1); + } + + f.push([]); + } + + k = 0; + + for (d = h.length; k < d; k++) { + if (a = h[k].nTr) for (; e = a.firstChild;) { + a.removeChild(e); + } + e = 0; + + for (b = h[k].length; e < b; e++) { + var m = g = 1; + + if (f[k][e] === q) { + a.appendChild(h[k][e].cell); + + for (f[k][e] = 1; h[k + g] !== q && h[k][e].cell == h[k + g][e].cell;) { + f[k + g][e] = 1, g++; + } + + for (; h[k][e + m] !== q && h[k][e].cell == h[k][e + m].cell;) { + for (c = 0; c < g; c++) { + f[k + c][e + m] = 1; + } + + m++; + } + + l(h[k][e].cell).attr("rowspan", g).attr("colspan", m); + } + } + } + } + } + + function ja(a, b) { + var c = "ssp" == Q(a), + d = a.iInitDisplayStart; + d !== q && -1 !== d && (a._iDisplayStart = c ? d : d >= a.fnRecordsDisplay() ? 0 : d, a.iInitDisplayStart = -1); + c = F(a, "aoPreDrawCallback", "preDraw", [a]); + if (-1 !== l.inArray(!1, c)) V(a, !1);else { + c = []; + var e = 0; + d = a.asStripeClasses; + var h = d.length, + f = a.oLanguage, + g = "ssp" == Q(a), + k = a.aiDisplay, + m = a._iDisplayStart, + n = a.fnDisplayEnd(); + a.bDrawing = !0; + if (a.bDeferLoading) a.bDeferLoading = !1, a.iDraw++, V(a, !1);else if (!g) a.iDraw++;else if (!a.bDestroying && !b) { + Kb(a); + return; + } + if (0 !== k.length) for (b = g ? a.aoData.length : n, f = g ? 0 : m; f < b; f++) { + g = k[f]; + var p = a.aoData[g]; + null === p.nTr && fb(a, g); + var t = p.nTr; + + if (0 !== h) { + var v = d[e % h]; + p._sRowStripe != v && (l(t).removeClass(p._sRowStripe).addClass(v), p._sRowStripe = v); + } + + F(a, "aoRowCallback", null, [t, p._aData, e, f, g]); + c.push(t); + e++; + } else e = f.sZeroRecords, 1 == a.iDraw && "ajax" == Q(a) ? e = f.sLoadingRecords : f.sEmptyTable && 0 === a.fnRecordsTotal() && (e = f.sEmptyTable), c[0] = l("", { + "class": h ? d[0] : "" + }).append(l("", { + valign: "top", + colSpan: na(a), + "class": a.oClasses.sRowEmpty + }).html(e))[0]; + F(a, "aoHeaderCallback", "header", [l(a.nTHead).children("tr")[0], ib(a), m, n, k]); + F(a, "aoFooterCallback", "footer", [l(a.nTFoot).children("tr")[0], ib(a), m, n, k]); + d = l(a.nTBody); + d.children().detach(); + d.append(l(c)); + F(a, "aoDrawCallback", "draw", [a]); + a.bSorted = !1; + a.bFiltered = !1; + a.bDrawing = !1; + } + } + + function ka(a, b) { + var c = a.oFeatures, + d = c.bFilter; + c.bSort && Lb(a); + d ? ya(a, a.oPreviousSearch) : a.aiDisplay = a.aiDisplayMaster.slice(); + !0 !== b && (a._iDisplayStart = 0); + a._drawHold = b; + ja(a); + a._drawHold = !1; + } + + function Mb(a) { + var b = a.oClasses, + c = l(a.nTable); + c = l("
").insertBefore(c); + var d = a.oFeatures, + e = l("
", { + id: a.sTableId + "_wrapper", + "class": b.sWrapper + (a.nTFoot ? "" : " " + b.sNoFooter) + }); + a.nHolding = c[0]; + a.nTableWrapper = e[0]; + a.nTableReinsertBefore = a.nTable.nextSibling; + + for (var h = a.sDom.split(""), f, g, k, m, n, p, t = 0; t < h.length; t++) { + f = null; + g = h[t]; + + if ("<" == g) { + k = l("
")[0]; + m = h[t + 1]; + + if ("'" == m || '"' == m) { + n = ""; + + for (p = 2; h[t + p] != m;) { + n += h[t + p], p++; + } + + "H" == n ? n = b.sJUIHeader : "F" == n && (n = b.sJUIFooter); + -1 != n.indexOf(".") ? (m = n.split("."), k.id = m[0].substr(1, m[0].length - 1), k.className = m[1]) : "#" == n.charAt(0) ? k.id = n.substr(1, n.length - 1) : k.className = n; + t += p; + } + + e.append(k); + e = l(k); + } else if (">" == g) e = e.parent();else if ("l" == g && d.bPaginate && d.bLengthChange) f = Nb(a);else if ("f" == g && d.bFilter) f = Ob(a);else if ("r" == g && d.bProcessing) f = Pb(a);else if ("t" == g) f = Qb(a);else if ("i" == g && d.bInfo) f = Rb(a);else if ("p" == g && d.bPaginate) f = Sb(a);else if (0 !== u.ext.feature.length) for (k = u.ext.feature, p = 0, m = k.length; p < m; p++) { + if (g == k[p].cFeature) { + f = k[p].fnInit(a); + break; + } + } + + f && (k = a.aanFeatures, k[g] || (k[g] = []), k[g].push(f), e.append(f)); + } + + c.replaceWith(e); + a.nHolding = null; + } + + function wa(a, b) { + b = l(b).children("tr"); + var c, d, e; + a.splice(0, a.length); + var h = 0; + + for (e = b.length; h < e; h++) { + a.push([]); + } + + h = 0; + + for (e = b.length; h < e; h++) { + var f = b[h]; + + for (c = f.firstChild; c;) { + if ("TD" == c.nodeName.toUpperCase() || "TH" == c.nodeName.toUpperCase()) { + var g = 1 * c.getAttribute("colspan"); + var k = 1 * c.getAttribute("rowspan"); + g = g && 0 !== g && 1 !== g ? g : 1; + k = k && 0 !== k && 1 !== k ? k : 1; + var m = 0; + + for (d = a[h]; d[m];) { + m++; + } + + var n = m; + var p = 1 === g ? !0 : !1; + + for (d = 0; d < g; d++) { + for (m = 0; m < k; m++) { + a[h + m][n + d] = { + cell: c, + unique: p + }, a[h + m].nTr = f; + } + } + } + + c = c.nextSibling; + } + } + } + + function Pa(a, b, c) { + var d = []; + c || (c = a.aoHeader, b && (c = [], wa(c, b))); + b = 0; + + for (var e = c.length; b < e; b++) { + for (var h = 0, f = c[b].length; h < f; h++) { + !c[b][h].unique || d[h] && a.bSortCellsTop || (d[h] = c[b][h].cell); + } + } + + return d; + } + + function Qa(a, b, c) { + F(a, "aoServerParams", "serverParams", [b]); + + if (b && Array.isArray(b)) { + var d = {}, + e = /(.*?)\[\]$/; + l.each(b, function (n, p) { + (n = p.name.match(e)) ? (n = n[0], d[n] || (d[n] = []), d[n].push(p.value)) : d[p.name] = p.value; + }); + b = d; + } + + var h = a.ajax, + f = a.oInstance, + g = function g(n) { + var p = a.jqXHR ? a.jqXHR.status : null; + if (null === n || "number" === typeof p && 204 == p) n = {}, za(a, n, []); + (p = n.error || n.sError) && ea(a, 0, p); + a.json = n; + F(a, null, "xhr", [a, n, a.jqXHR]); + c(n); + }; + + if (l.isPlainObject(h) && h.data) { + var k = h.data; + var m = "function" === typeof k ? k(b, a) : k; + b = "function" === typeof k && m ? m : l.extend(!0, b, m); + delete h.data; + } + + m = { + data: b, + success: g, + dataType: "json", + cache: !1, + type: a.sServerMethod, + error: function error(n, p, t) { + t = F(a, null, "xhr", [a, null, a.jqXHR]); + -1 === l.inArray(!0, t) && ("parsererror" == p ? ea(a, 0, "Invalid JSON response", 1) : 4 === n.readyState && ea(a, 0, "Ajax error", 7)); + V(a, !1); + } + }; + a.oAjaxData = b; + F(a, null, "preXhr", [a, b]); + a.fnServerData ? a.fnServerData.call(f, a.sAjaxSource, l.map(b, function (n, p) { + return { + name: p, + value: n + }; + }), g, a) : a.sAjaxSource || "string" === typeof h ? a.jqXHR = l.ajax(l.extend(m, { + url: h || a.sAjaxSource + })) : "function" === typeof h ? a.jqXHR = h.call(f, b, g, a) : (a.jqXHR = l.ajax(l.extend(m, h)), h.data = k); + } + + function Kb(a) { + a.iDraw++; + V(a, !0); + Qa(a, Tb(a), function (b) { + Ub(a, b); + }); + } + + function Tb(a) { + var b = a.aoColumns, + c = b.length, + d = a.oFeatures, + e = a.oPreviousSearch, + h = a.aoPreSearchCols, + f = [], + g = oa(a); + var k = a._iDisplayStart; + var m = !1 !== d.bPaginate ? a._iDisplayLength : -1; + + var n = function n(x, w) { + f.push({ + name: x, + value: w + }); + }; + + n("sEcho", a.iDraw); + n("iColumns", c); + n("sColumns", U(b, "sName").join(",")); + n("iDisplayStart", k); + n("iDisplayLength", m); + var p = { + draw: a.iDraw, + columns: [], + order: [], + start: k, + length: m, + search: { + value: e.sSearch, + regex: e.bRegex + } + }; + + for (k = 0; k < c; k++) { + var t = b[k]; + var v = h[k]; + m = "function" == typeof t.mData ? "function" : t.mData; + p.columns.push({ + data: m, + name: t.sName, + searchable: t.bSearchable, + orderable: t.bSortable, + search: { + value: v.sSearch, + regex: v.bRegex + } + }); + n("mDataProp_" + k, m); + d.bFilter && (n("sSearch_" + k, v.sSearch), n("bRegex_" + k, v.bRegex), n("bSearchable_" + k, t.bSearchable)); + d.bSort && n("bSortable_" + k, t.bSortable); + } + + d.bFilter && (n("sSearch", e.sSearch), n("bRegex", e.bRegex)); + d.bSort && (l.each(g, function (x, w) { + p.order.push({ + column: w.col, + dir: w.dir + }); + n("iSortCol_" + x, w.col); + n("sSortDir_" + x, w.dir); + }), n("iSortingCols", g.length)); + b = u.ext.legacy.ajax; + return null === b ? a.sAjaxSource ? f : p : b ? f : p; + } + + function Ub(a, b) { + var c = function c(f, g) { + return b[f] !== q ? b[f] : b[g]; + }, + d = za(a, b), + e = c("sEcho", "draw"), + h = c("iTotalRecords", "recordsTotal"); + + c = c("iTotalDisplayRecords", "recordsFiltered"); + + if (e !== q) { + if (1 * e < a.iDraw) return; + a.iDraw = 1 * e; + } + + d || (d = []); + Ma(a); + a._iRecordsTotal = parseInt(h, 10); + a._iRecordsDisplay = parseInt(c, 10); + e = 0; + + for (h = d.length; e < h; e++) { + ia(a, d[e]); + } + + a.aiDisplay = a.aiDisplayMaster.slice(); + ja(a, !0); + a._bInitComplete || Ra(a, b); + V(a, !1); + } + + function za(a, b, c) { + a = l.isPlainObject(a.ajax) && a.ajax.dataSrc !== q ? a.ajax.dataSrc : a.sAjaxDataProp; + if (!c) return "data" === a ? b.aaData || b[a] : "" !== a ? ma(a)(b) : b; + ha(a)(b, c); + } + + function Ob(a) { + var b = a.oClasses, + c = a.sTableId, + d = a.oLanguage, + e = a.oPreviousSearch, + h = a.aanFeatures, + f = '', + g = d.sSearch; + g = g.match(/_INPUT_/) ? g.replace("_INPUT_", f) : g + f; + b = l("
", { + id: h.f ? null : c + "_filter", + "class": b.sFilter + }).append(l("
+@endsection + + +@section('scripts') + + +@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/essay_edit.blade.php b/Penilaian-Esai/resources/views/student_courses/essay_edit.blade.php new file mode 100644 index 0000000..dfbf271 --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/essay_edit.blade.php @@ -0,0 +1,50 @@ +@extends('layouts.front') +@section('content') +
+

Explanation

+

+ In this page, you will be able to read the explanation of level from another user
+ +

+ +
+ +
+
+
+
+
+ @csrf + @method('PUT') +
+
+ {!! Form::label('name', 'Name:') !!} +

{{ $user_answer->user->name }}

+
+ + +
+ {!! Form::label('content_id', 'Content:') !!} +

{{ $user_answer->essay->questions->content->title }}

+
+ + +
+ {!! Form::label('your_answer', 'Your Answer:') !!} + + +
+ + +
+ {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} + Cancel +
+
+
+
+
+
+
+ +@endsection \ No newline at end of file diff --git a/Penilaian-Esai/resources/views/student_courses/explain.blade.php b/Penilaian-Esai/resources/views/student_courses/explain.blade.php new file mode 100644 index 0000000..24f8313 --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/explain.blade.php @@ -0,0 +1,104 @@ +@extends('layouts.front') +@section('content') + +
+ @if ($title == 'summary') +

Summary Explanation

+ @else +

Code Explanation

+ @endif +

+ In this page, you will be able to read the explanation done by you
+ +

+ +
+
+
+
+
+
+ + + + + @if ($title == 'summary') + + @else + + @endif + + + + + {{-- --}} + + + + @foreach ($explain as $data) + @php + $check_rubrik = \App\Models\ExplainingScore::where( + 'user_answer_id', + $data->id, + )->count(); + // $explaining = \App\Models\ExplainingScore::where( + // 'user_answer_id', + // $data->id, + // )->first(); + $explaining = \App\Models\ExplainingScore::where('user_id', $data->user->id) + ->where('question_id', $data->essay->questions->id) + ->where('content_id', $data->essay->questions->content->id) + ->where('is_accepted', true) + ->first(); + @endphp + + + + + + {{-- @if ($check_rubrik > 0) + + @endif --}} + + + + @endforeach + +
NameLevelContentQuestionYour AnswerAnswer KeyScoreAction
{{ $data->user->name }}{{ $data->essay->questions->content->title }}{!! $data->essay->question !!} + {{-- @if ($data->edited_admin != null) +
Edited by admin
+ @endif --}} +
{{ $data->answer }}{{ $data->essay->answer }} + @if ($explaining) + {{ $data->essay->answer }} + @else + Not Available + @endif + + @if ($explaining?->konteks_penjelasan) + {{ $explaining?->konteks_penjelasan }} + @elseif($explaining?->keruntutan) + {{ $explaining?->keruntutan }} + @elseif($explaining?->kebenaran) + {{ $explaining?->kebenaran }} + @else + Not Scored + @endif +
+
+ @include('stisla-templates::common.paginate', ['records' => $explain]) +
+ +
+
+
+@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/explain_edit.blade.php b/Penilaian-Esai/resources/views/student_courses/explain_edit.blade.php new file mode 100644 index 0000000..f17713d --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/explain_edit.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.front') +@section('content') +
+

Explanation

+

+ In this page, you will be able to read the explanation of level from another user
+ +

+ +
+ +
+
+
+
+
+ @csrf + @method('PUT') +
+ @include('student_courses.explain_field') +
+
+
+
+
+
+ +@endsection \ No newline at end of file diff --git a/Penilaian-Esai/resources/views/student_courses/explain_field.blade.php b/Penilaian-Esai/resources/views/student_courses/explain_field.blade.php new file mode 100644 index 0000000..640d16c --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/explain_field.blade.php @@ -0,0 +1,90 @@ + + +
+{!! Form::label('name', 'Name:') !!} +

{{ $explain->users->name }}

+
+ +@if($title == 1) + +
+ {!! Form::label('level_id', 'Level:') !!} +

{{ $explain->level->name }}

+
+@else + +
+ {!! Form::label('content_id', 'Content:') !!} +

{{ $explain->question->content->title }}

+
+@endif + + +
+ {!! Form::label('description', 'Description:') !!} + {!! Form::hidden('description', null, ['class' => 'form-control', 'id' => 'res']) !!} + +
+
+ + + + + + + + + + + + + + +
+
+ {!! @$explain->description !!} +
+
+ +
+ + +
+{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} +Cancel +
+ +@section('scripts') + +@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/index.blade.php b/Penilaian-Esai/resources/views/student_courses/index.blade.php new file mode 100644 index 0000000..d245dec --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/index.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.front') + +@section('content') +
+
+

Take Your Lesson now

+

+ You can explore and discover various courses available for your learning journey. Browse through a wide range of subjects and topics, and choose the courses that align with your interests and goals.
+ +

+ +
+
+ @foreach($studentCourses as $course) +
+
+ +
+ +

{{ $course->course_name }}

+
+ +
+ {{ substr($course->description, 0, 100) }}
+
+ {{ $course->lessons->count() }} Lessons + {{ $course->student_courses->count() }} Students +
+ +
+ + + +
+
+ @endforeach +
+ +
+@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/leaderboard_student.blade.php b/Penilaian-Esai/resources/views/student_courses/leaderboard_student.blade.php new file mode 100644 index 0000000..72979fe --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/leaderboard_student.blade.php @@ -0,0 +1,58 @@ +@extends('layouts.front') +@section('content') + +
+ +

Leaderboard

+

+ In this page, you will see your position
+ +

+ +
+
+
+
+
+
+ + + + + + + + + + + + + @foreach($data as $item) + @php + $class = ''; + if($item['user']->class == 1){ + $class = 'MI PSDKU PAMEKASAN'; + }else if($item['user']->class == 2){ + $class = 'SIB POLINEMA PUSAT'; + } + @endphp + + + + + + + + + + @endforeach + +
NoBadge NameBadgeNameClassScore
{{ $loop->iteration }}{{ $item['current_badge']->name }} + + {{ $item['user']->name }}{{ $class }}{{ $item['final_score'] }}
+
+
+
+
+
+@endsection \ No newline at end of file diff --git a/Penilaian-Esai/resources/views/student_courses/level.blade.php b/Penilaian-Esai/resources/views/student_courses/level.blade.php new file mode 100644 index 0000000..cf267fa --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/level.blade.php @@ -0,0 +1,173 @@ +@extends('layouts.front') + +@section('content') +
+

Start Your Lesson now

+

+ levels serve as milestones that learners can progress through, providing structure, motivation, and rewards.
+ +

+ +
+
+ @foreach($level as $level) +
+
+ @php + $level_down = $level->id - 1; + $lessons1 = \App\Models\Lesson::where('level_id', $level_down)->pluck('id'); + $content1 = \App\Models\Content::whereIn('lesson_id', $lessons1)->pluck('id'); + $question1 = \App\Models\Question::whereIn('content_id', $content1)->pluck('id')->toArray(); + + $firstContent = $level->lessons->first()->contents->first(); + $check = \App\Models\UserScore::where('user_id', Auth::user()->id)->where('level_id', $level_down)->orderBy('question_id', 'asc')->pluck('question_id')->toArray(); + + $diff = array_diff($question1, $check); + if(empty($diff)){ + $is_pass = 1; + } else{ + $is_pass =0; + } + + $check_explain = \App\Models\Explains::where("user_id", Auth::id())->where('level_id', $level_down)->where('code', 0)->count(); + @endphp +
+ {{--level 1 selalu dapat diakses--}} + @if($level->id == 1) +
+ + + +
+
{{$level->name}}
+

{{$level->description}}

+ Start Lesson + @else + {{--selain level 1 harus melalui pengecekan. apakah semua question di dalam level telah dikerjakan. jika ya, level terbuka--}} + @if($is_pass == 1) +
+ + + +
+
{{$level->name}}
+

{{$level->description}}

+ Start Lesson + {{--@elseif($is_pass == 1 && $check_explain == 0) +
+ + + +
+
{{$level->name}}
+

{{$level->description}}

+ + + + + + --}} + @else + {{--jika tidak, level tertutup--}} +
+ + + +
+
{{$level->name}}
+

{{$level->description}}

+ + Start Lesson + + @endif + @endif +
+
+
+ @endforeach + + +
+ +@endsection +@section('scripts') + +@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/my_course.blade.php b/Penilaian-Esai/resources/views/student_courses/my_course.blade.php new file mode 100644 index 0000000..e7d6d17 --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/my_course.blade.php @@ -0,0 +1,492 @@ +@extends('layouts.front') + +@section('content') + +
+
+
+ + +
+
+ +
+ @if ($content != null) +
+
+

{{ $content->title }}

+
+
+
{!! $content->description !!}
+ +

+
+ +
+
+
+ + + @if (sizeof($questions) != 0 && empty($score)) +
+ {{ $score }} +
+
Questions
+ +
+ @foreach ($questions as $index => $question) + @if ($question->is_essay == '0') +
{{ $index + 1 }}.{!! $question->question !!}
+
+ Your answer +
+ @foreach ($question->answers as $answer) +
+ + {{ $answer->answer }} +
+ @endforeach +
+
+ +

+ @endif + @endforeach + + {{-- + Finish + --}} + + +
+ +
+
+ @endif + + + @if (sizeof($code_tests) != 0) + @foreach ($code_tests as $index => $question) +
+
+
+

Exercise

+
+
+ {!! $question->question !!} + {{-- @if (in_array($question->id, $finish_code_tests)) + See Result + @else --}} + + + @if ($check_read == 0 && $content->id > 1) + Let's Test + @else + Let's Test + @endif + + + + {{-- @endif --}} + + {{--

--}} + {{-- write your answer --}} + {{-- --}} + {{--
--}} + {{--
--}} + {{--
--}} + {{--
--}} + + {{--
--}} + + {{--

--}} + {{-- Output
--}} + {{--
 --}}
+                                        
+
+ +
+ @endforeach + @endif + + @if (!empty($score)) +
+
Your score is: {{ @$score->score }}
+
+ @endif + @endif +
+ +
+
+
+
+
Total Score: {{ $final_score }} +
+
+ Your Badge is {{ $current_badge->name }} + +

+ +
+ Your Code Test Progress ({{ $percentage }}%) +
+
+ {{ $percentage }}%
+
+
+ +
+
+
+
+
+ Lesson Content +
+
+ @foreach ($level->lessons as $index => $lesson) +
+
+ + {{ $lesson->title }} +
+
+
+
+ @foreach ($lesson->contents as $key => $content) + @php + + if ($index == 0) { + if ($key > 0) { + $content_id = $lesson->contents[$key - 1]->id; + $question = \App\Models\Question::where('content_id', $content_id)->pluck('id')->toArray(); + $check = \App\Models\UserScore::where('user_id', Auth::user()->id) + ->where('content_id', $content_id) + ->count(); + if ($check > 0) { + $is_open = 1; + } else { + $is_open = 0; + } + } else { + $is_open = 1; + } + } else { + if ($key == 0) { + $prev_lesson = $level->lessons[$index - 1]->id; + $content_id = \App\Models\Content::where('lesson_id', $prev_lesson)->pluck('id')->last(); + $question = \App\Models\Question::where('content_id', $content_id)->pluck('id')->toArray(); + $check = \App\Models\UserScore::where('user_id', Auth::user()->id) + ->where('content_id', $content_id) + ->count(); + if ($check > 0) { + $is_open = 1; + } else { + $is_open = 0; + } + } elseif ($key > 0) { + $content_id = $lesson->contents[$key - 1]->id; + $question = \App\Models\Question::where('content_id', $content_id)->pluck('id')->toArray(); + $check = \App\Models\UserScore::where('user_id', Auth::user()->id) + ->where('content_id', $content_id) + ->count(); + if ($check > 0) { + $is_open = 1; + } else { + $is_open = 0; + } + } + } + @endphp + + @if ($is_open == 1) + + {{ $content->title }} + + + + + + + + @else + + {{ $content->title }} + + + + + + + + @endif + @endforeach +
+ +
+
+
+ @endforeach +
+
+
+ + + {{-- @if ($is_last == 1 && $check_explain == 0) +
+ +
--}} + @if ($is_last == 1) + + @endif + +
+ +
+
+ + + +@endsection + +@section('scripts') + + + + + + + + +@endsection diff --git a/Penilaian-Esai/resources/views/student_courses/report.blade.php b/Penilaian-Esai/resources/views/student_courses/report.blade.php new file mode 100644 index 0000000..c79d559 --- /dev/null +++ b/Penilaian-Esai/resources/views/student_courses/report.blade.php @@ -0,0 +1,143 @@ +@extends('layouts.front') +@section('content') +
+

My report

+
+
+
+
+ Your badge +

{{ $current_badge->name }}

+ +
+
+
+ +
+
+
+ Your Score +

{{ $final_score }}

+
+
+
+ +
+
+
+ Your progress +

{{ $percentage }} %

+
+
{{ $percentage }}%
+
+
+
+
+ +
+
+
+ Finished test +

{{ sizeof($finish_code_tests) }} Test

+
+
+
+

+ +

Code Test Report

+ @foreach ($code_score as $sc) +
+
+ @php + $q = \App\Models\Question::find($sc->question_id); + $c = \App\Models\Content::find($sc->content_id); + $wondering = \App\Models\WonderingScore::where(["user_id" => Auth::id()])->where('content_id', $c->id)->sum("score"); + $exploring = \App\Models\UserScore::where("user_id", Auth::id())->where('question_id', $q->id)->sum("score"); + $score = \App\Models\TotalScore::where('user_id', Auth::id())->where('question_id', $q->id)->sum("score"); + + $explain = 0; + if($score != 0){ + $explain = $score - ($wondering + $exploring); + } + + @endphp + +
+
+
+
+
{{ $q->question_name }}
+ Question Name +
+ + {{--
+ @php + $f = \Carbon\Carbon::parse($sc->started_at); + $t = \Carbon\Carbon::parse($sc->ended_at); + $h = $t->diff($f)->format('%Hh %Im %Ss'); + @endphp + + + On Timer {{ $sc->on_timer }} + + + Duration: {{ $h }} + +
+
+ {{ $sc->started_at }} + {{ $sc->ended_at }} +
+
--}} + +
+ @php + $err = \App\Models\ExerciseCodeLog::where(['user_id' => Auth::id(), 'question_id' => $sc->question_id, 'is_error' => 1]); + $sucess = \App\Models\ExerciseCodeLog::where(['user_id' => Auth::id(), 'question_id' => $sc->question_id, 'is_error' => 0]) + @endphp + + {{ $err->count() }} Errors +
+
+ +
+ + {{ $sucess->count() }} Success +
+
+ +
+ + Read Score: {{ $wondering }} + +
+ +
+ + Coding Score: {{ $sc->score }} + +
+ +
+ + Essay Score: {{ $explain }} + +
+ + +
+
+
+
+
+ @endforeach + + +
+@endsection diff --git a/Penilaian-Esai/resources/views/welcome.blade.php b/Penilaian-Esai/resources/views/welcome.blade.php new file mode 100644 index 0000000..dd6a45d --- /dev/null +++ b/Penilaian-Esai/resources/views/welcome.blade.php @@ -0,0 +1,132 @@ + + + + + + + Laravel + + + + + + + + + + +
+ @if (Route::has('login')) + + @endif + +
+
+ + + + + +
+ +
+
+
+ + +
+
+ Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. +
+
+
+ +
+
+ + +
+ +
+
+ Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. +
+
+
+ +
+
+ + +
+ +
+
+ Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. +
+
+
+ +
+
+ +
Vibrant Ecosystem
+
+ +
+
+ Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. +
+
+
+
+
+ +
+
+
+ + + + + + Shop + + + + + + + + Sponsor + +
+
+ +
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
+
+
+
+ + diff --git a/Penilaian-Esai/routes/api.php b/Penilaian-Esai/routes/api.php new file mode 100644 index 0000000..47e9348 --- /dev/null +++ b/Penilaian-Esai/routes/api.php @@ -0,0 +1,49 @@ +get('/user', function (Request $request) { + return $request->user(); +}); + + +Route::resource('roles', App\Http\Controllers\API\RoleAPIController::class); + + +Route::resource('courses', App\Http\Controllers\API\CourseAPIController::class); + + +Route::resource('lessons', App\Http\Controllers\API\lessonAPIController::class); + + +Route::resource('contents', App\Http\Controllers\API\ContentAPIController::class); + + +Route::resource('questions', App\Http\Controllers\API\QuestionAPIController::class); + +Route::get('questions/get_question_answers/{content_id}', [App\Http\Controllers\API\QuestionAPIController::class, "getQuestionAnswer"]); +Route::post('questions/check_answer', [App\Http\Controllers\API\QuestionAPIController::class, "checkAnswer"]); + +Route::post("questions/error_code_log/create", [App\Http\Controllers\ErrorCodeLogController::class, "create"]); + +Route::post("questions/exercise_code_log/create", [App\Http\Controllers\ExerciseCodeLogController::class, "create"]); + + +Route::get("dashboard/get_chart_data", [App\Http\Controllers\API\DashboardAPIController::class, "getChartData"]); + + +Route::resource('badge_settings', App\Http\Controllers\API\BadgeSettingAPIController::class); \ No newline at end of file diff --git a/Penilaian-Esai/routes/channels.php b/Penilaian-Esai/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/Penilaian-Esai/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/Penilaian-Esai/routes/console.php b/Penilaian-Esai/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/Penilaian-Esai/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/Penilaian-Esai/routes/web.php b/Penilaian-Esai/routes/web.php new file mode 100644 index 0000000..f60f2e9 --- /dev/null +++ b/Penilaian-Esai/routes/web.php @@ -0,0 +1,90 @@ +name("home"); + +Route::prefix('api')->middleware('api')->as('api.'); + +Auth::routes(); + +//Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); + +Route::group(['middleware' => ['auth', 'admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () { + // Route::get("/", [App\Http\Controllers\Admin\DashboardController::class, "index"])->name("dashboard"); + Route::get("/", [App\Http\Controllers\Admin\DashboardController::class, "leaderboard"])->name("leaderboard"); + Route::resource('roles', App\Http\Controllers\Admin\RoleController::class); + Route::resource('courses', App\Http\Controllers\Admin\CourseController::class); + Route::resource('lessons', App\Http\Controllers\Admin\LessonController::class); + Route::resource('contents', App\Http\Controllers\Admin\ContentController::class); + Route::resource('questions', App\Http\Controllers\Admin\QuestionController::class); + Route::resource('users', App\Http\Controllers\Admin\UserController::class); + Route::resource('badgeSettings', \App\Http\Controllers\Admin\BadgeSettingController::class); + Route::resource('level', App\Http\Controllers\Admin\LevelController::class); + Route::resource('explaination', App\Http\Controllers\Admin\ExplanationController::class); + Route::put('/update/code/explaination/{id}', [App\Http\Controllers\Admin\ExplanationController::class, "updateCode"])->name('code.update.explanation'); + Route::get('/code/explaination', [App\Http\Controllers\Admin\ExplanationController::class, "showCode"])->name('code.index.explanation'); + Route::get('/edit/code/explaination/{id}', [App\Http\Controllers\Admin\ExplanationController::class, "editCode"])->name('code.edit.explanation'); + Route::get("/report/{user_id?}", [\App\Http\Controllers\Admin\DashboardController::class, "report"])->name("dashboard.report"); + Route::get("/penilaian/{user_id}/{content_id}", [\App\Http\Controllers\Admin\DashboardController::class, "penilaian"])->name("dashboard.penilaian"); + Route::post("/create/penilaian", [\App\Http\Controllers\Admin\DashboardController::class, "addPenilaian"])->name("dashboard.add.penilaian"); +}); + +Route::group(['middleware' => ["auth"]], function () { + //leaderboard + Route::get("/courses/leaderboard", [App\Http\Controllers\Admin\DashboardController::class, "leaderboard"])->name("student_course.leaderboard"); + + Route::get("/courses/my_course", [\App\Http\Controllers\StudentCourseController::class, "index"])->name("student_course.my_course"); + Route::post("/take_course", [\App\Http\Controllers\StudentCourseController::class, "takeCourse"])->name("student_course.take"); + Route::get("/courses/my_course/{course_id}/{level_id}", [\App\Http\Controllers\StudentCourseController::class, "my_course"])->name("student_course.my_course.detail"); + Route::get("/courses/my_course/{course_id}/{level_id}/detail/{content_id?}", [\App\Http\Controllers\StudentCourseController::class, "my_course"])->name("student_course.my_course.detail.content"); + Route::get("/courses/detail/{course_id}", [\App\Http\Controllers\StudentCourseController::class, "detail"])->name("student_course.detail"); + Route::get("/courses/code_test/{question_id}", [\App\Http\Controllers\CodeTestController::class, "index"])->name("code_test"); + Route::post("/courses/code_test/{question_id}/submit", [\App\Http\Controllers\CodeTestController::class, "codeTestSubmit"])->name("code_test.submit"); + Route::get("/courses/report", [\App\Http\Controllers\StudentCourseController::class, "report"])->name("student_course.report"); + Route::get("/courses/level/{course_id}", [\App\Http\Controllers\StudentCourseController::class, "level"])->name("student_course.level"); + Route::get("/courses/report/detail/{question_id}", [\App\Http\Controllers\StudentCourseController::class, "detailReport"])->name("student_course.report.detail"); + Route::post("/courses/explain/{level_id}", [\App\Http\Controllers\ExplainingController::class, "create"])->name("student_course.explain"); + + //wondering + Route::post("/courses/read/score", [\App\Http\Controllers\StudentCourseController::class, "readScore"])->name("student_course.read.score"); + + + Route::get("/explain", [\App\Http\Controllers\ExplainingController::class, "show"])->name("student_course.show.explain"); + Route::get("/explain/code", [\App\Http\Controllers\ExplainingController::class, "showCode"])->name("student_course.show.explain.code"); + Route::get("/essay/edit/{id}", [\App\Http\Controllers\ExplainingController::class, "editEssay"])->name("student_course.essay.edit"); + Route::put("/essay/update/{id}", [\App\Http\Controllers\ExplainingController::class, "updateEssay"])->name("essay.update"); + + Route::get("/explain/edit/{id}", [\App\Http\Controllers\ExplainingController::class, "edit"])->name('student_course.edit.explain'); + Route::get("/explain/code/edit/{id}", [\App\Http\Controllers\ExplainingController::class, "editCode"])->name('student_course.code.edit.explain'); + Route::put("/explain/update/{id}/{title}", [\App\Http\Controllers\ExplainingController::class, "update"])->name("student_course.update.explain"); + Route::get("/table/explain", [\App\Http\Controllers\ExplainingController::class, "tableExplain"])->name("table.explain"); +}); + +Route::get('generator_builder', '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@builder')->name('io_generator_builder'); + +Route::get('field_template', '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@fieldTemplate')->name('io_field_template'); + +Route::get('relation_field_template', '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@relationFieldTemplate')->name('io_relation_field_template'); + +Route::post('generator_builder/generate', '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@generate')->name('io_generator_builder_generate'); + +Route::post('generator_builder/rollback', '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@rollback')->name('io_generator_builder_rollback'); + +Route::post( + 'generator_builder/generate-from-file', + '\InfyOm\GeneratorBuilder\Controllers\GeneratorBuilderController@generateFromFile' +)->name('io_generator_builder_generate_from_file'); diff --git a/Penilaian-Esai/storage/app/.gitignore b/Penilaian-Esai/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/Penilaian-Esai/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/Penilaian-Esai/storage/app/public/.gitignore b/Penilaian-Esai/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/storage/framework/.gitignore b/Penilaian-Esai/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/Penilaian-Esai/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/Penilaian-Esai/storage/framework/cache/.gitignore b/Penilaian-Esai/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/Penilaian-Esai/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/Penilaian-Esai/storage/framework/cache/data/.gitignore b/Penilaian-Esai/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/storage/framework/sessions/.gitignore b/Penilaian-Esai/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/storage/framework/testing/.gitignore b/Penilaian-Esai/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/storage/framework/views/.gitignore b/Penilaian-Esai/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/storage/logs/.gitignore b/Penilaian-Esai/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Penilaian-Esai/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Penilaian-Esai/tests/ApiTestTrait.php b/Penilaian-Esai/tests/ApiTestTrait.php new file mode 100644 index 0000000..0676ff1 --- /dev/null +++ b/Penilaian-Esai/tests/ApiTestTrait.php @@ -0,0 +1,32 @@ +assertApiSuccess(); + + $response = json_decode($this->response->getContent(), true); + $responseData = $response['data']; + + $this->assertNotEmpty($responseData['id']); + $this->assertModelData($actualData, $responseData); + } + + public function assertApiSuccess() + { + $this->response->assertStatus(200); + $this->response->assertJson(['success' => true]); + } + + public function assertModelData(Array $actualData, Array $expectedData) + { + foreach ($actualData as $key => $value) { + if (in_array($key, ['created_at', 'updated_at'])) { + continue; + } + $this->assertEquals($actualData[$key], $expectedData[$key]); + } + } +} diff --git a/Penilaian-Esai/tests/CreatesApplication.php b/Penilaian-Esai/tests/CreatesApplication.php new file mode 100644 index 0000000..547152f --- /dev/null +++ b/Penilaian-Esai/tests/CreatesApplication.php @@ -0,0 +1,22 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/Penilaian-Esai/tests/Feature/ExampleTest.php b/Penilaian-Esai/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..78ccc21 --- /dev/null +++ b/Penilaian-Esai/tests/Feature/ExampleTest.php @@ -0,0 +1,21 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/Penilaian-Esai/tests/TestCase.php b/Penilaian-Esai/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/Penilaian-Esai/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/Penilaian-Esai/webpack.mix.js b/Penilaian-Esai/webpack.mix.js new file mode 100644 index 0000000..5d27776 --- /dev/null +++ b/Penilaian-Esai/webpack.mix.js @@ -0,0 +1,67 @@ +const mix = require('laravel-mix'); + +/* + |-------------------------------------------------------------------------- + | Mix Asset Management + |-------------------------------------------------------------------------- + | + | Mix provides a clean, fluent API for defining some Webpack build steps + | for your Laravel applications. By default, we are compiling the CSS + | file for the application as well as bundling up all the JS files. + | + */ + +mix.js('resources/js/app.js', 'public/js'); +mix.styles(['resources/js/app.js'], 'public/css/app.css').version(); + +mix.styles([ + 'public/css/social-icons.css', + 'public/css/owl.carousel.css', + 'public/css/owl.theme.css', + 'public/css/prism.css', + 'public/css/main.css', + 'public/css/custom.css', +], 'public/css/all.css').version(); + +mix.js( + 'public/js/scripts.js', 'public/js/scripts.min.js') + .js('resources/assets/js/profile.js', 'public/assets/js/profile.js') + .js('resources/assets/js/custom/custom.js', 'public/assets/js/custom/custom.js') + .js('resources/assets/js/custom/custom-datatable.js', 'public/assets/js/custom/custom-datatable.js') + .version(); + + +mix.copy('node_modules/bootstrap/dist/css/bootstrap.min.css', + 'public/assets/css/bootstrap.min.css'); + +mix.copy('node_modules/datatables.net-dt/css/jquery.dataTables.min.css', + 'public/assets/css/jquery.dataTables.min.css'); +mix.copy('node_modules/datatables.net-dt/images', 'public/assets/images'); +mix.copy('node_modules/select2/dist/css/select2.min.css', + 'public/assets/css/select2.min.css'); +mix.copy('node_modules/sweetalert/dist/sweetalert.css', + 'public/assets/css/sweetalert.css'); +mix.copy('node_modules/izitoast/dist/css/iziToast.min.css', + 'public/assets/css/iziToast.min.css'); + +mix.copyDirectory('node_modules/@fortawesome/fontawesome-free/css', + 'public/assets/css/@fortawesome/fontawesome-free/css'); +mix.copyDirectory('node_modules/@fortawesome/fontawesome-free/webfonts', + 'public/assets/css/@fortawesome/fontawesome-free/webfonts'); + +mix.babel('node_modules/jquery.nicescroll/dist/jquery.nicescroll.js', + 'public/assets/js/jquery.nicescroll.js'); +mix.babel('node_modules/jquery/dist/jquery.min.js', + 'public/assets/js/jquery.min.js'); +mix.babel('node_modules/popper.js/dist/umd/popper.min.js', + 'public/assets/js/popper.min.js'); +mix.babel('node_modules/bootstrap/dist/js/bootstrap.min.js', + 'public/assets/js/bootstrap.min.js'); +mix.babel('node_modules/datatables.net/js/jquery.dataTables.min.js', + 'public/assets/js/jquery.dataTables.min.js'); +mix.babel('node_modules/select2/dist/js/select2.min.js', + 'public/assets/js/select2.min.js'); +mix.babel('node_modules/sweetalert/dist/sweetalert.min.js', + 'public/assets/js/sweetalert.min.js'); +mix.babel('node_modules/izitoast/dist/js/iziToast.min.js', + 'public/assets/js/iziToast.min.js'); diff --git a/gamification_testing.sql b/gamification_testing.sql new file mode 100644 index 0000000..5c612db --- /dev/null +++ b/gamification_testing.sql @@ -0,0 +1,4951 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.0 +-- https://www.phpmyadmin.net/ +-- +-- Host: localhost:3306 +-- Generation Time: Dec 07, 2024 at 05:36 AM +-- Server version: 8.0.30 +-- PHP Version: 8.2.24 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `gamification_testing` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `answers` +-- + +CREATE TABLE `answers` ( + `id` bigint UNSIGNED NOT NULL, + `question_id` int UNSIGNED DEFAULT NULL, + `answer` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `is_right` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `answers` +-- + +INSERT INTO `answers` (`id`, `question_id`, `answer`, `is_right`, `created_at`, `updated_at`) VALUES +(17, 24, 'untuk menuliskan output pada baris baru', 'true', '2023-01-30 06:44:49', '2023-01-30 06:44:49'), +(18, 24, 'untuk menuliskan output pada baris yang sama', NULL, '2023-01-30 06:44:49', '2023-01-30 06:44:49'), +(19, 24, 'untuk mengeluarkan output text', NULL, '2023-01-30 06:44:49', '2023-01-30 06:44:49'), +(20, 24, 'untuk membuat input keyboard', NULL, '2023-01-30 06:44:49', '2023-01-30 06:44:49'), +(21, 25, '1', 'true', '2023-02-18 00:47:48', '2023-02-18 00:47:48'), +(22, 25, '2', NULL, '2023-02-18 00:47:48', '2023-02-18 00:47:48'), +(23, 25, '3', NULL, '2023-02-18 00:47:48', '2023-02-18 00:47:48'), +(24, 25, '!z', NULL, '2023-02-18 00:47:48', '2023-02-18 00:47:48'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `badge_settings` +-- + +CREATE TABLE `badge_settings` ( + `id` int UNSIGNED NOT NULL, + `name` text COLLATE utf8mb4_unicode_ci NOT NULL, + `file` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `min` int NOT NULL, + `max` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `badge_settings` +-- + +INSERT INTO `badge_settings` (`id`, `name`, `file`, `min`, `max`, `created_at`, `updated_at`) VALUES +(1, 'Warrior', '20220728171009.png', 0, 150, NULL, '2023-06-01 20:54:23'), +(2, 'Elite', '20220728172040.png', 151, 300, NULL, '2023-06-01 20:54:52'), +(3, 'Master', '20220728172051.png', 301, 450, '2022-06-01 15:10:34', '2023-06-01 20:54:57'), +(4, 'Grand Master', '20220728172104.png', 451, 600, '2022-06-01 15:10:34', '2023-06-01 20:55:10'), +(5, 'Epic', '20220728172117.png', 601, 750, '2022-06-01 15:11:23', '2023-06-01 20:56:15'), +(6, 'King', '20220728172150.png', 751, 900, '2022-06-01 15:11:23', '2023-06-01 20:56:38'), +(7, 'Divine', '20220728172317.png', 901, 1300, '2022-06-01 15:12:06', '2023-06-01 20:57:01'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `code_error_logs` +-- + +CREATE TABLE `code_error_logs` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `total_count` int NOT NULL, + `error_message` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `code_error_logs` +-- + +INSERT INTO `code_error_logs` (`id`, `user_id`, `question_id`, `total_count`, `error_message`, `created_at`, `updated_at`) VALUES +(7, 34, 12, 1, 'openjdk 11.0.15 2022-04-19\nOpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1)\nOpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1, mixed mode, sharing)\nHello, World!JUnit version 4.13.2\n.E\nTime: 0.008\nThere was 1 failure:\n1) isHelloWorld(example_gmail_com.JUnitHelloWorldTest)\norg.junit.ComparisonFailure: Is Hello World expected: but was:\n at org.junit.Assert.assertEquals(Assert.java:117)\n at example_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\n\nFAILURES!!!\nTests run: 1, Failures: 1', '2022-07-28 12:13:59', '2022-07-28 12:13:59'), +(8, 34, 13, 1, 'java_files/example_gmail_com/MyClass.java:7: error: incompatible types: possible lossy conversion from double to int\n double result = x = y;\n ^\n1 error\nTEST FAILED!', '2022-07-28 12:14:47', '2022-07-28 12:14:47'), +(9, 34, 13, 1, 'java_files/example_gmail_com/MyClass.java:7: error: \';\' expected\n double result = x + y\n ^\n1 error\nTEST FAILED!', '2022-07-28 12:14:56', '2022-07-28 12:14:56'), +(10, 34, 16, 1, 'java_files/example_gmail_com/Order.java:7: error: illegal start of expression\n if(itemCost <>> 24.00) {\n ^\n1 error\nTEST FAILED!', '2022-07-28 12:15:51', '2022-07-28 12:15:51'), +(11, 34, 16, 1, 'java_files/example_gmail_com/Order.java:7: error: bad operand types for binary operator \'>>\'\n if(itemCost >> 24.00) {\n ^\n first type: double\n second type: double\n1 error\nTEST FAILED!', '2022-07-28 12:15:56', '2022-07-28 12:15:56'), +(12, 34, 16, 1, 'java_files/example_gmail_com/Order.java:12: error: unclosed character literal\n System.out.print(\'order\');\n ^\njava_files/example_gmail_com/Order.java:12: error: unclosed character literal\n System.out.print(\'order\');\n ^\njava_files/example_gmail_com/Order.java:12: error: not a statement\n System.out.print(\'order\');\n ^\n3 errors\nTEST FAILED!', '2022-07-28 12:16:19', '2022-07-28 12:16:19'), +(13, 34, 15, 1, 'java_files/example_gmail_com/NewsFeed.java:14: error: cannot find symbol\n String topicArray = Arrays.toString(topics);\n ^\n symbol: variable Arrays\n location: class NewsFeed\n1 error\nTEST FAILED!', '2022-07-28 12:17:05', '2022-07-28 12:17:05'), +(14, 34, 15, 1, 'java_files/example_gmail_com/NewsFeed.java:14: error: cannot find symbol\n String topicArray = arrays.toString(topics);\n ^\n symbol: variable arrays\n location: class NewsFeed\n1 error\nTEST FAILED!', '2022-07-28 12:17:18', '2022-07-28 12:17:18'), +(15, 34, 15, 1, 'java_files/example_gmail_com/NewsFeed.java:3: error: \';\' expected\nimport java.util.Arrays\n ^\n1 error\nTEST FAILED!', '2022-07-28 12:17:39', '2022-07-28 12:17:39'), +(16, 1, 12, 1, 'openjdk 11.0.15 2022-04-19\nOpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1)\nOpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1, mixed mode, sharing)\nHello, World!JUnit version 4.13.2\n.E\nTime: 0.007\nThere was 1 failure:\n1) isHelloWorld(admin_gmail_com.JUnitHelloWorldTest)\norg.junit.ComparisonFailure: Is Hello World expected: but was:\n at org.junit.Assert.assertEquals(Assert.java:117)\n at admin_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\n\nFAILURES!!!\nTests run: 1, Failures: 1', '2022-07-29 04:51:19', '2022-07-29 04:51:19'), +(17, 1, 15, 1, 'java_files/admin_gmail_com/NewsFeed.java:3: error: expected\nimport java.util.Arrays.\n ^\n1 error\nTEST FAILED!', '2022-07-31 08:29:06', '2022-07-31 08:29:06'), +(18, 1, 13, 1, 'openjdk 11.0.15 2022-04-19\nOpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1)\nOpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1, mixed mode, sharing)\n35JUnit version 4.13.2\n.E\nTime: 0.008\nThere was 1 failure:\n1) myResultTest(admin_gmail_com.JUnitMyClassTest)\njava.lang.NoClassDefFoundError: admin_gmail_com/MyClass\n at admin_gmail_com.JUnitMyClassTest.myResultTest(JUnitMyClassTest.java:30)\n ... 34 trimmed\nCaused by: java.lang.ClassNotFoundException: admin_gmail_com.MyClass\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)\n ... 36 more\n\nFAILURES!!!\nTests run: 1, Failures: 1', '2022-08-03 05:30:42', '2022-08-03 05:30:42'), +(19, 1, 13, 1, 'openjdk 11.0.15 2022-04-19\nOpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1)\nOpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.18.04.1, mixed mode, sharing)\n35JUnit version 4.13.2\n.E\nTime: 0.007\nThere was 1 failure:\n1) myResultTest(admin_gmail_com.JUnitMyClassTest)\norg.junit.ComparisonFailure: MyClass Double Result expected:<35[.5]> but was:<35[]>\n at org.junit.Assert.assertEquals(Assert.java:117)\n at admin_gmail_com.JUnitMyClassTest.myResultTest(JUnitMyClassTest.java:31)\n\nFAILURES!!!\nTests run: 1, Failures: 1', '2022-08-03 05:30:43', '2022-08-03 05:30:43'), +(20, 37, 22, 1, 'java_files\\adminku_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\njava_files\\adminku_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\n2 errors\r\nTEST FAILED!', '2023-01-18 00:52:47', '2023-01-18 00:52:47'), +(21, 38, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHello, World!\r\nJUnit version 4.13.2\r\n.E\r\nTime: 0.017\r\nThere was 1 failure:\r\n1) isHelloWorld(test_gmail_com.JUnitHelloWorldTest)\r\norg.junit.ComparisonFailure: Is Hello World not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-18 00:54:58', '2023-01-18 00:54:58'), +(22, 38, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHello, World!\r\nJUnit version 4.13.2\r\n.E\r\nTime: 0.023\r\nThere was 1 failure:\r\n1) isHelloWorld(test_gmail_com.JUnitHelloWorldTest)\r\norg.junit.ComparisonFailure: Is Hello World not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-18 00:55:21', '2023-01-18 00:55:21'), +(23, 38, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHello, World!JUnit version 4.13.2\r\n.E\r\nTime: 0.019\r\nThere was 1 failure:\r\n1) isHelloWorld(test_gmail_com.JUnitHelloWorldTest)\r\norg.junit.ComparisonFailure: Is Hello World not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-18 00:55:30', '2023-01-18 00:55:30'), +(24, 37, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\neav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [adminku_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: adminku_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 06:58:13', '2023-01-23 06:58:13'), +(25, 37, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [adminku_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: adminku_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 06:59:00', '2023-01-23 06:59:00'), +(26, 39, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n30.5JUnit version 4.13.2\r\n.E\r\nTime: 0.006\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [irul_gmail_com.JUnitMyClasssTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: irul_gmail_com.JUnitMyClasssTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 07:03:28', '2023-01-23 07:03:28'), +(27, 39, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n30.5JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [irul_gmail_com.JUnitMyClasssTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: irul_gmail_com.JUnitMyClasssTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 07:05:49', '2023-01-23 07:05:49'), +(28, 39, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [irul_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: irul_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 07:11:59', '2023-01-23 07:11:59'), +(29, 39, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.006\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [irul_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: irul_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 07:12:56', '2023-01-23 07:12:56'), +(30, 39, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [irul_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: irul_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-23 07:13:36', '2023-01-23 07:13:36'), +(31, 40, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nhello world!JUnit version 4.13.2\r\n.E\r\nTime: 0.035\r\nThere was 1 failure:\r\n1) isHelloWorld(siskanyoba_gmail_com.JUnitHelloWorldTest)\r\norg.junit.ComparisonFailure: Is Hello World not same expected:<[Hello W]orld!> but was:<[hello w]orld!>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at siskanyoba_gmail_com.JUnitHelloWorldTest.isHelloWorld(JUnitHelloWorldTest.java:27)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-01-25 22:01:16', '2023-01-25 22:01:16'), +(32, 41, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n30.5JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [seli_gmail_com.JUnitMyClasssTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: seli_gmail_com.JUnitMyClasssTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-09 22:25:09', '2023-02-09 22:25:09'), +(33, 41, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n30.5JUnit version 4.13.2\r\n.E\r\nTime: 0.008\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [seli_gmail_com.JUnitMyClasssTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: seli_gmail_com.JUnitMyClasssTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-09 22:26:43', '2023-02-09 22:26:43'), +(34, 41, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [seli_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: seli_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-09 22:29:41', '2023-02-09 22:29:41'), +(35, 41, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [seli_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: seli_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-09 22:32:29', '2023-02-09 22:32:29'), +(36, 41, 22, 1, 'java_files\\seli_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\njava_files\\seli_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\n2 errors\r\nTEST FAILED!', '2023-02-09 22:35:00', '2023-02-09 22:35:00'), +(37, 41, 22, 1, 'java_files\\seli_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\njava_files\\seli_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\n2 errors\r\nTEST FAILED!', '2023-02-09 22:36:18', '2023-02-09 22:36:18'), +(38, 43, 13, 1, 'java_files\\riko_gmail_com\\MyClasss.java:3: error: class, interface, enum, or record expected\r\npackage junit;\r\n^\r\n1 error\r\nTEST FAILED!', '2023-02-09 22:40:12', '2023-02-09 22:40:12'), +(39, 43, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n30.5JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitMyClasssTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitMyClasssTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-09 22:40:29', '2023-02-09 22:40:29'), +(40, 43, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 18:53:56', '2023-02-13 18:53:56'), +(41, 43, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 18:55:37', '2023-02-13 18:55:37'), +(42, 43, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 18:58:25', '2023-02-13 18:58:25'), +(43, 43, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 18:58:33', '2023-02-13 18:58:33'), +(44, 43, 22, 1, 'java_files\\riko_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\njava_files\\riko_gmail_com\\OrderCase.java:44: error: unmappable character (0xA0) for encoding UTF-8\r\n ??}\r\n ^\r\n2 errors\r\nTEST FAILED!', '2023-02-13 19:01:35', '2023-02-13 19:01:35'), +(45, 43, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\neav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:07:12', '2023-02-13 19:07:12'), +(46, 43, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:07:29', '2023-02-13 19:07:29'), +(47, 43, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:07:35', '2023-02-13 19:07:35'), +(48, 43, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:08:51', '2023-02-13 19:08:51'), +(49, 43, 20, 1, 'java_files\\riko_gmail_com\\Password.java:11: error: \')\' expected\r\n System.out.print(password.compareTo(\"correcthorsebatterystaple\");\r\n ^\r\n1 error\r\nTEST FAILED!', '2023-02-13 19:17:56', '2023-02-13 19:17:56'), +(50, 43, 20, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ntrue0JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPasswordTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPasswordTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:18:15', '2023-02-13 19:18:15'), +(51, 43, 20, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n0trueJUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [riko_gmail_com.JUnitPasswordTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: riko_gmail_com.JUnitPasswordTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-13 19:19:39', '2023-02-13 19:19:39'), +(52, 45, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.004\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-17 22:25:40', '2023-02-17 22:25:40'); +INSERT INTO `code_error_logs` (`id`, `user_id`, `question_id`, `total_count`, `error_message`, `created_at`, `updated_at`) VALUES +(53, 45, 18, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitLuckyFiveTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitLuckyFiveTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-17 22:33:57', '2023-02-17 22:33:57'), +(54, 45, 20, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n0trueJUnit version 4.13.2\r\n.E\r\nTime: 0.007\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitPasswordTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitPasswordTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-17 22:39:37', '2023-02-17 22:39:37'), +(55, 45, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'nsJUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:18:39', '2023-02-18 00:18:39'), +(56, 45, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'nsJUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:20:56', '2023-02-18 00:20:56'), +(57, 45, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'nsJUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [gaga_gmail_com.JUnitPoetryTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: gaga_gmail_com.JUnitPoetryTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:22:40', '2023-02-18 00:22:40'), +(58, 46, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!\r\nJUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitOrderTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitOrderTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:28:29', '2023-02-18 00:28:29'), +(59, 46, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!\r\nJUnit version 4.13.2\r\n.E\r\nTime: 0.024\r\nThere was 1 failure:\r\n1) myResultTest(testing_gmail_com.JUnitOrderTest)\r\njava.lang.NoClassDefFoundError: testing_gmail_com/Order\r\n at testing_gmail_com.JUnitOrderTest.myResultTest(JUnitOrderTest.java:29)\r\n ... 32 trimmed\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.Order\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n ... 34 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:37:56', '2023-02-18 00:37:56'), +(60, 46, 16, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!\r\nJUnit version 4.13.2\r\n.E\r\nTime: 0.025\r\nThere was 1 failure:\r\n1) myResultTest(testing_gmail_com.JUnitOrderTest)\r\norg.junit.ComparisonFailure: itemCost Condition not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at testing_gmail_com.JUnitOrderTest.myResultTest(JUnitOrderTest.java:30)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 00:39:14', '2023-02-18 00:39:14'), +(61, 46, 15, 1, 'java_files\\testing_gmail_com\\NewsFeed.java:15: error: cannot find symbol\r\n String topicArray = Arrays.toString(topics);\r\n ^\r\n symbol: variable Arrays\r\n location: class NewsFeed\r\n1 error\r\nTEST FAILED!', '2023-02-18 01:01:00', '2023-02-18 01:01:00'), +(62, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:01:59', '2023-02-18 01:01:59'), +(63, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:02:26', '2023-02-18 01:02:26'), +(64, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:02:40', '2023-02-18 01:02:40'), +(65, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:02:50', '2023-02-18 01:02:50'), +(66, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:04:21', '2023-02-18 01:04:21'), +(67, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:06:01', '2023-02-18 01:06:01'), +(68, 46, 15, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitNewsFeedTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitNewsFeedTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:06:39', '2023-02-18 01:06:39'), +(69, 46, 17, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.E\r\nTime: 0.002\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [testing_gmail_com.JUnitLuckyFiveSecondTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: testing_gmail_com.JUnitLuckyFiveSecondTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-02-18 01:10:00', '2023-02-18 01:10:00'), +(70, 47, 15, 1, 'java_files\\lisa_gmail_com\\NewsFeed.java:14: error: cannot find symbol\r\n String topicArray = Arrays.toString(topics);\r\n ^\r\n symbol: variable Arrays\r\n location: class NewsFeed\r\n1 error\r\nTEST FAILED!', '2023-02-19 21:10:13', '2023-02-19 21:10:13'), +(71, 47, 17, 1, 'java_files\\lisa_gmail_com\\LuckyFiveSecond.java:15: error: \')\' expected\r\n luck.loop(isikan dengan angka);\r\n ^\r\njava_files\\lisa_gmail_com\\LuckyFiveSecond.java:15: error: \';\' expected\r\n luck.loop(isikan dengan angka);\r\n ^\r\n2 errors\r\nTEST FAILED!', '2023-02-19 21:22:56', '2023-02-19 21:22:56'), +(72, 48, 13, 1, 'java_files\\rika_gmail_com\\MyClass.java:3: error: class, interface, enum, or record expected\r\npackage junit;\r\n^\r\n1 error\r\nTEST FAILED!', '2023-03-06 05:21:10', '2023-03-06 05:21:10'), +(73, 48, 18, 1, 'java_files\\rika_gmail_com\\LuckyFive.java:13: error: cannot find symbol\r\n luck.loop(6);\r\n ^\r\n symbol: variable luck\r\n location: class LuckyFive\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:22:47', '2023-03-06 06:22:47'), +(74, 48, 18, 1, 'java_files\\rika_gmail_com\\LuckyFive.java:12: error: \';\' expected\r\n classs LuckyFive\r\n ^\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:23:03', '2023-03-06 06:23:03'), +(75, 48, 18, 1, 'java_files\\rika_gmail_com\\LuckyFive.java:12: error: \';\' expected\r\n classs LuckyFive\r\n ^\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:23:26', '2023-03-06 06:23:26'), +(76, 48, 20, 1, 'java_files\\rika_gmail_com\\Password.java:16: error: expected\r\n System.out.print(pass. //equals);\r\n ^\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:26:04', '2023-03-06 06:26:04'), +(77, 48, 20, 1, 'java_files\\rika_gmail_com\\Password.java:16: error: expected\r\n System.out.print(pass. //equals);\r\n ^\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:26:22', '2023-03-06 06:26:22'), +(78, 48, 21, 1, 'java_files\\rika_gmail_com\\Poetry.java:15: error: no suitable method found for substring(no arguments)\r\n System.out.print(line.substring());\r\n ^\r\n method String.substring(int) is not applicable\r\n (actual and formal argument lists differ in length)\r\n method String.substring(int,int) is not applicable\r\n (actual and formal argument lists differ in length)\r\n1 error\r\nTEST FAILED!', '2023-03-06 06:42:51', '2023-03-06 06:42:51'), +(79, 48, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n Heav\'nJUnit version 4.13.2\r\n.E\r\nTime: 0.027\r\nThere was 1 failure:\r\n1) isPoetry(rika_gmail_com.JUnitPoetryTest)\r\norg.junit.ComparisonFailure: Poetry not same expected:<[Heav\'ns]> but was:<[ Heav\'n]>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at rika_gmail_com.JUnitPoetryTest.isPoetry(JUnitPoetryTest.java:29)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-03-06 06:43:15', '2023-03-06 06:43:15'), +(80, 48, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ne Heav\'nsJUnit version 4.13.2\r\n.E\r\nTime: 0.015\r\nThere was 1 failure:\r\n1) isPoetry(rika_gmail_com.JUnitPoetryTest)\r\norg.junit.ComparisonFailure: Poetry not same expected:<[]Heav\'ns> but was:<[e ]Heav\'ns>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at rika_gmail_com.JUnitPoetryTest.isPoetry(JUnitPoetryTest.java:29)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-03-06 06:43:53', '2023-03-06 06:43:53'), +(81, 48, 21, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHeav\'ns JUnit version 4.13.2\r\n.E\r\nTime: 0.016\r\nThere was 1 failure:\r\n1) isPoetry(rika_gmail_com.JUnitPoetryTest)\r\norg.junit.ComparisonFailure: Poetry not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at rika_gmail_com.JUnitPoetryTest.isPoetry(JUnitPoetryTest.java:29)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-03-06 06:44:25', '2023-03-06 06:44:25'), +(82, 50, 23, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nShipping cost: 7.0JUnit version 4.13.2\r\n.E\r\nTime: 0.042\r\nThere was 1 failure:\r\n1) myOrderCaseResult(test0903_gmail_com.JUnitOrderNestTest)\r\norg.junit.ComparisonFailure: ShippingCost not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0903_gmail_com.JUnitOrderNestTest.myOrderCaseResult(JUnitOrderNestTest.java:28)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-03-09 21:42:13', '2023-03-09 21:42:13'), +(83, 50, 23, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nShipping cost: 7.0JUnit version 4.13.2\r\n.E\r\nTime: 0.044\r\nThere was 1 failure:\r\n1) myOrderCaseResult(test0903_gmail_com.JUnitOrderNestTest)\r\norg.junit.ComparisonFailure: ShippingCost not same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0903_gmail_com.JUnitOrderNestTest.myOrderCaseResult(JUnitOrderNestTest.java:28)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', '2023-03-09 21:42:48', '2023-03-09 21:42:48'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `code_history_logs` +-- + +CREATE TABLE `code_history_logs` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `total_count` int NOT NULL, + `message` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `is_error` int NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `code_history_logs` +-- + +INSERT INTO `code_history_logs` (`id`, `user_id`, `question_id`, `total_count`, `message`, `is_error`, `created_at`, `updated_at`) VALUES +(1, 2, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2023-06-01 18:47:05', '2023-06-01 18:47:05'), +(2, 2, 2, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2023-06-01 19:32:08', '2023-06-01 19:32:08'), +(3, 2, 3, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.E\r\nTime: 0.012\r\nThere was 1 failure:\r\n1) initializationError(test0106_gmail_com.JUnitOrderTest)\r\norg.junit.runners.model.InvalidTestClassError: Invalid test class \'test0106_gmail_com.JUnitOrderTest\':\n 1. No runnable methods\r\n at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)\r\n at org.junit.runners.ParentRunner.(ParentRunner.java:102)\r\n at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84)\r\n at org.junit.runners.JUnit4.(JUnit4.java:23)\r\n at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)\r\n at org.junit.runner.Computer.getRunner(Computer.java:50)\r\n at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)\r\n at org.junit.runners.Suite.(Suite.java:81)\r\n at org.junit.runner.Computer$2.(Computer.java:33)\r\n at org.junit.runner.Computer.getSuite(Computer.java:28)\r\n at org.junit.runner.Request.classes(Request.java:77)\r\n at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-01 19:44:07', '2023-06-01 19:44:07'), +(4, 2, 3, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2023-06-01 19:44:48', '2023-06-01 19:44:48'), +(5, 2, 4, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.E\r\nTime: 0.009\r\nThere was 1 failure:\r\n1) initializationError(test0106_gmail_com.JUnitOrderCaseTest)\r\norg.junit.runners.model.InvalidTestClassError: Invalid test class \'test0106_gmail_com.JUnitOrderCaseTest\':\n 1. No runnable methods\r\n at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)\r\n at org.junit.runners.ParentRunner.(ParentRunner.java:102)\r\n at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84)\r\n at org.junit.runners.JUnit4.(JUnit4.java:23)\r\n at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)\r\n at org.junit.runner.Computer.getRunner(Computer.java:50)\r\n at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)\r\n at org.junit.runners.Suite.(Suite.java:81)\r\n at org.junit.runner.Computer$2.(Computer.java:33)\r\n at org.junit.runner.Computer.getSuite(Computer.java:28)\r\n at org.junit.runner.Request.classes(Request.java:77)\r\n at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-01 20:43:59', '2023-06-01 20:43:59'), +(6, 2, 4, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2023-06-01 20:46:37', '2023-06-01 20:46:37'), +(7, 2, 5, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [test0106_gmail_com.JUnitBookStoreTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: test0106_gmail_com.JUnitBookStoreTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-03 05:15:24', '2023-06-03 05:15:24'), +(8, 2, 5, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2023-06-03 05:18:32', '2023-06-03 05:18:32'), +(9, 2, 5, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2023-06-03 05:54:43', '2023-06-03 05:54:43'), +(10, 2, 4, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2023-06-03 05:58:17', '2023-06-03 05:58:17'), +(11, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.E\r\nTime: 0.009\r\nThere was 1 failure:\r\n1) initializationError(test0106_gmail_com.JUnitLuckyFiveTest)\r\norg.junit.runners.model.InvalidTestClassError: Invalid test class \'test0106_gmail_com.JUnitLuckyFiveTest\':\n 1. No runnable methods\r\n at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)\r\n at org.junit.runners.ParentRunner.(ParentRunner.java:102)\r\n at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84)\r\n at org.junit.runners.JUnit4.(JUnit4.java:23)\r\n at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)\r\n at org.junit.runner.Computer.getRunner(Computer.java:50)\r\n at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)\r\n at org.junit.runners.Suite.(Suite.java:81)\r\n at org.junit.runner.Computer$2.(Computer.java:33)\r\n at org.junit.runner.Computer.getSuite(Computer.java:28)\r\n at org.junit.runner.Request.classes(Request.java:77)\r\n at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-03 06:10:57', '2023-06-03 06:10:57'), +(12, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2023-06-03 06:11:30', '2023-06-03 06:11:30'), +(13, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2023-06-03 06:26:19', '2023-06-03 06:26:19'), +(14, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2023-06-03 06:34:31', '2023-06-03 06:34:31'), +(15, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2023-06-03 06:39:19', '2023-06-03 06:39:19'), +(16, 2, 6, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2023-06-03 06:40:22', '2023-06-03 06:40:22'), +(17, 2, 7, 1, 'java_files\\test0106_gmail_com\\LuckyFiveSecond.java:6: error: \';\' expected\r\n int number 6;\r\n ^\r\n1 error\r\nTEST FAILED!', 1, '2023-06-04 06:26:14', '2023-06-04 06:26:14'), +(18, 2, 7, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2023-06-04 06:26:46', '2023-06-04 06:26:46'), +(19, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonnaci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [test0106_gmail_com.JUnitFibonacciTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: test0106_gmail_com.JUnitFibonacciTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:29:11', '2023-06-04 06:29:11'), +(20, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonnaci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.E\r\nTime: 0.005\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [test0106_gmail_com.JUnitFibonacciTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: test0106_gmail_com.JUnitFibonacciTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:34:29', '2023-06-04 06:34:29'), +(21, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonnaci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [test0106_gmail_com.JUnitFibonacciTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: test0106_gmail_com.JUnitFibonacciTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:34:37', '2023-06-04 06:34:37'), +(22, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonnaci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.E\r\nTime: 0.009\r\nThere was 1 failure:\r\n1) initializationError(test0106_gmail_com.JUnitFibonacciTest)\r\norg.junit.runners.model.InvalidTestClassError: Invalid test class \'test0106_gmail_com.JUnitFibonacciTest\':\n 1. No runnable methods\r\n at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)\r\n at org.junit.runners.ParentRunner.(ParentRunner.java:102)\r\n at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84)\r\n at org.junit.runners.JUnit4.(JUnit4.java:23)\r\n at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)\r\n at org.junit.runner.Computer.getRunner(Computer.java:50)\r\n at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)\r\n at org.junit.runners.Suite.(Suite.java:81)\r\n at org.junit.runner.Computer$2.(Computer.java:33)\r\n at org.junit.runner.Computer.getSuite(Computer.java:28)\r\n at org.junit.runner.Request.classes(Request.java:77)\r\n at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:35:26', '2023-06-04 06:35:26'), +(23, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonnaci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.E\r\nTime: 0.035\r\nThere was 1 failure:\r\n1) isFibonnaci(test0106_gmail_com.JUnitFibonacciTest)\r\norg.junit.ComparisonFailure: Output not the same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0106_gmail_com.JUnitFibonacciTest.isFibonnaci(JUnitFibonacciTest.java:30)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:47:46', '2023-06-04 06:47:46'), +(24, 2, 8, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.034\r\n\r\nOK (1 test)', 0, '2023-06-04 06:48:17', '2023-06-04 06:48:17'), +(25, 2, 9, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2023-06-04 06:57:40', '2023-06-04 06:57:40'), +(26, 2, 10, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.E\r\nTime: 0.006\r\nThere was 1 failure:\r\n1) initializationError(test0106_gmail_com.JUnitNewsFeedTest)\r\norg.junit.runners.model.InvalidTestClassError: Invalid test class \'test0106_gmail_com.JUnitNewsFeedTest\':\n 1. No runnable methods\r\n at org.junit.runners.ParentRunner.validate(ParentRunner.java:525)\r\n at org.junit.runners.ParentRunner.(ParentRunner.java:102)\r\n at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84)\r\n at org.junit.runners.JUnit4.(JUnit4.java:23)\r\n at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)\r\n at org.junit.runner.Computer.getRunner(Computer.java:50)\r\n at org.junit.runner.Computer$1.runnerForClass(Computer.java:31)\r\n at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125)\r\n at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111)\r\n at org.junit.runners.Suite.(Suite.java:81)\r\n at org.junit.runner.Computer$2.(Computer.java:33)\r\n at org.junit.runner.Computer.getSuite(Computer.java:28)\r\n at org.junit.runner.Request.classes(Request.java:77)\r\n at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 06:59:49', '2023-06-04 06:59:49'), +(27, 2, 10, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2023-06-04 07:00:33', '2023-06-04 07:00:33'), +(28, 2, 11, 1, 'java_files\\test0106_gmail_com\\Average.java:10: error: illegal start of expression\r\n for([isi iterasi]) {\r\n ^\r\njava_files\\test0106_gmail_com\\Average.java:10: error: \';\' expected\r\n for([isi iterasi]) {\r\n ^\r\n2 errors\r\nTEST FAILED!', 1, '2023-06-04 07:02:57', '2023-06-04 07:02:57'), +(29, 2, 11, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2023-06-04 07:03:19', '2023-06-04 07:03:19'), +(30, 2, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.E\r\nTime: 0.003\r\nThere was 1 failure:\r\n1) initializationError(org.junit.runner.JUnitCommandLineParseResult)\r\njava.lang.IllegalArgumentException: Could not find class [test0106_gmail_com.JUnitLingkaranTest]\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)\r\n at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)\r\n at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)\r\n at org.junit.runner.JUnitCore.main(JUnitCore.java:36)\r\nCaused by: java.lang.ClassNotFoundException: test0106_gmail_com.JUnitLingkaranTest\r\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)\r\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)\r\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)\r\n at java.base/java.lang.Class.forName0(Native Method)\r\n at java.base/java.lang.Class.forName(Class.java:488)\r\n at java.base/java.lang.Class.forName(Class.java:467)\r\n at org.junit.internal.Classes.getClass(Classes.java:42)\r\n at org.junit.internal.Classes.getClass(Classes.java:27)\r\n at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:98)\r\n ... 4 more\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 07:11:39', '2023-06-04 07:11:39'), +(31, 2, 12, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2023-06-04 07:14:44', '2023-06-04 07:14:44'), +(32, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2023-06-04 07:17:58', '2023-06-04 07:17:58'), +(33, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1402551.7307JUnit version 4.13.2\r\n.E\r\nTime: 0.028\r\nThere was 1 failure:\r\n1) isLingkaran(test0106_gmail_com.JUnitBankTest)\r\norg.junit.ComparisonFailure: Output not same expected:<...g setelah 5 tahun: 1[338225.5776]> but was:<...g setelah 5 tahun: 1[402551.7307]>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0106_gmail_com.JUnitBankTest.isLingkaran(JUnitBankTest.java:34)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-06-04 07:18:54', '2023-06-04 07:18:54'), +(34, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.035\r\n\r\nOK (1 test)', 0, '2023-06-04 07:19:18', '2023-06-04 07:19:18'), +(35, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.029\r\n\r\nOK (1 test)', 0, '2023-06-04 07:24:36', '2023-06-04 07:24:36'), +(36, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2023-06-04 07:27:12', '2023-06-04 07:27:12'), +(37, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.046\r\n\r\nOK (1 test)', 0, '2023-06-04 07:28:45', '2023-06-04 07:28:45'), +(38, 2, 13, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2023-06-04 07:29:25', '2023-06-04 07:29:25'), +(39, 2, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2023-06-05 07:24:20', '2023-06-05 07:24:20'), +(40, 2, 10, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.035\r\n\r\nOK (1 test)', 0, '2023-06-06 06:11:33', '2023-06-06 06:11:33'), +(41, 3, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2023-06-07 07:34:30', '2023-06-07 07:34:30'), +(42, 3, 2, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2023-07-06 19:30:30', '2023-07-06 19:30:30'), +(43, 3, 2, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nSelamat anda lulu!JUnit version 4.13.2\r\n.E\r\nTime: 0.029\r\nThere was 1 failure:\r\n1) isAngka(test0706_gmail_com.JUnitAngkaTest)\r\norg.junit.ComparisonFailure: Output not the same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0706_gmail_com.JUnitAngkaTest.isAngka(JUnitAngkaTest.java:31)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-07-06 19:30:41', '2023-07-06 19:30:41'), +(44, 3, 2, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2023-07-06 19:31:54', '2023-07-06 19:31:54'), +(45, 4, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2023-07-06 20:15:52', '2023-07-06 20:15:52'), +(46, 4, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 272JUnit version 4.13.2\r\n.E\r\nTime: 0.019\r\nThere was 1 failure:\r\n1) isTipeData(test0707_gmail_com.JUnitTipeDataTest)\r\norg.junit.ComparisonFailure: Output not the same expected:<...s permukaan balok = [344]> but was:<...s permukaan balok = [272]>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0707_gmail_com.JUnitTipeDataTest.isTipeData(JUnitTipeDataTest.java:31)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-07-06 20:19:05', '2023-07-06 20:19:05'), +(47, 4, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 272JUnit version 4.13.2\r\n.E\r\nTime: 0.019\r\nThere was 1 failure:\r\n1) isTipeData(test0707_gmail_com.JUnitTipeDataTest)\r\norg.junit.ComparisonFailure: Output not the same expected:<...s permukaan balok = [344]> but was:<...s permukaan balok = [272]>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at test0707_gmail_com.JUnitTipeDataTest.isTipeData(JUnitTipeDataTest.java:31)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2023-07-06 20:22:24', '2023-07-06 20:22:24'), +(48, 4, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2023-07-06 20:22:56', '2023-07-06 20:22:56'), +(49, 2, 5, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.04\r\n\r\nOK (1 test)', 0, '2023-08-12 21:17:07', '2023-08-12 21:17:07'), +(50, 2, 1, 1, 'java 18 2022-03-22\r\nJava(TM) SE Runtime Environment (build 18+36-2087)\r\nJava HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2023-11-25 00:42:42', '2023-11-25 00:42:42'), +(51, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:54:49', '2023-12-26 19:54:49'), +(52, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:54:51', '2023-12-26 19:54:51'), +(53, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:54:59', '2023-12-26 19:54:59'), +(54, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:54:59', '2023-12-26 19:54:59'), +(55, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:56:24', '2023-12-26 19:56:24'), +(56, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 19:58:39', '2023-12-26 19:58:39'), +(57, 6, 1, 1, 'java_files\\rossaakmalia66_gmail_com\\TipeData.java:11: error: unmappable character (0x93) for encoding UTF-8\r\n // volume balok ?panjang * lebar * tinggi?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:11: error: unmappable character (0x94) for encoding UTF-8\r\n // volume balok ?panjang * lebar * tinggi?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:14: error: unmappable character (0x93) for encoding UTF-8\r\n // Luas permukaan balok ?2*(panjang * lebar + panjang * tinggi + lebar * tinggi)?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:14: error: unmappable character (0x94) for encoding UTF-8\r\n // Luas permukaan balok ?2*(panjang * lebar + panjang * tinggi + lebar * tinggi)?\r\n ^\r\n4 errors\r\nTEST FAILED!', 1, '2023-12-26 20:02:28', '2023-12-26 20:02:28'), +(58, 6, 1, 1, 'java_files\\rossaakmalia66_gmail_com\\TipeData.java:11: error: unmappable character (0x93) for encoding UTF-8\r\n // volume balok ?panjang * lebar * tinggi?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:11: error: unmappable character (0x94) for encoding UTF-8\r\n // volume balok ?panjang * lebar * tinggi?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:14: error: unmappable character (0x93) for encoding UTF-8\r\n // Luas permukaan balok ?2*(panjang * lebar + panjang * tinggi + lebar * tinggi)?\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:14: error: unmappable character (0x94) for encoding UTF-8\r\n // Luas permukaan balok ?2*(panjang * lebar + panjang * tinggi + lebar * tinggi)?\r\n ^\r\n4 errors\r\nTEST FAILED!', 1, '2023-12-26 20:02:29', '2023-12-26 20:02:29'), +(59, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 20:02:54', '2023-12-26 20:02:54'), +(60, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 20:03:46', '2023-12-26 20:03:46'), +(61, 6, 1, 1, 'java_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: unmappable character (0x85) for encoding UTF-8\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:12: error: unmappable character (0x85) for encoding UTF-8\r\n vBalok = ??;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:12: error: unmappable character (0x85) for encoding UTF-8\r\n vBalok = ??;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:15: error: unmappable character (0x85) for encoding UTF-8\r\n lBalok = ?..;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:15: error: illegal \'.\'\r\n lBalok = ?..;\r\n ^\r\n14 errors\r\nTEST FAILED!', 1, '2023-12-26 20:04:05', '2023-12-26 20:04:05'), +(62, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2023-12-26 20:04:55', '2023-12-26 20:04:55'), +(63, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 20:17:40', '2024-01-22 20:17:40'), +(64, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 20:22:47', '2024-01-22 20:22:47'), +(65, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 20:22:50', '2024-01-22 20:22:50'), +(66, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 20:24:13', '2024-01-22 20:24:13'), +(67, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 20:58:02', '2024-01-22 20:58:02'), +(68, 6, 1, 1, 'Error: Could not find or load main class rossaakmalia66_gmail_com.TipeData\nCaused by: java.lang.ClassNotFoundException: rossaakmalia66_gmail_com.TipeData\r\nnull', 1, '2024-01-22 21:02:28', '2024-01-22 21:02:28'), +(69, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 1080, Luas permukaan balok = 654JUnit version 4.13.2\r\n.E\r\nTime: 0.015\r\nThere was 1 failure:\r\n1) isTipeData(rossaakmalia66_gmail_com.JUnitTipeDataTest)\r\norg.junit.ComparisonFailure: Output not the same expected: but was:\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at rossaakmalia66_gmail_com.JUnitTipeDataTest.isTipeData(JUnitTipeDataTest.java:31)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2024-01-22 21:56:38', '2024-01-22 21:56:38'), +(70, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-01-22 21:58:57', '2024-01-22 21:58:57'), +(71, 6, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.005\r\n\r\nOK (1 test)', 0, '2024-01-22 22:49:11', '2024-01-22 22:49:11'), +(72, 6, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-01-30 21:57:30', '2024-01-30 21:57:30'), +(73, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-02-02 04:11:42', '2024-02-02 04:11:42'), +(74, 6, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-02-26 20:22:40', '2024-02-26 20:22:40'), +(75, 6, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2024-02-26 20:25:44', '2024-02-26 20:25:44'), +(76, 6, 1, 1, 'java_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: unmappable character (0x85) for encoding UTF-8\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: \';\' expected\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\njava_files\\rossaakmalia66_gmail_com\\TipeData.java:5: error: not a statement\r\n ? panjang, lebar, tinggi, vBalok, lBalok;\r\n ^\r\n10 errors\r\nTEST FAILED!', 1, '2024-02-26 23:47:35', '2024-02-26 23:47:35'), +(77, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-02-26 23:47:54', '2024-02-26 23:47:54'), +(78, 6, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-02 01:58:57', '2024-03-02 01:58:57'), +(79, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-03 05:07:39', '2024-03-03 05:07:39'), +(80, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-03 05:07:40', '2024-03-03 05:07:40'), +(81, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-03 10:06:30', '2024-03-03 10:06:30'), +(82, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-03 10:10:54', '2024-03-03 10:10:54'), +(83, 6, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-03 10:12:37', '2024-03-03 10:12:37'), +(84, 6, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-03 10:31:38', '2024-03-03 10:31:38'), +(85, 6, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-03-05 20:52:20', '2024-03-05 20:52:20'), +(86, 7, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-08 07:49:22', '2024-03-08 07:49:22'), +(87, 7, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-08 08:18:20', '2024-03-08 08:18:20'), +(88, 7, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-08 08:29:01', '2024-03-08 08:29:01'), +(89, 7, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-08 08:32:41', '2024-03-08 08:32:41'), +(90, 7, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-08 08:36:27', '2024-03-08 08:36:27'), +(91, 7, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-08 08:39:04', '2024-03-08 08:39:04'); +INSERT INTO `code_history_logs` (`id`, `user_id`, `question_id`, `total_count`, `message`, `is_error`, `created_at`, `updated_at`) VALUES +(92, 7, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.027\r\n\r\nOK (1 test)', 0, '2024-03-08 09:12:06', '2024-03-08 09:12:06'), +(93, 9, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.034\r\n\r\nOK (1 test)', 0, '2024-03-11 05:00:23', '2024-03-11 05:00:23'), +(94, 9, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-11 05:03:36', '2024-03-11 05:03:36'), +(95, 9, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-03-11 05:07:03', '2024-03-11 05:07:03'), +(96, 9, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-03-11 05:09:42', '2024-03-11 05:09:42'), +(97, 9, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-03-11 05:12:49', '2024-03-11 05:12:49'), +(98, 7, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.026\r\n\r\nOK (1 test)', 0, '2024-03-11 05:18:25', '2024-03-11 05:18:25'), +(99, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2024-03-11 08:28:57', '2024-03-11 08:28:57'), +(100, 10, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-11 08:36:22', '2024-03-11 08:36:22'), +(101, 10, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-11 08:40:05', '2024-03-11 08:40:05'), +(102, 10, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-11 08:43:37', '2024-03-11 08:43:37'), +(103, 10, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-11 08:46:27', '2024-03-11 08:46:27'), +(104, 11, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-11 08:55:54', '2024-03-11 08:55:54'), +(105, 11, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-11 08:57:14', '2024-03-11 08:57:14'), +(106, 11, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-11 08:58:41', '2024-03-11 08:58:41'), +(107, 11, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-11 09:00:01', '2024-03-11 09:00:01'), +(108, 11, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-11 09:01:34', '2024-03-11 09:01:34'), +(109, 12, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-03-11 09:10:15', '2024-03-11 09:10:15'), +(110, 12, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.026\r\n\r\nOK (1 test)', 0, '2024-03-11 09:11:41', '2024-03-11 09:11:41'), +(111, 12, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-11 09:13:05', '2024-03-11 09:13:05'), +(112, 12, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-11 09:16:11', '2024-03-11 09:16:11'), +(113, 12, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-11 09:17:21', '2024-03-11 09:17:21'), +(114, 13, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-11 09:21:12', '2024-03-11 09:21:12'), +(115, 13, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-11 09:23:09', '2024-03-11 09:23:09'), +(116, 13, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-11 09:24:56', '2024-03-11 09:24:56'), +(117, 13, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-03-11 09:28:02', '2024-03-11 09:28:02'), +(118, 13, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-03-11 09:30:21', '2024-03-11 09:30:21'), +(119, 14, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-11 09:40:20', '2024-03-11 09:40:20'), +(120, 14, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-11 09:42:18', '2024-03-11 09:42:18'), +(121, 14, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-11 09:43:38', '2024-03-11 09:43:38'), +(122, 14, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-11 09:45:15', '2024-03-11 09:45:15'), +(123, 14, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-11 09:47:08', '2024-03-11 09:47:08'), +(124, 15, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-03-11 09:55:21', '2024-03-11 09:55:21'), +(125, 15, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-11 09:56:47', '2024-03-11 09:56:47'), +(126, 15, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-11 09:59:33', '2024-03-11 09:59:33'), +(127, 15, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-03-11 10:00:17', '2024-03-11 10:00:17'), +(128, 15, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-11 10:01:56', '2024-03-11 10:01:56'), +(129, 16, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-03-11 10:14:24', '2024-03-11 10:14:24'), +(130, 16, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-11 10:15:50', '2024-03-11 10:15:50'), +(131, 16, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-11 10:17:25', '2024-03-11 10:17:25'), +(132, 16, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-11 10:18:44', '2024-03-11 10:18:44'), +(133, 16, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-11 10:20:04', '2024-03-11 10:20:04'), +(134, 17, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-11 10:23:34', '2024-03-11 10:23:34'), +(135, 17, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-11 10:25:12', '2024-03-11 10:25:12'), +(136, 17, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-11 10:26:25', '2024-03-11 10:26:25'), +(137, 17, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-11 10:27:37', '2024-03-11 10:27:37'), +(138, 17, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-11 10:30:03', '2024-03-11 10:30:03'), +(139, 10, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-03-24 00:13:52', '2024-03-24 00:13:52'), +(140, 10, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-24 00:16:46', '2024-03-24 00:16:46'), +(141, 10, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.026\r\n\r\nOK (1 test)', 0, '2024-03-24 00:19:42', '2024-03-24 00:19:42'), +(142, 10, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 21 JUnit version 4.13.2\r\n.E\r\nTime: 0.027\r\nThere was 1 failure:\r\n1) isFibonnaci(lower_gmail_com.JUnitFibonacciTest)\r\norg.junit.ComparisonFailure: Output not the same expected:<...: \n0 1 1 2 3 5 8 13 []> but was:<...: \n0 1 1 2 3 5 8 13 [21 ]>\r\n at org.junit.Assert.assertEquals(Assert.java:117)\r\n at lower_gmail_com.JUnitFibonacciTest.isFibonnaci(JUnitFibonacciTest.java:30)\r\n\r\nFAILURES!!!\r\nTests run: 1, Failures: 1', 1, '2024-03-24 00:21:56', '2024-03-24 00:21:56'), +(143, 10, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-03-24 00:22:11', '2024-03-24 00:22:11'), +(144, 10, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-24 00:23:34', '2024-03-24 00:23:34'), +(145, 10, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-03-24 00:23:39', '2024-03-24 00:23:39'), +(146, 10, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-24 00:23:39', '2024-03-24 00:23:39'), +(147, 10, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-03-24 00:26:31', '2024-03-24 00:26:31'), +(148, 10, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 00:30:51', '2024-03-24 00:30:51'), +(149, 10, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-03-24 00:33:59', '2024-03-24 00:33:59'), +(150, 10, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.027\r\n\r\nOK (1 test)', 0, '2024-03-24 00:38:13', '2024-03-24 00:38:13'), +(151, 19, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-03-24 00:53:27', '2024-03-24 00:53:27'), +(152, 19, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 00:55:03', '2024-03-24 00:55:03'), +(153, 19, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-03-24 00:56:27', '2024-03-24 00:56:27'), +(154, 19, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2024-03-24 00:57:49', '2024-03-24 00:57:49'), +(155, 19, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2024-03-24 00:59:09', '2024-03-24 00:59:09'), +(156, 19, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-24 01:01:20', '2024-03-24 01:01:20'), +(157, 19, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-24 01:03:06', '2024-03-24 01:03:06'), +(158, 19, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-03-24 01:04:29', '2024-03-24 01:04:29'), +(159, 19, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-24 01:05:49', '2024-03-24 01:05:49'), +(160, 19, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-03-24 01:07:13', '2024-03-24 01:07:13'), +(161, 19, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 01:09:32', '2024-03-24 01:09:32'), +(162, 19, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.039\r\n\r\nOK (1 test)', 0, '2024-03-24 01:11:01', '2024-03-24 01:11:01'), +(163, 19, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.044\r\n\r\nOK (1 test)', 0, '2024-03-24 01:13:01', '2024-03-24 01:13:01'), +(164, 12, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-03-24 01:16:08', '2024-03-24 01:16:08'), +(165, 12, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-24 01:18:08', '2024-03-24 01:18:08'), +(166, 12, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-03-24 01:20:24', '2024-03-24 01:20:24'), +(167, 12, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-24 01:21:08', '2024-03-24 01:21:08'), +(168, 12, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.035\r\n\r\nOK (1 test)', 0, '2024-03-24 01:22:00', '2024-03-24 01:22:00'), +(169, 12, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-03-24 01:23:28', '2024-03-24 01:23:28'), +(170, 12, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-03-24 01:24:49', '2024-03-24 01:24:49'), +(171, 12, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 01:26:18', '2024-03-24 01:26:18'), +(172, 12, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-03-24 01:27:46', '2024-03-24 01:27:46'), +(173, 12, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-03-24 01:29:18', '2024-03-24 01:29:18'), +(174, 13, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-03-24 01:32:01', '2024-03-24 01:32:01'), +(175, 13, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-03-24 01:33:35', '2024-03-24 01:33:35'), +(176, 13, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-03-24 01:34:54', '2024-03-24 01:34:54'), +(177, 13, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 01:36:11', '2024-03-24 01:36:11'), +(178, 13, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-24 01:37:54', '2024-03-24 01:37:54'), +(179, 13, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-24 01:39:10', '2024-03-24 01:39:10'), +(180, 13, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-03-24 01:40:12', '2024-03-24 01:40:12'), +(181, 13, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-03-24 01:41:13', '2024-03-24 01:41:13'), +(182, 21, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-24 02:56:00', '2024-03-24 02:56:00'), +(183, 21, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-03-24 02:56:03', '2024-03-24 02:56:03'), +(184, 21, 2, 1, 'java_files\\kuncijawaban4_gmail_com\\Angka.java:8: error: unmappable character (0x85) for encoding UTF-8\r\n System.out.print(\"?\");\r\n ^\r\n1 error\r\nTEST FAILED!', 1, '2024-03-26 08:55:14', '2024-03-26 08:55:14'), +(185, 21, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-03-28 08:29:01', '2024-03-28 08:29:01'), +(186, 21, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-28 08:32:23', '2024-03-28 08:32:23'), +(187, 21, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-28 08:33:59', '2024-03-28 08:33:59'), +(188, 21, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-03-28 08:35:56', '2024-03-28 08:35:56'), +(189, 21, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-03-28 08:37:15', '2024-03-28 08:37:15'), +(190, 21, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-28 08:38:37', '2024-03-28 08:38:37'), +(191, 21, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-28 08:39:48', '2024-03-28 08:39:48'), +(192, 21, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-03-28 08:41:04', '2024-03-28 08:41:04'), +(193, 21, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-03-28 08:42:14', '2024-03-28 08:42:14'), +(194, 21, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-03-28 08:43:37', '2024-03-28 08:43:37'), +(195, 21, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-28 08:45:04', '2024-03-28 08:45:04'), +(196, 21, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-28 08:46:15', '2024-03-28 08:46:15'), +(197, 21, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.029\r\n\r\nOK (1 test)', 0, '2024-03-28 08:47:20', '2024-03-28 08:47:20'), +(198, 22, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-03-28 08:59:28', '2024-03-28 08:59:28'), +(199, 22, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-03-28 09:03:54', '2024-03-28 09:03:54'), +(200, 22, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-03-28 09:04:49', '2024-03-28 09:04:49'), +(201, 22, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-28 09:06:05', '2024-03-28 09:06:05'), +(202, 22, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-28 09:07:11', '2024-03-28 09:07:11'), +(203, 22, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-28 09:12:22', '2024-03-28 09:12:22'), +(204, 22, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-03-28 09:13:32', '2024-03-28 09:13:32'), +(205, 22, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-03-28 09:14:39', '2024-03-28 09:14:39'), +(206, 22, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.002\r\n\r\nOK (1 test)', 0, '2024-03-28 09:15:50', '2024-03-28 09:15:50'), +(207, 22, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-03-28 09:17:06', '2024-03-28 09:17:06'), +(208, 22, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-03-28 09:18:13', '2024-03-28 09:18:13'), +(209, 22, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-03-28 09:19:31', '2024-03-28 09:19:31'), +(210, 22, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-03-28 09:20:39', '2024-03-28 09:20:39'), +(211, 23, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2024-04-01 04:01:12', '2024-04-01 04:01:12'), +(212, 23, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-04-01 04:02:39', '2024-04-01 04:02:39'), +(213, 23, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-04-01 04:03:51', '2024-04-01 04:03:51'), +(214, 23, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-04-01 04:05:56', '2024-04-01 04:05:56'), +(215, 23, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.027\r\n\r\nOK (1 test)', 0, '2024-04-01 04:08:30', '2024-04-01 04:08:30'), +(216, 23, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-01 04:09:59', '2024-04-01 04:09:59'), +(217, 23, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-01 04:11:24', '2024-04-01 04:11:24'), +(218, 23, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-04-01 04:12:53', '2024-04-01 04:12:53'), +(219, 23, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-01 04:16:13', '2024-04-01 04:16:13'), +(220, 23, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-01 04:17:44', '2024-04-01 04:17:44'), +(221, 23, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-01 04:20:00', '2024-04-01 04:20:00'), +(222, 23, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.036\r\n\r\nOK (1 test)', 0, '2024-04-01 04:21:26', '2024-04-01 04:21:26'), +(223, 23, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-01 04:24:56', '2024-04-01 04:24:56'), +(224, 24, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.034\r\n\r\nOK (1 test)', 0, '2024-04-01 04:38:46', '2024-04-01 04:38:46'), +(225, 24, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-01 04:40:21', '2024-04-01 04:40:21'), +(226, 24, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-01 04:42:01', '2024-04-01 04:42:01'), +(227, 24, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-01 04:43:28', '2024-04-01 04:43:28'), +(228, 24, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2024-04-01 04:44:56', '2024-04-01 04:44:56'), +(229, 24, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-01 04:46:13', '2024-04-01 04:46:13'), +(230, 24, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-01 04:47:31', '2024-04-01 04:47:31'), +(231, 24, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-01 04:50:27', '2024-04-01 04:50:27'), +(232, 24, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-04-01 04:52:05', '2024-04-01 04:52:05'), +(233, 24, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-01 04:53:45', '2024-04-01 04:53:45'), +(234, 24, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-04-01 04:56:13', '2024-04-01 04:56:13'), +(235, 24, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2024-04-01 04:59:45', '2024-04-01 04:59:45'), +(236, 24, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-04-01 05:01:02', '2024-04-01 05:01:02'), +(237, 6, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-07 10:36:15', '2024-04-07 10:36:15'), +(238, 25, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-16 17:15:11', '2024-04-16 17:15:11'), +(239, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-04-16 17:17:15', '2024-04-16 17:17:15'), +(240, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-16 17:20:13', '2024-04-16 17:20:13'), +(241, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-04-16 17:24:07', '2024-04-16 17:24:07'), +(242, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-04-16 17:26:22', '2024-04-16 17:26:22'), +(243, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-16 17:27:59', '2024-04-16 17:27:59'), +(244, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-04-16 17:30:07', '2024-04-16 17:30:07'), +(245, 25, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-16 17:31:57', '2024-04-16 17:31:57'), +(246, 25, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-16 17:46:33', '2024-04-16 17:46:33'), +(247, 25, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-16 17:49:47', '2024-04-16 17:49:47'), +(248, 25, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-23 18:54:09', '2024-04-23 18:54:09'), +(249, 26, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-26 13:26:39', '2024-04-26 13:26:39'); +INSERT INTO `code_history_logs` (`id`, `user_id`, `question_id`, `total_count`, `message`, `is_error`, `created_at`, `updated_at`) VALUES +(250, 26, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-04-26 13:49:00', '2024-04-26 13:49:00'), +(251, 26, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-26 20:41:12', '2024-04-26 20:41:12'), +(252, 26, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-04-26 20:55:51', '2024-04-26 20:55:51'), +(253, 26, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-26 21:14:54', '2024-04-26 21:14:54'), +(254, 26, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-04-26 21:31:09', '2024-04-26 21:31:09'), +(255, 26, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-26 21:49:23', '2024-04-26 21:49:23'), +(256, 26, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-26 23:18:16', '2024-04-26 23:18:16'), +(257, 26, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-04-26 23:44:21', '2024-04-26 23:44:21'), +(258, 26, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.005\r\n\r\nOK (1 test)', 0, '2024-04-27 00:05:59', '2024-04-27 00:05:59'), +(259, 26, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-27 00:33:49', '2024-04-27 00:33:49'), +(260, 26, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-27 00:50:49', '2024-04-27 00:50:49'), +(261, 26, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-27 01:09:59', '2024-04-27 01:09:59'), +(262, 27, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-27 05:49:17', '2024-04-27 05:49:17'), +(263, 27, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-27 05:58:30', '2024-04-27 05:58:30'), +(264, 27, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-27 06:07:40', '2024-04-27 06:07:40'), +(265, 27, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-27 06:16:34', '2024-04-27 06:16:34'), +(266, 27, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-04-27 06:27:10', '2024-04-27 06:27:10'), +(267, 27, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-04-27 06:35:36', '2024-04-27 06:35:36'), +(268, 27, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2024-04-27 06:46:26', '2024-04-27 06:46:26'), +(269, 27, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.046\r\n\r\nOK (1 test)', 0, '2024-04-27 06:58:11', '2024-04-27 06:58:11'), +(270, 27, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-27 07:07:43', '2024-04-27 07:07:43'), +(271, 27, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-27 07:18:22', '2024-04-27 07:18:22'), +(272, 27, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-27 07:28:47', '2024-04-27 07:28:47'), +(273, 27, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-04-27 07:38:44', '2024-04-27 07:38:44'), +(274, 27, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-04-27 07:47:15', '2024-04-27 07:47:15'), +(275, 28, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-04-27 13:39:47', '2024-04-27 13:39:47'), +(276, 28, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-27 13:48:20', '2024-04-27 13:48:20'), +(277, 28, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.006\r\n\r\nOK (1 test)', 0, '2024-04-27 13:56:41', '2024-04-27 13:56:41'), +(278, 28, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-27 14:04:40', '2024-04-27 14:04:40'), +(279, 28, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-04-27 14:12:51', '2024-04-27 14:12:51'), +(280, 28, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-04-27 14:21:13', '2024-04-27 14:21:13'), +(281, 28, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.002\r\n\r\nOK (1 test)', 0, '2024-04-27 14:29:18', '2024-04-27 14:29:18'), +(282, 28, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-04-27 14:36:48', '2024-04-27 14:36:48'), +(283, 28, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-04-27 14:45:59', '2024-04-27 14:45:59'), +(284, 28, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-27 14:53:51', '2024-04-27 14:53:51'), +(285, 28, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-04-27 15:01:11', '2024-04-27 15:01:11'), +(286, 28, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-27 15:08:33', '2024-04-27 15:08:33'), +(287, 28, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-27 15:16:13', '2024-04-27 15:16:13'), +(288, 29, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-27 19:24:12', '2024-04-27 19:24:12'), +(289, 29, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-27 19:35:20', '2024-04-27 19:35:20'), +(290, 29, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.057\r\n\r\nOK (1 test)', 0, '2024-04-27 19:45:03', '2024-04-27 19:45:03'), +(291, 29, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-04-27 19:52:50', '2024-04-27 19:52:50'), +(292, 29, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-27 20:01:04', '2024-04-27 20:01:04'), +(293, 29, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.027\r\n\r\nOK (1 test)', 0, '2024-04-27 20:09:40', '2024-04-27 20:09:40'), +(294, 29, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-27 20:18:24', '2024-04-27 20:18:24'), +(295, 29, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-04-27 20:27:05', '2024-04-27 20:27:05'), +(296, 29, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-27 20:36:21', '2024-04-27 20:36:21'), +(297, 29, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-04-27 20:44:31', '2024-04-27 20:44:31'), +(298, 29, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-27 20:54:14', '2024-04-27 20:54:14'), +(299, 29, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-04-27 20:54:14', '2024-04-27 20:54:14'), +(300, 29, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-27 21:03:29', '2024-04-27 21:03:29'), +(301, 29, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-04-27 21:07:15', '2024-04-27 21:07:15'), +(302, 29, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-04-27 21:16:08', '2024-04-27 21:16:08'), +(303, 30, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2024-04-28 05:53:39', '2024-04-28 05:53:39'), +(304, 30, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-28 06:07:35', '2024-04-28 06:07:35'), +(305, 30, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-28 06:15:20', '2024-04-28 06:15:20'), +(306, 30, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-28 06:23:22', '2024-04-28 06:23:22'), +(307, 30, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-04-28 06:31:42', '2024-04-28 06:31:42'), +(308, 30, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-28 06:41:48', '2024-04-28 06:41:48'), +(309, 30, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-04-28 06:49:53', '2024-04-28 06:49:53'), +(310, 30, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-28 07:02:16', '2024-04-28 07:02:16'), +(311, 30, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-28 07:10:46', '2024-04-28 07:10:46'), +(312, 30, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-04-28 07:19:13', '2024-04-28 07:19:13'), +(313, 30, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-04-28 07:33:15', '2024-04-28 07:33:15'), +(314, 30, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-04-28 07:41:15', '2024-04-28 07:41:15'), +(315, 30, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-28 07:51:12', '2024-04-28 07:51:12'), +(316, 31, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-04-28 13:55:52', '2024-04-28 13:55:52'), +(317, 31, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-28 13:58:47', '2024-04-28 13:58:47'), +(318, 31, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-28 13:59:48', '2024-04-28 13:59:48'), +(319, 31, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-04-28 14:02:30', '2024-04-28 14:02:30'), +(320, 31, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.053\r\n\r\nOK (1 test)', 0, '2024-04-28 14:06:00', '2024-04-28 14:06:00'), +(321, 31, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-28 14:09:52', '2024-04-28 14:09:52'), +(322, 31, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-28 14:13:45', '2024-04-28 14:13:45'), +(323, 31, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-04-28 14:16:55', '2024-04-28 14:16:55'), +(324, 31, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-04-28 14:19:39', '2024-04-28 14:19:39'), +(325, 31, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-04-28 14:23:07', '2024-04-28 14:23:07'), +(326, 31, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 14:26:54', '2024-04-28 14:26:54'), +(327, 31, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-28 14:30:05', '2024-04-28 14:30:05'), +(328, 31, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-28 14:32:36', '2024-04-28 14:32:36'), +(329, 31, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 14:35:14', '2024-04-28 14:35:14'), +(330, 31, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.037\r\n\r\nOK (1 test)', 0, '2024-04-28 14:37:49', '2024-04-28 14:37:49'), +(331, 26, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 14:46:07', '2024-04-28 14:46:07'), +(332, 26, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-04-28 14:47:10', '2024-04-28 14:47:10'), +(333, 27, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-28 14:48:38', '2024-04-28 14:48:38'), +(334, 27, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-04-28 14:49:34', '2024-04-28 14:49:34'), +(335, 27, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-28 14:51:21', '2024-04-28 14:51:21'), +(336, 27, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-04-28 14:52:14', '2024-04-28 14:52:14'), +(337, 28, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 14:53:36', '2024-04-28 14:53:36'), +(338, 28, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 14:54:26', '2024-04-28 14:54:26'), +(339, 29, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-04-28 14:55:46', '2024-04-28 14:55:46'), +(340, 29, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-04-28 14:56:35', '2024-04-28 14:56:35'), +(341, 29, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-04-28 14:57:41', '2024-04-28 14:57:41'), +(342, 29, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2024-04-28 14:58:30', '2024-04-28 14:58:30'), +(343, 29, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-28 14:59:41', '2024-04-28 14:59:41'), +(344, 29, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-04-28 15:01:05', '2024-04-28 15:01:05'), +(345, 30, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-04-28 15:02:50', '2024-04-28 15:02:50'), +(346, 30, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-04-28 15:03:52', '2024-04-28 15:03:52'), +(347, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-05-01 19:20:46', '2024-05-01 19:20:46'), +(348, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 19:39:12', '2024-05-01 19:39:12'), +(349, 32, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-05-01 19:43:06', '2024-05-01 19:43:06'), +(350, 32, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-01 19:46:31', '2024-05-01 19:46:31'), +(351, 32, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.005\r\n\r\nOK (1 test)', 0, '2024-05-01 19:47:41', '2024-05-01 19:47:41'), +(352, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-01 19:55:48', '2024-05-01 19:55:48'), +(353, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-05-01 19:58:10', '2024-05-01 19:58:10'), +(354, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-05-01 20:01:20', '2024-05-01 20:01:20'), +(355, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-05-01 20:04:21', '2024-05-01 20:04:21'), +(356, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-05-01 20:07:21', '2024-05-01 20:07:21'), +(357, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-01 20:18:39', '2024-05-01 20:18:39'), +(358, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 20:20:43', '2024-05-01 20:20:43'), +(359, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 20:30:31', '2024-05-01 20:30:31'), +(360, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 20:38:23', '2024-05-01 20:38:23'), +(361, 33, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 20:41:03', '2024-05-01 20:41:03'), +(362, 33, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 20:48:46', '2024-05-01 20:48:46'), +(363, 33, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-05-01 20:53:47', '2024-05-01 20:53:47'), +(364, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-05-01 20:57:08', '2024-05-01 20:57:08'), +(365, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 21:05:06', '2024-05-01 21:05:06'), +(366, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 21:06:20', '2024-05-01 21:06:20'), +(367, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 21:10:17', '2024-05-01 21:10:17'), +(368, 10, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-01 21:17:35', '2024-05-01 21:17:35'), +(369, 34, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-05-01 21:30:34', '2024-05-01 21:30:34'), +(370, 34, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-05-01 21:36:33', '2024-05-01 21:36:33'), +(371, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-05-01 21:42:08', '2024-05-01 21:42:08'), +(372, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 21:45:02', '2024-05-01 21:45:02'), +(373, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 21:48:31', '2024-05-01 21:48:31'), +(374, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 21:57:37', '2024-05-01 21:57:37'), +(375, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-05-01 21:58:40', '2024-05-01 21:58:40'), +(376, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 22:03:34', '2024-05-01 22:03:34'), +(377, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.005\r\n\r\nOK (1 test)', 0, '2024-05-01 22:05:53', '2024-05-01 22:05:53'), +(378, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-05-01 22:07:06', '2024-05-01 22:07:06'), +(379, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.026\r\n\r\nOK (1 test)', 0, '2024-05-01 22:08:25', '2024-05-01 22:08:25'), +(380, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-05-01 22:17:04', '2024-05-01 22:17:04'), +(381, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 22:19:32', '2024-05-01 22:19:32'), +(382, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-05-01 22:22:35', '2024-05-01 22:22:35'), +(383, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-05-01 22:33:49', '2024-05-01 22:33:49'), +(384, 34, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-01 22:35:29', '2024-05-01 22:35:29'), +(385, 34, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-05-01 22:38:31', '2024-05-01 22:38:31'), +(386, 34, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-05-01 23:28:05', '2024-05-01 23:28:05'), +(387, 32, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-05-02 14:58:34', '2024-05-02 14:58:34'), +(388, 32, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-05-02 15:00:01', '2024-05-02 15:00:01'), +(389, 32, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-02 15:02:05', '2024-05-02 15:02:05'), +(390, 32, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-05-02 15:10:51', '2024-05-02 15:10:51'), +(391, 32, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-05-02 15:19:41', '2024-05-02 15:19:41'), +(392, 32, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-05-02 15:29:04', '2024-05-02 15:29:04'), +(393, 32, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-02 15:38:12', '2024-05-02 15:38:12'), +(394, 32, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.037\r\n\r\nOK (1 test)', 0, '2024-05-02 15:46:30', '2024-05-02 15:46:30'), +(395, 32, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-05-02 15:55:38', '2024-05-02 15:55:38'), +(396, 32, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-05-02 16:03:44', '2024-05-02 16:03:44'), +(397, 32, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.033\r\n\r\nOK (1 test)', 0, '2024-05-02 16:12:21', '2024-05-02 16:12:21'), +(398, 32, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.028\r\n\r\nOK (1 test)', 0, '2024-05-02 16:20:55', '2024-05-02 16:20:55'), +(399, 32, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.025\r\n\r\nOK (1 test)', 0, '2024-05-02 16:29:22', '2024-05-02 16:29:22'), +(400, 35, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-02 17:20:08', '2024-05-02 17:20:08'), +(401, 35, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-05-02 17:29:20', '2024-05-02 17:29:20'), +(402, 35, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-05-02 17:37:29', '2024-05-02 17:37:29'), +(403, 35, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-02 17:46:03', '2024-05-02 17:46:03'), +(404, 35, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-05-02 17:48:26', '2024-05-02 17:48:26'), +(405, 35, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-02 17:55:50', '2024-05-02 17:55:50'), +(406, 35, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-05-02 18:03:21', '2024-05-02 18:03:21'), +(407, 35, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-05-02 18:19:27', '2024-05-02 18:19:27'); +INSERT INTO `code_history_logs` (`id`, `user_id`, `question_id`, `total_count`, `message`, `is_error`, `created_at`, `updated_at`) VALUES +(408, 35, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-05-02 18:42:47', '2024-05-02 18:42:47'), +(409, 35, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.005\r\n\r\nOK (1 test)', 0, '2024-05-02 18:54:08', '2024-05-02 18:54:08'), +(410, 35, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-05-02 19:15:42', '2024-05-02 19:15:42'), +(411, 35, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-02 19:26:26', '2024-05-02 19:26:26'), +(412, 35, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-02 19:40:34', '2024-05-02 19:40:34'), +(413, 35, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.03\r\n\r\nOK (1 test)', 0, '2024-05-02 19:49:44', '2024-05-02 19:49:44'), +(414, 36, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-05-03 03:11:13', '2024-05-03 03:11:13'), +(415, 36, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-05-03 03:29:00', '2024-05-03 03:29:00'), +(416, 36, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.018\r\n\r\nOK (1 test)', 0, '2024-05-03 03:38:04', '2024-05-03 03:38:04'), +(417, 36, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-05-03 03:53:58', '2024-05-03 03:53:58'), +(418, 36, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-05-03 04:04:07', '2024-05-03 04:04:07'), +(419, 36, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-05-03 04:11:44', '2024-05-03 04:11:44'), +(420, 36, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-03 04:30:50', '2024-05-03 04:30:50'), +(421, 36, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.04\r\n\r\nOK (1 test)', 0, '2024-05-03 04:50:26', '2024-05-03 04:50:26'), +(422, 36, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-03 05:01:18', '2024-05-03 05:01:18'), +(423, 36, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-05-03 05:23:49', '2024-05-03 05:23:49'), +(424, 36, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.01\r\n\r\nOK (1 test)', 0, '2024-05-03 05:43:20', '2024-05-03 05:43:20'), +(425, 36, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-05-03 05:54:27', '2024-05-03 05:54:27'), +(426, 36, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-05-03 06:04:30', '2024-05-03 06:04:30'), +(427, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-03 05:07:29', '2024-06-03 05:07:29'), +(428, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.039\r\n\r\nOK (1 test)', 0, '2024-06-03 05:20:58', '2024-06-03 05:20:58'), +(429, 37, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.026\r\n\r\nOK (1 test)', 0, '2024-06-03 05:26:23', '2024-06-03 05:26:23'), +(430, 37, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-03 05:39:34', '2024-06-03 05:39:34'), +(431, 37, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-06-03 05:49:45', '2024-06-03 05:49:45'), +(432, 37, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-06-03 06:05:46', '2024-06-03 06:05:46'), +(433, 37, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.008\r\n\r\nOK (1 test)', 0, '2024-06-03 06:23:45', '2024-06-03 06:23:45'), +(434, 37, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-03 06:39:03', '2024-06-03 06:39:03'), +(435, 37, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-06-03 07:00:48', '2024-06-03 07:00:48'), +(436, 37, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-03 07:08:53', '2024-06-03 07:08:53'), +(437, 37, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-06-03 07:24:32', '2024-06-03 07:24:32'), +(438, 37, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-06-03 07:32:32', '2024-06-03 07:32:32'), +(439, 37, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-06-03 07:40:12', '2024-06-03 07:40:12'), +(440, 37, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-03 08:04:24', '2024-06-03 08:04:24'), +(441, 39, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-06-10 01:50:47', '2024-06-10 01:50:47'), +(442, 39, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 01:58:04', '2024-06-10 01:58:04'), +(443, 39, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-10 02:01:59', '2024-06-10 02:01:59'), +(444, 39, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 02:07:56', '2024-06-10 02:07:56'), +(445, 39, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-06-10 02:21:00', '2024-06-10 02:21:00'), +(446, 39, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-06-10 02:27:38', '2024-06-10 02:27:38'), +(447, 39, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-10 02:34:31', '2024-06-10 02:34:31'), +(448, 39, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-06-10 02:38:19', '2024-06-10 02:38:19'), +(449, 39, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2024-06-10 02:48:37', '2024-06-10 02:48:37'), +(450, 39, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-06-10 02:54:21', '2024-06-10 02:54:21'), +(451, 40, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.024\r\n\r\nOK (1 test)', 0, '2024-06-10 03:09:56', '2024-06-10 03:09:56'), +(452, 40, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-06-10 03:15:35', '2024-06-10 03:15:35'), +(453, 40, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-10 03:17:13', '2024-06-10 03:17:13'), +(454, 40, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 03:23:31', '2024-06-10 03:23:31'), +(455, 40, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-10 03:30:11', '2024-06-10 03:30:11'), +(456, 40, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 03:36:04', '2024-06-10 03:36:04'), +(457, 40, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 03:47:11', '2024-06-10 03:47:11'), +(458, 40, 7, 1, 'java_files\\della_gmail_com\\LuckyFiveSecond.java:11: error: reached end of file while parsing\r\n }\r\n ^\r\n1 error\r\nTEST FAILED!', 1, '2024-06-10 03:52:08', '2024-06-10 03:52:08'), +(459, 40, 7, 1, 'java_files\\della_gmail_com\\LuckyFiveSecond.java:12: error: reached end of file while parsing\r\n}\r\n ^\r\n1 error\r\nTEST FAILED!', 1, '2024-06-10 03:52:14', '2024-06-10 03:52:14'), +(460, 40, 7, 1, 'java_files\\della_gmail_com\\LuckyFiveSecond.java:12: error: reached end of file while parsing\r\n}\r\n ^\r\n1 error\r\nTEST FAILED!', 1, '2024-06-10 03:52:21', '2024-06-10 03:52:21'), +(461, 40, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-06-10 03:52:30', '2024-06-10 03:52:30'), +(462, 41, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 03:54:56', '2024-06-10 03:54:56'), +(463, 41, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 04:01:48', '2024-06-10 04:01:48'), +(464, 41, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 04:06:00', '2024-06-10 04:06:00'), +(465, 41, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 04:12:52', '2024-06-10 04:12:52'), +(466, 41, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-06-10 04:19:10', '2024-06-10 04:19:10'), +(467, 41, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 04:22:47', '2024-06-10 04:22:47'), +(468, 41, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-06-10 04:28:29', '2024-06-10 04:28:29'), +(469, 41, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-06-10 04:31:07', '2024-06-10 04:31:07'), +(470, 41, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-10 04:31:50', '2024-06-10 04:31:50'), +(471, 41, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-10 04:35:43', '2024-06-10 04:35:43'), +(472, 41, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-10 04:39:28', '2024-06-10 04:39:28'), +(473, 41, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-13 03:18:18', '2024-06-13 03:18:18'), +(474, 41, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-13 03:30:14', '2024-06-13 03:30:14'), +(475, 41, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-13 03:38:00', '2024-06-13 03:38:00'), +(476, 41, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.017\r\n\r\nOK (1 test)', 0, '2024-06-13 03:38:02', '2024-06-13 03:38:02'), +(477, 41, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-13 03:43:37', '2024-06-13 03:43:37'), +(478, 41, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-13 03:48:32', '2024-06-13 03:48:32'), +(479, 40, 7, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-13 05:25:10', '2024-06-13 05:25:10'), +(480, 40, 8, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nDeret Fibonacci: \n0 1 1 2 3 5 8 13 JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-06-13 05:33:05', '2024-06-13 05:33:05'), +(481, 40, 9, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n*\n**\n***\n****\n*****\nJUnit version 4.13.2\r\n.\r\nTime: 0.015\r\n\r\nOK (1 test)', 0, '2024-06-13 05:39:34', '2024-06-13 05:39:34'), +(482, 40, 10, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n[Opinion, Tech, Science, Health]JUnit version 4.13.2\r\n.\r\nTime: 0.013\r\n\r\nOK (1 test)', 0, '2024-06-13 05:44:33', '2024-06-13 05:44:33'), +(483, 40, 11, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n83.33333333333333JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-13 05:48:03', '2024-06-13 05:48:03'), +(484, 40, 12, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nLuas Lingkaran = 615.44\nKeliling Lingkaran = 87.92JUnit version 4.13.2\r\n.\r\nTime: 0.031\r\n\r\nOK (1 test)', 0, '2024-06-13 05:51:56', '2024-06-13 05:51:56'), +(485, 40, 13, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nJumlah uang setelah 5 tahun: 1338225.5776JUnit version 4.13.2\r\n.\r\nTime: 0.032\r\n\r\nOK (1 test)', 0, '2024-06-13 05:54:53', '2024-06-13 05:54:53'), +(486, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.021\r\n\r\nOK (1 test)', 0, '2024-06-14 18:44:33', '2024-06-14 18:44:33'), +(487, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0\r\n\r\nOK (1 test)', 0, '2024-06-14 18:50:26', '2024-06-14 18:50:26'), +(488, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-06-14 18:57:28', '2024-06-14 18:57:28'), +(489, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-14 18:59:20', '2024-06-14 18:59:20'), +(490, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.006\r\n\r\nOK (1 test)', 0, '2024-06-14 19:01:11', '2024-06-14 19:01:11'), +(491, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-06-19 08:34:11', '2024-06-19 08:34:11'), +(492, 37, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.037\r\n\r\nOK (1 test)', 0, '2024-06-19 08:39:09', '2024-06-19 08:39:09'), +(493, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-06-22 05:32:59', '2024-06-22 05:32:59'), +(494, 6, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-06-22 05:40:20', '2024-06-22 05:40:20'), +(495, 42, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.029\r\n\r\nOK (1 test)', 0, '2024-06-22 05:42:33', '2024-06-22 05:42:33'), +(496, 42, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-06-22 06:46:15', '2024-06-22 06:46:15'), +(497, 43, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-06-23 07:45:02', '2024-06-23 07:45:02'), +(498, 43, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-06-24 00:06:37', '2024-06-24 00:06:37'), +(499, 43, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.02\r\n\r\nOK (1 test)', 0, '2024-06-24 00:48:51', '2024-06-24 00:48:51'), +(500, 44, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-06-24 11:40:01', '2024-06-24 11:40:01'), +(501, 44, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.007\r\n\r\nOK (1 test)', 0, '2024-06-24 11:42:20', '2024-06-24 11:42:20'), +(502, 43, 3, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nHigh Value Item!JUnit version 4.13.2\r\n.\r\nTime: 0.009\r\n\r\nOK (1 test)', 0, '2024-06-25 03:21:34', '2024-06-25 03:21:34'), +(503, 43, 4, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nShipping cost: 1.75JUnit version 4.13.2\r\n.\r\nTime: 0.011\r\n\r\nOK (1 test)', 0, '2024-06-25 03:25:57', '2024-06-25 03:25:57'), +(504, 45, 1, 1, 'java_files\\revisi_gmail_com\\TipeData.java:12: error: cannot find symbol\r\n vBalok = panjang * lebar * tingg;\r\n ^\r\n symbol: variable tingg\r\n location: class TipeData\r\n1 error\r\nTEST FAILED!', 1, '2024-06-30 10:51:59', '2024-06-30 10:51:59'), +(505, 45, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-06-30 10:52:07', '2024-06-30 10:52:07'), +(506, 45, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-06-30 10:55:22', '2024-06-30 10:55:22'), +(507, 43, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.045\r\n\r\nOK (1 test)', 0, '2024-06-30 10:57:50', '2024-06-30 10:57:50'), +(508, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-06-30 10:58:52', '2024-06-30 10:58:52'), +(509, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-06-30 11:06:01', '2024-06-30 11:06:01'), +(510, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-06-30 11:08:51', '2024-06-30 11:08:51'), +(511, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.014\r\n\r\nOK (1 test)', 0, '2024-06-30 11:16:30', '2024-06-30 11:16:30'), +(512, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.019\r\n\r\nOK (1 test)', 0, '2024-06-30 11:18:51', '2024-06-30 11:18:51'), +(513, 43, 5, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\ndiskon yang didapatkan adalah 20%JUnit version 4.13.2\r\n.\r\nTime: 0.012\r\n\r\nOK (1 test)', 0, '2024-06-30 11:20:08', '2024-06-30 11:20:08'), +(514, 43, 6, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\n12345JUnit version 4.13.2\r\n.\r\nTime: 0.023\r\n\r\nOK (1 test)', 0, '2024-06-30 11:20:45', '2024-06-30 11:20:45'), +(515, 45, 1, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nVolume balok = 420, Luas permukaan balok = 344JUnit version 4.13.2\r\n.\r\nTime: 0.022\r\n\r\nOK (1 test)', 0, '2024-06-30 11:23:22', '2024-06-30 11:23:22'), +(516, 45, 2, 1, 'java 19.0.2 2023-01-17\r\nJava(TM) SE Runtime Environment (build 19.0.2+7-44)\r\nJava HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)\r\nSelamat anda lulus!JUnit version 4.13.2\r\n.\r\nTime: 0.016\r\n\r\nOK (1 test)', 0, '2024-07-02 10:28:27', '2024-07-02 10:28:27'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `contents` +-- + +CREATE TABLE `contents` ( + `id` int UNSIGNED NOT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `lesson_id` int UNSIGNED NOT NULL, + `description` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `url_video` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `published` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `contents` +-- + +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 'Tipe Data, Variabel dan Operator', 1, '

Variabel

Variabel adalah tempat untuk menyimpan data. Deklarasi variabel adalah sebuah perintah agar komputer menyediakan variabel yang akan kita pakai. Pendeklarasian variabel harus diawali dengan tipe variabel, nama variabel kemudian diakhiri dengan titik-koma ;.


Bentuk penulisan :

  [=nilai awal]\r\n

nilai dalam tanda [] bersifat optional. Contoh:

int contVariabel;\r\n\r\nint contohVar = 34;\r\n

Variabel dibagi menjadi 2 jenis yaitu

  1. Variabel lokal: variable yang hanya bisa dikenali pada sub program, pada kesempatan ini seluruhnya masih menggunakan variabel lokal.
  2. Variabel global: variable yang dapat dikenali pada keseluruhan program. Penggunaan variabel global akan dijelaskan lebih detail pada pertemuan yang akan datang


Dalam memberi nama variabel ada beberapa aturan yang harus dipenuhi, antara lain:

  • Diawali dengan huruf atau karakter underscore _
  • Nama variabel bersifat case sensitive (huruf besar dianggap berbeda dengan huruf kecil)
  • Tidak boleh menggunakan spasi (sebagai pengganti dapat digunakan tanda underscore atau penggunaan huruf besar pada awal kata berikutnya)
  • Tidak boleh menggunakan karakter khusus seperti <,>,*,?,= dan sebagainya.
  • Apabila nama variable lebih dari satu kata maka kata yang setelahnya diawali huruf besar.

Beberapa Keyword yang tidak boleh digunakan sebagai nama variabel:

abstract, default, if, private, this, assert, do, implements, protected, throw, boolean, double, import, public, throws, break, else, instanceof, return, transient, byte, enum, int, short, try, case, extends, interface, static, void, catch, final, long, strictfp, volatile, char, finally, native, super, while, class, float, new, switch, continue, for, package, synchronized\r\n


Tipe Data

Tipe data adalah jenis data yang ingin kita simpan di variabel. Tipe data dapat dikategorikan menjadi dua kelompok, yaitu

  • Tipe data primitive/build in: tipe data bawaan dari sebuah bahasa pemrograman
  • Tipe data non-primitive/referensi: tipe data yang dibuat berdasarkan kebutuhan programmer

Selengkapnya, tipe data primitive yang bisa dipakai dalam pemrograman Java ada di tabel berikut ini:


Selain harus memperhatikan jenis tipe data yang digunakan, tipe data juga mempunyai penulisan nilai yang berbeda. Sebagai contoh penulisan nilai tipe data char harus diapit dengan tanda \' (petik satu). Variabel String harus menggunakan tanda \" (petik dua). Dalam penulisan bilangan pecahan digunakan tanda . (titik) bukan koma.


Deklarasi variabel

Secara umum, format deklarasi variabel dapat dinyatakan sebagai berikut:

contoh:

int bilangan;\r\nbyte contohDeklarasiVariabelMenggunakanTipeDataByte;\r\nfloat volume, luas;\r\nint angka = 1;\r\nfloat phi = 3.14f;\r\nchar kelas = \'A\';\r\nString nama = \"Joko Sembung\";\r\n


Mencetak Variabel

Contoh penggunaan fungsi untuk menampilkan nilai variabel di layar command prompt adalah sebagai berikut:

System.out.println(nilai);\r\nSystem.out.println(a);\r\nSystem.out.println(\"Nilai Anda adalah \"+nilai);\r\nSystem.out.println(\"Angka adalah \"+a);\r\nSystem.out.println(a+\" angka pertama, \"+b+\" angkat kedua, \"+c+\" angka ketiga \");\r\nSystem.out.println(String.format(\"%d angka pertama, %d angkat kedua, %d angka ketiga \",a,b,c));\r\n


Casting Tipe Data

ketika kita ingin memberikan nilai dari tipe data primitive ke tipe data primitive yang lain. Ada 2 bentuk tipe casting tipe data:

  • Widening casting(otomatis): mengubah tipe data dari yang ukurannya lebih kecil ke tipe data yang lebih besar
	byte -> short -> char -> int -> long -> float -> double\r\n

contoh:

    	byte umur = 9;\r\n        double myDouble = umur;\r\n        System.out.println(umur); //output 9System.out.println(myDouble); //output 9.0\r\n


  • Narrowing casting(manual): mengubah tipe data dari yang ukurannya lebih besar ke tipe data yang lebih kecil
	double -> float -> long -> int -> char -> short -> byte\r\n

contoh:

	//Contoh tipe data primitive\r\n    int x = 9; //hanya ada 1 nilai yang disimpan, yaitu 9\r\n    char hurufKu = \'N\'; //hanya ada 1 nilai yang disimpan, yaitu karakter N\r\n    \r\n    //Contoh tipe data non-primitiveString tulisan = \"Aku belajar Java\"; //ada 16 nilai, termasuk spasi\r\n    int[] daftar = { 1, 4, 9, 16, 25, 36, 49 }; //ada 7 nilai bertipe integer\r\n


Sequence/Statement

Perintah/statement digunakan untuk memerintahkan komputer untuk melakukan sesuatu. Contoh, pada program menghitung luas persegi panjang diatas, ada beberapa statemen:

  • Perintah panjang = 10; memerintahkan komputer untuk mengisi variabel panjang dengan nilai 10. Begitu juga dengan perintah lebar = 5;
  • Perintah luas = panjang * lebar; memerintahkan komputer untuk menghitung hasil perkalian dari panjang dan lebar, lalu menyimpannya kedalam variabel luas.
  • Perintah System.out.println(\"Luas persegi panjang: \" + luas); memerintahkan komputer untuk menampilkan isi variabel luas ke layar.

Setiap statement harus diakhir dengan titik koma ;, kecuali statement-statement tertentu seperti ifforwhileclass dan sebagainya.


Keyword Import

Digunakan untuk memanggil library/fungsi-fungsi yang telah disediakan oleh bahasa Java. Perintah import java.util.Scanner; digunakan untuk memanggil library Scanner yang diperlukan untuk menerima input dari keyboard yang akan dibahas di bagian input.


Kurung Kurawal

Kurung kurawal berfungsi untuk memberitahu komputer bahwa perintah-perintah di dalamnya merupakan satu kesatuan. Singkatnya, kurung kurawal digunakan untuk membuat sekumpulan perintah (compount statement/block).


Output

Setiap program pasti menghasilkan output. Salah satu cara untuk menampilkan output adalah dengan menampilkannya ke layar. Untuk menampilkan ke layar, ada beberapa cara:

  1. System.out.print(“Hello world”); Perintah ini akan menampilkan kata Hello world ke layar, atau apapun yang kita tuliskan didalam tanda petik.
  2. System.out.println(“Hello world”); Perintah ini akan menampilkan kata Hello world ke layar, atau apapun yang kita tuliskan didalam tanda petik, sekaligus memberi perintah ganti baris di akhir kata/kalimat.
  3. System.out.println(panjang); Perintah ini akan menampilkan isi variabel panjang ke layar. Perhatikan bahwa untuk menampilkan isi variabel, tidak perlu menggunakan tanda petik ( “ ).
  4. System.out.println(“Panjang segi empat: “ + panjang); Perintah ini akan menampilkan kalimat “Panjang segi empat: “ kemudian disambung dengan isi variabel panjang ke layar. Perhatikan untuk menyambung kalimat dengan isi variabel, digunakan tanda plus ( + ).

contoh:

  • Menggunakan System.out.print()
      System.out.print(\"Hello World!\");\r\n      System.out.print(\"Nama saya Jack\");\r\n

Hasil

      Hello World!Nama saya Jack\r\n
  • Menggunakan System.out.println()
      System.out.println(\"Hello World!\");\r\n      System.out.println(\"Nama saya Jack\");\r\n

Hasil

      Hello World!\r\n      Nama saya Jack\r\n
  • Menampilkan isi variabel panjang
      int panjang = 10;\r\n      System.out.println(panjang);\r\n

Hasil

      10\r\n
  • Menampilkan kalimat \"Panjang segi empat\" dan disambung dengan isi variabel panjang
      int panjang = 10;\r\n      System.out.println(\"Panjang segi empat: \" + panjang);\r\n

Hasil

      Panjang segi empat: 10\r\n

Pada output program terdapat beberapa karakter khusus. Karakter-karakter ini dikenal dengan istilah escape sequence. Karakter-karakter yang umum digunakan dapat dilihat pada tabel berikut ini:


Input

Untuk membaca input dari keyboard, pertama-tama kita pastikan bahwa library Scanner sudah kita sertakan. Caranya adalah dengan menuliskan perintah import java.util.Scanner; di baris paling atas dari kode program kita. Selanjutnya kita tuliskan perintah deklarasi scanner berikut ini didalam fungsi main():

Scanner sc = new Scanner(System.in);\r\n

Selanjutnya, tergantung dari jenis input yang akan kita masukkan, berupa bilangan bulat (int), bilangan koma (float/double), atau karakter (String).

  1. Jika input berupa bilangan bulat, maka perintahnya adalah: nextInt();
  2. Jika input berupa bilangan koma, maka perintahnya adalah: nextFloat();
  3. Jika input berupa teks, maka perintahnya adalah: nextLine();

Contoh:

  • Input berupa bilangan bulat:
    import java.util.Scanner;\r\n    \r\n    class Hello {\r\n     public static void main(String args[]) {\r\n       Scanner sc = new Scanner(System.in);\r\n       int usia;\r\n       System.out.print(\"Masukkan usia anda: \");\r\n       usia = sc.nextInt();\r\n       System.out.print(\"Usia anda adalah: \" + usia);\r\n     }\r\n    }\r\n

Hasil

    Masukkan usia anda: 20\r\n    Usia anda adalah 20\r\n
  • Input berupa dua buah bilangan:
    import java.util.Scanner;\r\n    \r\n    class Hello {\r\n     public static void main(String args[]) {\r\n       Scanner sc = new Scanner(System.in);\r\n       int panjang, lebar;\r\n       System.out.print(\"Masukkan panjang: \");\r\n       panjang = sc.nextInt();\r\n       System.out.print(\"Masukkan lebar: \");\r\n       lebar = sc.nextInt();\r\n       System.out.print(\"Nilai dari panjang: \" + panjang);\r\n       System.out.print(\"Nilai dari lebar: \" + lebar);\r\n     }\r\n    }\r\n

Hasil

    Masukkan panjang: 15\r\n    Masukkan lebar: 7\r\n    Nilai dari panjang: 15\r\n    Nilai dari lebar: 7\r\n


Operator

Operator merupakan simbol yang biasa digunakan dalam menulis suatu penyataan (statement) dalam bahasa pemrograman apapun. Operator akan melakukan suatu operasi terhadap operand sesuai dengan fungsinya. Jenis-jenis operator adalah sebagai berikut

  • Operator Aritmatika
  • Operator Increment dan Decrement
  • Operator Assignment
  • Operator Relasi
  • Operator Logika
  • Operator Bitwise

Operator Aritmatika

Arithmatic operator (operator aritmatika) adalah operator yang berfungsi untuk operasi aritmatika.

Contoh penggunaan:

int a = 10, b = 5\r\n\r\nSystem.out.println(a+b); //hasilnya 15\r\n\r\nSystem.out.println(a-b); //hasilnya 5\r\n\r\nSystem.out.println(a*b); //hasilnya 50\r\n\r\nSystem.out.println(a/b); //hasilnya 2\r\n\r\nSystem.out.println(a%b); //hasilnya 0\r\n

Operator Increment dan Decrement

Digunakan untuk menaikan atau menurunkan suatu nilai integer (bilangan bulat) sebanyak satu satuan, dan hanya dapat digunakan pada variabel

Contoh penggunaan:

int a = 6;\r\nSystem.out.println(a++); //hasilnya 6\r\nSystem.out.println(++a); //hasilnya 8\r\nSystem.out.println(a--); //hasilnya 8\r\nSystem.out.println(--a); //hasilnya 6\r\n


Operator Assignment

Operator assignment dalam Java digunakan untuk memberikan sebuah nilai ke sebuah variabel. Operator assignment hanya berupa =.

Contoh penggunaan:

int a, b;\r\na = 6;\r\nb = 3;\r\nSystem.out.println(a); //hasilnya 6\r\na += b;\r\nSystem.out.println(a); //hasilnya 9\r\na -= b;\r\nSystem.out.println(a); //hasilnya 6\r\na *= b;\r\nSystem.out.println(a); //hasilnya 18\r\na /= b;\r\nSystem.out.println(a); //hasilnya 6\r\na %= b;\r\nSystem.out.println(a); //hasilnya 0\r\n


Operator Relasi

Operator relasi dalam Java digunakan untuk menghasilkan nilai boolean yang sering digunakan untuk mengatur alur jalannya sebuah program. Nilai yang dihasilkan dari operator ini adalah true atau false.

Contoh penggunaan:

int a = 6, b = 3;\r\nSystem.out.println(a > b); //hasilnya true\r\nSystem.out.println(a < b); //hasilnya false\r\nSystem.out.println(a == b); //hasilnya false\r\nSystem.out.println(a != b); //hasilnya true\r\nSystem.out.println(a >= b); //hasilnya true\r\nSystem.out.println(a <= b); //hasilnya false\r\n


Operator Logika

Operator ini digunakan untuk ekspresi logik yang menghasilkan nilai boolean, true atau false.

Contoh penggunaan:

boolean a = true, b = false;\r\nSystem.out.println(a && b); //hasilnya false\r\nSystem.out.println(a || b); //hasilnya true\r\nSystem.out.println(!a); //hasilnya false\r\n


Operator Bitwise

Operator ini digunakan untuk melakukan manipulasi bit dari sebuah bilangan.

Contoh penggunaan:

int a = 60; //ubah ke biner 00111100\r\nint b = 13; //ubah ke biner 00001101\r\nint c = 0;\r\n\r\n/*      00111100\r\n        00001101\r\na & b = 00001100*/\r\n\r\nc = a & b;\r\nSystem.out.println(c); //hasilnya 12\r\n\r\n/*      00111100\r\n        00001101\r\na | b = 00111101*/\r\n\r\nc = a | b;\r\nSystem.out.println(c); //hasilnya 61\r\n\r\n/*      00111100\r\n        00001101\r\na ^ b = 00110001*/\r\n\r\nc = a ^ b;\r\nSystem.out.println(c); //hasilnya 49\r\n\r\n/*   00111100\r\n!a = 11000011*/\r\n\r\nc = ~a;\r\nSystem.out.println(c); //hasilnya -61\r\n\r\n/*       00111100\r\na << 2 = 11110000*/\r\n\r\nc = a << 2;\r\nSystem.out.println(c); //hasilnya 240\r\n\r\n/*       00111100\r\na << 2 = 00001111*/\r\n\r\nc = a >> 2;\r\nSystem.out.println(c); //hasilnya 15\r\nc = a >>> 2;\r\nSystem.out.println(a >>> 2); //hasilnya 15\r\n


Flowchart

Flowchart merupakan sebuah bagan dengan symbol-symbol tertentu yang digunakan untuk menjelaskan urutan proses dan hubungan antar proses lainnya pada sebuah program.


Simbol-simbol flowchart

Contoh flowchart

Flowchart untuk menghitung luas dan keliling bangun datar, persegi panjang.

', 'https://www.youtube.com/embed/IecFYqIGO-w', 1, '2023-06-01 05:41:16', '2023-06-01 07:14:10', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(2, 'Sintaks Pemilihan IF-ELSE', 2, '

Sintaks Pemilihan IF


Pada kehidupan sehari-hari kita selalu mengambil keputusan dengan mempertimbangkan berbagai hal/kondisi-kondisi. Sintaks pemilihan adalah statement pemilihan yang digunakan untuk mengatur kapan suatu perintah akan dijalankan. Dengan statement ini kita bisa mengatur kapan suatu perintah akan dijalankan, yaitu ketika telah dipenuhinya suatu syarat tertentu. Misalnya:

Jika nilai lebih dari 70 maka Diterima

Pernyataan di atas mengandung sebab akibat. Bila dilihat, keterangan nilai lebih dari 70 adalah merupakan suatu syarat, sedangkan DITERIMA ini akan dilakukan apabila syaratnya terpenuhi atau nilai lebih dari 70. Dalam dunia logika, istilah terpenuhinya syarat dapat dikatakan syarat tersebut bernilai benar atau TRUE. Selanjutnya pernyataan jika...maka... dapat diadopsi dalam programming. Untuk pernyataan tersebut dalam programming, maka dapat digunakan statement sintaks pemilihan. Pada pembahasan di materi sintaks pemilihan 1 ini akan dipelajari tiga macam sintaks pemilihan yaitu ifif elseif else if else dan switch case.

Bentuk umum:

if (kondisi)  {\r\n  pernyataan;\r\n  pernyataan;\r\n  ...\r\n}\r\n

Bentuk flowchart:

  • Apabila kondisi bernilai benar, maka pernyataan akan dilaksanakan.
  • Apabila kondisi bernilai salah, maka pernyataan tidak akan dilaksanakan.

Pada sintaks pemilihan 1 ini, kita akan menggunakan operator hubungan (relational operator). Berikut ini operator hubungan dalam bahasa pemrograman Java:

Implementasi atau penggunaan operator hubungan pada sintaks pemilihan adalah sebagai berikut:

Contoh program:

import java.util.Scanner;\r\n\r\npublic class Contoh {\r\n  public static void main(String[] args) {\r\n    Scanner input = new Scanner(System.in);\r\n\r\n    int angka;\r\n\r\n    System.out.print(\"Masukkan angka: \");\r\n    angka = input.nextInt();\r\n\r\n    if (angka > 70) {\r\n      System.out.println(\"Selamat anda dinyatakan diterima\");\r\n    }\r\n\r\n  }\r\n}\r\n

Ketika program di atas dijalankan kemudian dimasukkan angka 80 maka akan keluar tampilan Selamat anda dinyatakan diterima. Hal ini disebabkan karena terdapat sebuah kondisi yang menyatakan bahwa jika nilai lebih dari 70 (angka > 70) maka akan tampil Selamat anda dinyatakan diterima, sedangkan jika dimasukkan angka 70 atau kurang dari 70 maka tidak akan terdapat tampilan apapun.


Sintaks Pemilihan IF-ELSE


Bentuk umum:

if (kondisi) {\r\n  pernyataan1;\r\n} else {\r\n  pernyataan2;\r\n}\r\n

Bentuk flowchart:

Struktur ini minimal memiliki 2 pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang akan dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan kedua yang akan dilaksanakan.

Contoh program:

import java.util.Scanner;\r\n\r\npublic class Contoh {\r\n  public static void main(String[] args) {\r\n    Scanner input = new Scanner(System.in);\r\n\r\n    int angka;\r\n\r\n    System.out.print(\"Masukkan angka: \");\r\n    angka = input.nextInt();\r\n\r\n    if (angka > 70) {\r\n      System.out.println(\"Selamat anda dinyatakan diterima\");\r\n    } else {\r\n      System.out.println(\"Silahkan coba tes lagi tahun depan\");\r\n    }\r\n\r\n  }\r\n}\r\n

Pada contoh program if else di atas ditambahkan kode program.

else {\r\n  System.out.println(\"Silahkan coba tes lagi tahun depan\");\r\n}\r\n

Sehingga ketika angka yang dimasukkan nilainya 70 atau kurang dari 70 maka akan muncul tampilan Silahkan coba tes lagi tahun depan.

', 'https://www.youtube.com/embed/492A2poEoow', 1, '2023-06-01 06:22:29', '2023-06-01 07:15:29', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(3, 'Sintaks Pemilihan IF-ELSE IF-ELSE', 2, '

Sintaks Pemilihan IF-ELSE IF-ELSE


Bentuk Umum:

if (kondisi1) {\r\n  pernyataan-1;\r\n} else if (kondisi2) {\r\n  pernyataan-2;\r\n} else if (kondisix) {\r\n  pernyataan-x;\r\n} else {\r\n  pernyataan-else;\r\n}\r\n

Bentuk Flowchart:

Pada bentuk if else if else di atas, pernyataan 1 akan dijalankan apabila kondisi1 bernilai benar. Jika kondisi1 bernilai salah, maka akan dicek kondisi2. Jika kondisi2 benar maka akan dijalankan pernyataan2, begitu seterusnya. Dan apabila tidak ada satupun syarat yang terpenuhi, barulah pernyataan-else akan dikerjakan.

Contoh program:

import java.util.Scanner;\r\n\r\npublic class Contoh {\r\n  public static void main(String[] args) {\r\n    Scanner input = new Scanner(System.in);\r\n\r\n    int bayar;\r\n\r\n    System.out.print(\"Masukkan total belanja anda: \");\r\n    bayar = input.nextInt();\r\n\r\n    if (bayar >= 2000000) {\r\n      System.out.println(\"Selamat anda mendapatkan hadiah kompor gas\");\r\n    } else if (bayar >= 1000000) {\r\n      System.out.println(\"Selamat anda mendapatkan hadiah teflon\");\r\n    } else if (bayar >= 500000) {\r\n      System.out.println(\"Selamat anda mendapatkan hadiah piring\");\r\n    } else {\r\n      System.out.println(\"Maaf anda belum beruntung, tingkatkan belanja anda!\");\r\n    }\r\n\r\n  }\r\n}\r\n


', 'https://www.youtube.com/embed/yGrD2uZnvQo', 1, '2023-06-01 06:31:47', '2023-06-01 07:16:03', NULL), +(4, 'Sintaks Pemilihan switch-case', 2, '

Sintaks pemilihan ini digunakan untuk penyelesaian kondisi dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari beberapa pernyataan case tergantung nilai kondisi yang ada di dalam switch. Selanjutnya proses diteruskan hingga ditemukan pernyataan break. Jika tidak ada nilai pada case yang sesuai dengan nilai kondisi, maka proses akan diteruskan kepada pernyataan yang ada di bawah default. Bentuk switch case pada umumnya digunakan untuk menggantikan pernyataan if else if else yang berdasarkan nilai konstanta.

Bentuk umum:

switch (kondisi) {\r\ncase konstanta-1:\r\n  pernyataan-1;\r\n  break;\r\ncase konstanta-2:\r\n  pernyataan-2;\r\n  break;\r\n  ...\r\n  ...\r\ncase konstanta-x:\r\n  pernyataan-x;\r\n  break;\r\ndefault:\r\n  pernyataan;\r\n}\r\n

Contoh program:

import java.util.Scanner;\r\n\r\npublic class Contoh {\r\n  public static void main(String[] args) {\r\n    Scanner input = new Scanner(System.in);\r\n\r\n    int angka;\r\n\r\n    System.out.print(\"Masukkan kode kelas anda: \");\r\n    angka = input.nextInt();\r\n\r\n    switch(angka) {\r\n      case 1:\r\n        System.out.println(\"Kelas 1\");\r\n        break;\r\n      case 2:\r\n        System.out.println(\"Kelas 2\");\r\n        break;\r\n      case 3:\r\n        System.out.println(\"Kelas 3\");\r\n        break;\r\n      case 4:\r\n        System.out.println(\"Kelas 4\");\r\n        break;\r\n      default:\r\n        System.out.println(\"Kode yang anda masukkan salah\");\r\n    }\r\n\r\n  }\r\n}\r\n

Pada contoh program switch case di atas jika dimasukkan angka 1 maka outputnya Kelas 1 dan seterusnya sampai angka 4. Jika inputan selain angka 1 s/d 4 maka outputnya adalah Kode yang anda masukkan salah.

', 'https://www.youtube.com/embed/_OwCDThM3EI', 1, '2023-06-01 06:48:22', '2023-06-01 07:16:43', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(5, 'Sintaks Pemilihan Bersarang', 3, '

Sintaks Pemilihan Bersarang


Kita telah mempelajari penggunaan pernyataan IF untuk memilih sebuah tidak, pernyataan IF-ELSE untuk memilih antara dua tindakan, serta pernyataan IF-ELSE IF-ELSE dan SWITCH-CASE untuk memilih beberapa tindakan (3 atau lebih). Terkadang kita membutuhkan pengambilan keputusan dalam bentuk level (bertingkat) sehingga di dalam suatu pernyataan IF (atau IF-ELSE) bisa saja terdapat pernyataan IF (atau IF-ELSE) yang lain. Jenis percabangan seperti ini disebut NESTED IF (percabangan bersarang). Secara umum, bentuk penulisan pernyataan NESTED IF adalah sebagai berikut:

if (kondisi 1){\r\n  if (kondisi 2){\r\n    pernyataan 1;\r\n    …\r\n    …\r\n    if (kondisi n){\r\n      pernyataan 2;\r\n    } else {\r\n      pernyataan 3;\r\n    }\r\n    } else {\r\n    pernyataan n;\r\n    }\r\n} else {\r\n  pernyataan x;\r\n}\r\n

Pada bentuk penulisan pernyataan NESTED-IF tersebut, kondisi yang akan diseleksi pertama kali adalah kondisi IF yang berada di posisi terluar (kondisi 1).

  • Jika kondisi 1 bernilai salah, maka pernyataan ELSE terluar (pasangan dari IF yang bersangkutan) yang akan diproses. Namun, jika pernyataan ELSE (pasangan dari IF) tidak ditulis, maka penyeleksian kondisi akan dihentikan.
  • Jika ternyata kondisi 1 bernilai benar, maka kondisi berikutnya yang lebih dalam (kondisi 2) akan diseleksi. Jika kondisi 2 bernilai salah, maka pernyataan ELSE (pasangan dari IF yang bersangkutan) yang akan diproses. Namun, jika pernyataan ELSE (pasangan dari IF) tidak ditulis, maka penyeleksian kondisi akan dihentikan.

Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisi n, jika kondisi-kondisi sebelumnya bernilai benar.

Berikut ini adalah contoh penggunaan NESTED IF ketika seseorang akan melakukan pembayaran di kasir. Kasir akan memberikan pertanyaan sebagai berikut:

  • Apakah pelanggan mempunyai kartu anggota?
  • TRUE: Pelanggan mempunyai kartu anggota
  • Apakah total harga barang belanjaan lebih dari Rp 500.000?
  • TRUE: Total harga barang belanjaan lebih dari Rp 500.000, pelanggan mendapatkan diskon Rp 50.000
  • FALSE: Total harga barang belanjaan tidak lebih dari Rp 500.000, pelanggan mendapatkan diskon Rp 25.000
  • FALSE: Pelanggan tidak mempunyai kartu anggota
  • Apakah total harga barang belanjaan lebih dari Rp 200.000?
  • TRUE: Total harga barang belanjaan lebih dari Rp 200.000, pelanggan mendapatkan diskon Rp 10.000
  • FALSE: Total harga barang belanjaan tidak lebih dari Rp 200.000, pelanggan tidak mendapatkan diskon

Untuk lebih memperjelas alur percabangan pada contoh kasus tersebut, perhatikan flowchart berikut

berikut adalah kode program untuk penggunaan NESTED IF pada contoh kasus pembayaran di kasir.

Pada kode program tersebut, kasir diminta untuk memasukkan input, apakah pelanggan mempunyai kartu anggota atau tidak. Selanjutnya kasir juga perlu memasukkan total harga barang belanjaan. Kondisi yang akan diseleksi pertama kali adalah nilai dari variabel “kartu”. Jika pengguna memasukkan input “y”, maka seleksi kondisi ini bernilai benar, dan selanjutnya dilakukan penyeleksian total harga barang belanjaan untuk menentukan diskon yang diperoleh. Berikut adalah hasil keluaran program ketika dijalankan:

Kondisi di dalam pernyataan IF-ELSE dapat berupa ekspresi boolean yang kompleks, dimana operator logika seperti &&||, dan ! dapat digunakan. Operator yang diterapkan pada sub-ekspresi akan dievaluasi dari kiri ke kanan.

  • Ketika mengevaluasi (e1 && e2), jika e1 menghasilkan FALSE, maka e2 tidak akan dievaluasi. Dengan demikian, nilai seluruh ekspresi (e1 && e2) akan dianggap salah. Namun, jika e1 menghasilkan TRUE, maka selanjutnya e2 akan dievaluasi untuk menentukan nilai seluruh ekspresi
  • Ketika mengevaluasi (e1 || e2), jika e1 menghasilkan TRUE, maka e2 tidak akan dievaluasi. Dengan demikian, nilai seluruh ekspresi (e1 || e2) akan dianggap benar. Namun, jika e1 menghasilkan FALSE, maka selanjutnya e2 akan dievaluasi untuk menentukan nilai seluruh ekspresi


', 'https://www.youtube.com/embed/yrGPuZB1SsA', 1, '2023-06-01 06:57:49', '2023-06-01 07:17:15', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(6, 'Perulangan dengan for', 4, '

Perulangan dengan For


Loop adalah suatu blok atau kelompok instruksi yang dilaksanakan secara berulang-ulang. Perulangan yang disebut juga repetition akan membuat efisiensi proses dibandingkan jika dioperasikan secara manual. Perulangan yang dijelaskan pada jobsheet ini adalah:

  • Perulangan dengan for
  • Perulangan dengan while
  • Perulangan dengan do-while

for

for adalah kode yang digunakan untuk menjalankan serangkaian kode secara berulang-ulang. Pada kode for ini terdapat beberapa komponen yang dicantumkan, antara lain: (1) inisialisasi, (2) kondisi, (3) perubahan nilai, (4) statement yang diulang. Berikut ini format sintaks untuk kode for.

    for(inisialisasi; kondisi; perubahan_nilai){\r\n        statement;\r\n        ...\r\n    }\r\n

Berikut ini adalah contoh skrip untuk mencetak tulisan “Hello dasar pemrograman” sebanyak 10 kali.

for (int a = 0; a < 10; a++) {\r\n    System.out.println(“Hello dasar pemrograman”);\r\n}\r\n


', 'https://www.youtube.com/embed/OAiZZqiSzxo', 1, '2023-06-01 07:23:07', '2023-06-01 07:23:07', NULL), +(7, 'Perulangan dengan While', 4, '

Perulangan dengan While


Kode while merupakan kode alternatif untuk melakukan perulangan selain for. Cara kerjanya sama, namun sintaks (aturan penulisan) yang berbeda. Berikut sintaks while

while(kondisi) {\r\n  statement;\r\n  perubahan nilai;\r\n}\r\n

Berikut ini adalah contoh skrip untuk mencetak tulisan “Hello dasar pemrograman” sebanyak 10 kali.

int a = 0;\r\nwhile (a < 10) {\r\n    System.out.println(“Hello dasar pemrograman”);\r\n}\r\n


', 'https://www.youtube.com/embed/KcsFEZerRDk', 1, '2023-06-01 07:24:51', '2023-06-01 07:24:51', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(8, 'Perulangan dengan Do-While', 4, '

Perulangan dengan Do-While


Kode do-while merupakan kode while-do dengan sintaks yang berbeda. Cara kerja do-while relatif sama dengan while. Berikut sintaks untuk do-while.

do {\r\n    statement;\r\n    perubahan_nilai;\r\n} while (kondisi);\r\n

Berikut ini adalah contoh skrip untuk mencetak tulisan “Hello dasar pemrograman” sebanyak 10 kali.

int a = 0;\r\ndo {\r\n    System.out.println(“Hello”);\r\n    a++;\r\n} while (a < 10);\r\n

Ketiga jenis loop tersebut sama-sama memiliki kondisi yang merupakan batasan suatu perulangan dilakukan. Cara kerja loop menggunakan for dan while dijelaskan pada Gambar 1. Batasan yang menjadi kondisi suatu perulangan didefinisikan dulu di awal, kemudian dilanjutkan dengan statement yang harus di-looping. Berbeda dengan for dan while, Gambar 2 menjelaskan tentang alur perulangan menggunakan do-while. Setelah inisialisasi dilakukan, akan di proses dulu statement yang harus dijalankan, baru kemudian dilakukan pembatasan looping dalam penulisan kondisi.


Break dan continue tergolong ke dalam keyword di bahasa pemrograman java, yang keduanya digunakan pada suatu kondisi tertentu , pada perulangan seperti while ,do while dan for. Jika fungsi break digunakan untuk menghentikan suatu pernyataan (statement), dan jika fungsi continue digunakan untuk mengabaikan ,lalu melanjutkan suatu pernyataan pada perulangan. Keyword break dan continue juga biasa digunakan, bersamaan dengan Control Flow seperti if else, dan switch case di dalam program java

', 'https://www.youtube.com/embed/E9khhPRn8aQ', 1, '2023-06-01 07:28:33', '2023-06-01 18:43:55', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(9, 'Perulangan Bersarang', 5, '

Pengertian Perulangan Bersarang (Nested Loop)


Pada bahasan sebelumnya, telah dibahas tentang konsep dasar perulangan. Pada bahasan tersebut disebutkan bahwa logika perulangan digunakan untuk melakukan beberapa proses atau statement program secara berulang-ulang, dengan suatu pola tertentu. Pada perulangan, proses atau satetement akan terus dilakukan atau akan terus diulang, selama kondisi perulangan bernilai benar/true. Dan sebaliknya, perulangan akan berhenti dan proses atau statement tidak akan dieksekusi lagi ketika kondisi perulangan bernilai salah/false. Jadi, dalam logika perulangan, suatu kondisi perulangan diperlukan untuk menentukan apakah suatu perulangan masih akan akan berlangsung lagi atau harus berhenti.

Perulangan bersarang (nested loop) adalah struktur perulangan yang berada di dalam perulangan lainnya. Pada umumnya, struktur perulangan yang berada di dalam perulangan lainnya tersebut memiliki hubungan yang saling terkait dalam menyesuaikan sebuah kasus. Pada dasarnya tidak ada batasan dalam jumlah perulangan bersarang. Tetapi sebaiknya tidak terlalu dalam, untuk menghindari kompleksitas yang tinggi serta alur program menjadi lebih sukar untuk dipahami.

Sebagai ilustrasi sederhana tentang cara kerja perulangan bersarang, misalkan ada seorang mahasiswa yang hendak mensosialisasikan organisasi kemahasiswaan kepada mahasiswa-mahasiswa yang saat itu sedang ada di ruang kelas di lantai 1 dan lantai 2. Di lantai 1 ada 3 ruang dan demikian juga di lantai 2. Dan tentu saja, mahasiswa tersebut harus pergi ke lantai 1 dan lantai 2. Dan misalkan ada lantai 3, 4 dan seterusnya, maka mahasiswa tersebut juga harus mengunjungi setiap lantai selanjutnya, yaitu lantai 3 dan lanai 4 juga bukan? Hal tersebut menggambarkan suatu proses perulangan untuk berkunjung ke setiap lantai, dan kita sebut saja perulangan luar (outer loop). Kemudian, setelah dia sampai di lantai 1, apa yang selanjutnya dilakukan? Tentu saja ia mulai masuk mulai ruangan 1.1, 1.2 dan selanjutnya 1.3. Dan hal tersebut juga menggambarkan suatu proses perulangan yang lain bukan? Kita sebut saja sebagai perulangan dalam (inner loop), dimana inner loop ini berada di dalam outer loop. Setelah semua ruang di lantai 1 telah selesai dikunjungi (inner loop telah selesai dilakukan/dijalankan), maka ia melanjutkan ke lantai 2 (melanjutkan lagi pada tahap perulangan selanjutnya untuk outer loop). Dan setelah sampai di lantai 2, maka ia mulai lagi untuk masuk ke ruangan satu persatu mulai 2.1, 2.2 dan 2.3 (mulai lagi untuk menjalankan inner loop, persis seperti yang sebelumnya telah dilakukan).

Jika digambarkan dalam flowchart maka ilustrasi di atas akan tampak seperti Gambar 2. Area yang bergaris merah disebut dengan inner loop, sedangkan area yang bergaris hijau adalah outer loop.

Bentuk Umum

Secara umum dan sederhana flowchart perulangan bersarang ditunjukan pada Gambar

  1. Pada gambar tersebut terlihat terdapat perulangan dalam yang berada di dalam perulangan luar. Tiap perulangan memiliki kondisi sendiri-sendiri dan statement masing-masing.


Dan apa dituliskan dalam pseudocode yang sangat sederhana, maka bentuk dasar dari perulangan bersarang bisa dituliskan sebagai berikut:

loop-1 {\r\n    loop-2 {\r\n    // another statement\r\n    loop-n {\r\n    // statement\r\n    }\r\n  }\r\n}\r\n


Sintaks

Semua sintaks perulangan yang telah dibahas sebelumnya, seperti for, while dan do-while, semuanya bisa digunakan untuk kasus perulangan bersarang. Dan tidak ada aturan yang mengharuskan menggunakan sintaks yang sama antara perulangan luar dan perulangan yang ada di dalamnya. Misalkan, perulangan luar menggunakan for, dan perulangan yang dalam menggunakan while, hal tersebut bisa dilakukan.

for(int i=0; i<2; i++)  {\r\n  for(int j=1; j<=5; j++) {\r\n    //statement\r\n  }\r\n}\r\n


', 'https://www.youtube.com/embed/5BTDCPuC8EI', 1, '2023-06-01 07:33:14', '2023-06-01 07:33:14', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(10, 'Array Satu Dimensi', 6, '

Array Satu Dimensi


Array adalah sekumpulan tempat penyimpanan data yang bertipe sama dan memiliki index. Array dapat diibaratkan sebagai sekumpulan variabel yang bertipe sama dan bernama sama. Array biasanya digunakan untuk menyimpan deret angka. Kemudian untuk membedakan nilai/isi dari variabel tersebut, digunakan index. Ada dua tipe array:

  • Array satu dimensi
  • Array multi dimensi

Ilustrasi diatas adalah variabel bertipe integer yang bernama bilanganBulat dan berisi nilai 17. Satu buah variabel hanya dapat menyimpan satu buah nilai. Sekarang amati ilustrasi tentang array berikut ini:

Ilustrasi diatas adalah array bertipe integer bernama arrayInteger dan memiliki kapasitas 5 buah bilangan integer. Sebuah array dapat menyimpan lebih dari satu nilai (tergantung dari kapasitasnya). Meskipun begitu, nilai-nilai yang disimpan di sebuah array harus bertipe sama. Tiap elemen pada array dinomori dengan index array. Index array selalu dimulai dari 0 (nol).


Cara Mendeklarasikan Array

Secara umum, cara mendeklarasikan array adalah sebagai berikut:

tipe[] namaArray = new tipe[kapasitas];\r\n
  • Tipe adalah tipe data dari array yang akan dibuat.
  • namaArray adalah nama dari array yang akan dibuat.
  • Kapasitas adalah banyaknya nilai yang dapat disimpan didalam array yang akan dibuat.

Untuk mengakses (mengisi/membaca) sebuah elemen dari array, kita hanya perlu menuliskan nama array tersebut, kemudian diikuti dengan index yang dituju didalam tanda kurung kotak [ ].

Contoh program berikut ini membuat array bernama bil, bertipe integer, jumlah elemen 4, kemudian mengisinya dengan beberapa nilai, kemudian menampilkan isi elemennya ke layar.

Ada beberapa alternatif cara untuk mendeklarasikan array.

  • Deklarasi array tanpa mengalokasikan jumlah elemennya:

int[] myArray;

  • Deklarasi array dengan mengalokasikan 10 elemen:

int[] myArray = new int[10];

  • Mengubah jumlah elemen array dengan 50:

myArray = new int[50];

  • Deklarasi array dan mengisinya secara langsung:
    int[] myArray = {10, 20, 30, 40};\r\n    String[] myArray2 = {\"Malang\", \"Surabaya\"};\r\n
  • Mengetahui jumlah elemen array:

myArray.length;


Menggunakan Perulangan Pada Array Satu Dimensi

Untuk mengakses (mengisi/membaca) nilai dari sebuah array, kita dapat menggunakan perulangan.

Kita juga bisa menggunakan perulangan untuk menerima input dan menyimpannya kedalam array. Contoh, program yang meminta input sebanyak 5 bilangan kemudian menampilkan kembali 5 bilangan tersebut.

Input Jumlah Elemen Array

Kita juga dapat membuat program yang meminta input berapa banyak jumlah elemen array. Langkahnya secara umum adalah:

  1. Deklarasikan array tanpa mengalokasikan jumlah elemennya.
  2. Buat input yang menerima jumlah elemen array kemudian simpan di sebuah variabel.
  3. Set jumlah elemen array menggunakan variabel yang diinputkan tadi. Coba amati program berikut ini:

', 'https://www.youtube.com/embed/S7s7yIPUn_s', 1, '2023-06-01 07:42:05', '2023-06-01 07:42:05', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(11, 'Array Multidimensi', 7, '

Array Multidimensi


Array Dua Dimensi

Array yang telah kita pelajari sebelumnya adalah satu dimensi, yang hanya terdiri dari satu baris elemen. Biasanya untuk menyajikan sebuah data dalam bentuk tabel, dalam tabel tersebut disajikan dalam bentuk baris dan kolom. Hal ini yang menjadi ciri khas dari sebuah array 2 dimensi.

Sebagai contoh

  1. Buku tamu yang terdapat di perpustakaan untuk melakukan pencatatan kunjungan pengunjung, dimana dalam buku tamu tersebut terdapat informasi nim, nama, tanggal kunjungan, dan tanda tangan.
  2. Rating film yang dilakukan oleh penonton atau viewer. Masing-masing baris atau record diisi atau dirating oleh penonton, sedangkan pada bagian kolomnya adalah daftar judul film yang akan dilakukan rating. Visualisasi dapat dilihat pada tabel di bawah ini

Tabel di atas menggambarkan bahwa setiap view akan melakukan rating terhadap 3 judul film, misalkan pada baris pertama melakukan rating pada judul_0=4, judul_1=4, dan judul_2=3.

Jadi Array 2 dimensi adalah sebuah array yang penomoran indeksnya menggunakan 2 angka yaitu satu untuk baris dan satu lagi untuk kolom, atau sebenarnya array 2 dimensi adalah kumpulan dari array 1 dimensi.


Cara Mendeklarasikan Array 2 dimensi

Untuk dapat mendeklarasikan array 2 dimensi mirip dengan 1 dimensi, perbedaanya adalah jumlah kurung siku [] atau subskrip. Pada array 2 dimensi berarti menggunakan 2 kurung siku [], pada java deklarasinya seperti di bawah ini

data_type[][] array_name = new data_type[x][y];\r\nx = jumlah baris\r\nY = jumlah kolom\r\nContoh\r\nint[][] arr = new int[10][20];\r\n

Selain contoh di atas, deklarasi yang lain juga dapat dilakukan seperti di bawah ini

  1. tipe_data[][] nama_variabel
  2. tipe_data [][]nama_variabel
  3. tipe_data nama_variabel[][]
  4. tipe_data []nama_variabel[]

Akan tetapi, yang sering kita jumpai atau sering digunakan adalah pada no.1 dan no.3, ketika menggunakan Java adalah seperti di bawah ini

int[][] ratings;\r\nint [][]ratings;\r\nint ratings[][];\r\nint []ratings[];\r\n

Inisialisasi Array 2 Dimensi

Untuk memberikan nilai awal pada array 2 dimensi menggunakan operator assigment =, ketika melakukan inisialisasi array 2 dimensi kolom pada setiap baris boleh berbeda seperti dicontohkan di bawah ini

int a[][]={\r\n    {1,2,3,4},\r\n    {5,6,7,8},\r\n    {7,8,9,6}\r\n}\r\nint b[][]={\r\n    {1},\r\n    {5,6,7,8},\r\n    {7,8,9}\r\n}\r\n

Array yang pertama pada variabel a kolomnya semua sama antar baris, sedangkan jika kita lihat pada array b kolomnya berbeda. Dalam array 2 multidimensi hal tersebut diperbolehkan. Ketika divisualisasikan ke dalam sebuah tabel seperti di bawah ini

Visualisasi untuk array a

Visualisasi untuk array b

Ukuran Baris dan Kolom Array 2 Dimensi

Seriap array baik array 1 dimensi ataupun array 2 dimensi memiliki ukuran, jika pada array 2 dimensi berarti ukuran pada baris atau kolom. Untuk mengetahui ukuran atau length, bisa menggunakan attribut length pada array. Cara penggunaannya adalah sebagai berikut

int[][] a = new int[3][4];\r\n

Ketika dipanggil a.length maka hasilnya adalah 3(jumlah baris), sedangkan ketika dipanggil a[0].length hasilnya 4(jumlah kolom)

Ketika menggunakan attribut length tentunya akan sangat menguntungkan, baik ketika akan menginputkan element atau menampilkan element menggunakan looping atau perulangan pada saat perubahan jumlah baris atau kolom. Kita tidak perlu mengubah kode yang ada di dalam looping untuk ukuran baris dan kolomnya.


Array Tiga Dimensi

Array 3 dimensi merupakan bentuk kompleks dari array multidimensi, seperti pada konsep sebelumnya array 2 dimensi adalah kumpulan dari array 1 dimensi. Begitu juga dengan array 3 dimensi, yang merupakan kumpulan array 2 dimensi. Contoh penerapan array 3 dimensi adalah pada gambar berwarna RGB(Red Green Blue). Visualisasinya adalah di bawah ini

Dari visualisasi di atas terlihat setiap gambar memiliki 3 channel atau layer yaitu RGB(Red, Green, dan Blue), 3 channel tersebut yang merepresentasikan array 3 dimensi. Setiap channel, RGB direpresentasikan array 2 dimensi. Jadi sudah sesuai dengan konsep array 3 dimensi bahwa merupakan kumpulan dari array 2 dimensi.

Deklarasi Array 3 Dimensi

Untuk dapat mendeklarasikan array 3 dimensi yaitu dengan menambahkan kurung siku [] atau subskrip menjadi 3, [][][]. Secara umum deklarasinya adalah di bawah ini

data_type[][][] array_name = new data_type[x][y][z];\r\nx = index array\r\ny = baris\r\nz = kolom\r\nContoh: int[][][] arr = new int[10][20][30];\r\n

Inisialisasi Array 3 Dimensi

Untuk memudahkan inisialisasi array 3D, bisa menggunakan representasi array 2D. Atau secara umum dapat digunakan dapat disajikan seperti di bawah ini

array_name[array_index][baris][kolom] = value;\r\ncontoh: arr[0][0][0] = 1;\r\ndata_type[][][] array_name = {\r\n    {\r\n         {valueA1B1C1, valueA1B1C2, ....},\r\n        {valueA1B2C1, valueA1B2C2, ....}\r\n    },\r\n    {\r\n        {valueA2B1C1, valueA2B1C2, ....},\r\n        {valueA2B2C1, valueA2B2C2, ....}\r\n    }\r\n};\r\n

Keterangan

  • A adalah indek array
  • B adalah baris
  • C adalah kolom

Ketika diimplementasikan menggunakan Java kurang lebih seperti di bawah ini

int[][][] a = {\r\n    {\r\n         {1,2},\r\n        {3,4}\r\n    },\r\n    {\r\n        {5,6},\r\n        {7,8}\r\n    }\r\n};\r\n

Atau misalkan dilakukan visualisasi adalah seperti di bawah ini

', 'https://www.youtube.com/embed/RN-ZVxdSWSM', 1, '2023-06-01 07:54:00', '2023-06-01 07:54:00', NULL); +INSERT INTO `contents` (`id`, `title`, `lesson_id`, `description`, `url_video`, `published`, `created_at`, `updated_at`, `deleted_at`) VALUES +(12, 'Fungsi Static', 8, '

Fungsi Static


Pengertian Fungsi

Dalam pemrograman terdapat istilah fungsi, prosedur, dan method, yang ketiganya pada dasarnya adalah sama, di mana kita dapat menyebut ketiganya sebagai fungsi. Prosedur adalah sebutan untuk fungsi yang tidak mengembalikan nilai. Fungsi ini biasanya ditandai dengan kata kunci void. Fungsi adalah sebutan untuk fungsi yang mengembalikan nilai. Method adalah fungsi yang berada di dalam sebuah Class. Sebutan ini, biasanya digunakan pada OOP.

Ada 2 jenis fungsi di Java, yaitu fungsi static dan non-static. Fungsi static adalah fungsi yang dapat dieksekusi langsung tanpa harus melakukan instansiasi objek. Sedangkan funsi non-static adalah fungsi yang harus dieksekusi dari objek yang sudah diinstansiasi, di mana ini berkaitan dengan OOP. Sehingga pada modul praktikum kali ini kita hanya membahas tentang fungsi static di Java. Cara mendeklarasikan fungsi static di Java adalah dengan menambahkan keyword static.

Sintaks Fungsi di Java

Fungsi harus dibuat atau ditulis di dalam class. Sintaks dasar penulisan fungsi adalah sebagai berikut:

static TypeDataKembalian namaFungsi(){\r\n  // statement\r\n}\r\n

Kata kunci static, artinya kita akan membuat fungsi static. TypeDataKembalian adalah tipe data dari nilai yang dikembalikan (output) setelah fungsi dieksekusi. Jika fungsi tersebut tidak mengembalikan output, maka TypeDataKembalian adalah void. Sedangkan, namaFungsi() adalah nama fungsi yang kita buat, ditulis dengan cara camel case. Contoh:

static void beriSalam(){\r\n  System.out.println(\"Halo! Selamat Pagi\");\r\n}\r\n

Cara Menjalankan/Eksekusi Fungsi

Setelah kita membuat fungsi, selanjutnya kita bisa mengeksekusi fungsinya. Fungsi dapat dipanggil dari fungsi main atau dari fungsi yang lainnya. Contoh pemanggilan fungsi dalam fungsi main:

public static void main(String[] args){\r\n  beriSalam();\r\n}\r\n
Kode selengkapnya, silahkan dicoba pada bagian Praktikum.

Fungsi dengan Parameter

Parameter adalah variabel yang menampung nilai untuk diproses di dalam fungsi. Parameter berperan sebagai input untuk fungsi. Struktur dasarnya seperti berikut ini:

static TypeDataKembalian namaFungsi(TipeData namaParameter, TipeData namaParameterLain){\r\n  // statement\r\n}\r\n

Parameter ditulis di antara parenthesis (...) setelah nama fungsi. Bila terdapat lebih dari satu parameter, maka dipisah dengan tanda koma , dan masing-masing parameter harus dideskripsikan tipe datanya.

Misalkan, dibuat parameter bernama ucapan dengan tipe String. Sehingga kita bisa menggunakan variabel ucapan di dalam fungsi berikut ini:

static void beriUcapan(String ucapan){\r\n  System.out.println(ucapan);\r\n}\r\n

Cara eksekusi fungsinya adalah dengan memberikan nilai yang akan diinputkan sebagai parameter, bisa berupa variabel atau langsung nilainya. Contohnya:

String halo = \"Hallo!\";\r\nberiUcapan(halo);\r\nberiUcapan(\"Selamat datang di pemrograman Java\");\r\n

Fungsi yang Mengembalikan Nilai

Pada kasus tertentu dibutuhkan sebuah fungsi yang dapat mengembalikan nilai output sehingga bisa diolah pada proses berikutnya. Pengembalian nilai pada fungsi menggunakan keyword return.

static TypeDataKembalian namaFungsi(TipeData namaParameter){\r\n  // statement\r\n  return variabelOutput;\r\n}\r\n

Contoh:

static int luasPersegi(int sisi){\r\n  int luas = sisi * sisi;\r\n  return luas;\r\n}\r\n

Pada contoh tersebut, dibuat sebuah parameter bernama sisi. Kemudian fungsi akan mengembalikan output dengan tipe int (integer) dari variabel luas. Cara pemanggilan fungsi tersebut adalah seperti berikut:

System.out.println(\"Luas Persegi dengan sisi 5 = \" + luasPersegi(5));\r\nint luasan = luasPersegi(6);\r\n


', 'https://www.youtube.com/embed/gHEXYYS-KAo', 1, '2023-06-01 07:57:10', '2023-06-01 07:57:10', NULL), +(13, 'Fungsi Rekursif', 9, '

Fungsi Rekursif


Teori

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Hal ini bisa terjadi karena di dalam suatu fungsi rekursi, terdapat statement/baris program yang memanggil fungsi itu sendiri. Ketika suatu fungsi rekursif dipanggil/dijalankan dan kemudian proses eksekusi sudah sampai pada statement pemanggilan fungsi itu sendiri, maka fungsi tersebut akan dipanggil/dijalankan kembali. Dan LAGI, ketika proses eksekusi sudah sampai pada statement pemanggilan fungsi itu sendiri, maka fungsi tersebut akan dipanggil/dijalankan kembali, BEGITU SETERUSNYA hingga didapatkan suatu KONDISI AKHIR dimana proses pemanggilan fungsi tersebut tidak dilakukan lagi. Jika kondisi akhir tersebut tidak ditemukan/tidak ada, maka fungsi tersebut akan dipanggil terus menerus (infinite loop) dan ini tidak diperbolehkan.

Pada fungsi rekursif, terdapat dua komponen blok kode, yaitu:

  • Base Case: kode program yang menunjukkan sebuah batas berhenti dari proses rekursif, sehingga apabila nilai batas ini terpenuhi maka proses rekursif diakhiri.
  • Recursion Call atau Reduction Step: kode program untuk melakukan pemanggilan terhadap dirinya sendiri.

Pada umumnya, format fungsi rekursif mempunyai bentuk sebagai berikut:

if (nilai batas) {\r\n    // menyelesaikan masalah\r\n} else {\r\n    // mendefinisikan kembali masalah menggunakan rekursi\r\n}\r\n

Cabang IF merupakan base case, sedangkan ELSE merupakan recursion call. Agar rekursi dapat berhenti, recursion call harus mendekati base case di setiap pemanggilan fungsi rekursif.

Berdasarkan penjelasan tersebut, sekilas terlihat seperti fungsi tersebut dijalankan secara berulang-ulang, dan fungsi rekursif memang biasanya digunakan pada kasus-kasus perulangan. Perhatikan fungsi tampilDeret() di bawah ini.

public class Deret {\r\n\r\n    static void tampilDeret(int x) {\r\n        if (x > 0) {\r\n            System.out.print(x + \" \");\r\n            // memanggil fungsi tampilDeret() itu sendiri dengan nilai parameter n - 1\r\n            tampilDeret(x - 1);\r\n        } else {\r\n            System.out.println();\r\n        }\r\n    }\r\n\r\n    public static void  main(String[] args) {\r\n        // memanggil fungsi tampilDeret() dengan nilai parameter 5\r\n        tampilDeret(5);\r\n    }\r\n}\r\n

Pada contoh fungsi rekursif tersebut, fungsi tampilDeret pertema kali dijalankan (di dalam fungsi main) dengan mengirimkan nilai parameter 5 menggunakan perintah tampilDeret(5). Dari proses pemanggilan fungsi tersebut akan ditampilkan nilai parameternya yaitu 5 dan diikuti dengan pemanggilan fungsi tampilDeret(4). Selanjutnya, dari proses pemanggilan fungsi tersebut akan ditampilkan nilai parameternya yaitu 4 dan diikuti dengan pemanggilan fungsi tampilDeret(3). Selanjutnya, dari proses pemanggilan fungsi tersebut akan ditampilkan nilai parameternya yaitu 3 dan diikuti dengan pemanggilan fungsi tampilDeret(2). Selanjutnya, dari proses pemanggilan fungsi tersebut akan ditampilkan nilai parameternya yaitu 2 dan diikuti dengan pemanggilan fungsi tampilDeret(1). Dari proses pemanggilan fungsi tersebut akan ditampilkan nilai parameternya yaitu 1 dan diikuti dengan pemanggilan fungsi tampilDeret(0). Dari proses pemanggilan fungsi tersebut maka akan ditampilkan ganti baris dan tidak ada pemanggilan fungsi tampilDeret selanjutnya (pemanggilan fungsi rekursif sudah selesai).

tampilDeret(5)\r\n    5 -> tampilDeret(4)\r\n        4 -> tampilDeret(3)\r\n            3 -> tampilDeret(2)\r\n                2 -> tampilDeret(1)\r\n                    1 -> tampilDeret(0)\r\n

Tampilan yang muncul dari hasil pemanggilan fungsi tampiDeret() adalah:

5 4 3 2 1\r\n


', 'https://www.youtube.com/embed/wdrSmK18nj4', 1, '2023-06-01 07:59:09', '2023-06-01 07:59:09', NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `courses` +-- + +CREATE TABLE `courses` ( + `id` int UNSIGNED NOT NULL, + `course_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text COLLATE utf8mb4_unicode_ci NOT NULL, + `image` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `published` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `courses` +-- + +INSERT INTO `courses` (`id`, `course_name`, `description`, `image`, `published`, `created_at`, `updated_at`) VALUES +(1, 'Java', 'Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible', 'Try', 1, '2022-05-31 01:12:34', '2022-05-31 01:12:34'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `essay_question` +-- + +CREATE TABLE `essay_question` ( + `id` bigint UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `question` text COLLATE utf8mb4_unicode_ci NOT NULL, + `answer` text COLLATE utf8mb4_unicode_ci NOT NULL, + `answer2` text COLLATE utf8mb4_unicode_ci, + `answer3` text COLLATE utf8mb4_unicode_ci, + `answer4` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `essay_question` +-- + +INSERT INTO `essay_question` (`id`, `question_id`, `user_id`, `question`, `answer`, `answer2`, `answer3`, `answer4`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 1, 1, 'Mengapa variabel panjang, lebar, tinggi, vBalok dan lBalok bertipe data int?', 'Karena nilai dari variabel tersebut berbentuk bilangan bulat', 'Variabel panjang, lebar, tinggi, vBalok dan lBalok bertipe data int karena nilai yang disimpan pada variabel tersebut adalah bilangan bulat.', 'Variabel tersebut menggunakan tipe data int karena nilai yang disimpannya adalah bilangan bulat tanpa koma.', 'Variabel tersebut menggunakan tipe data int karena nilai yang disimpannya adalah angka bulat. Oleh karena itu, tipe data int cocok untuk penyimpanan.', '2023-06-01 08:11:49', '2024-03-23 11:53:07', NULL), +(2, 1, 1, 'Jelaskan langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas!', 'Langkah-langkah perhitungan volume balok adalah mengalikan panjang, lebar, dan tinggi balok. Sedangkan langkah-langkah perhitungan luas permukaan balok adalah menghitung jumlah sisi-sisi balok (2 sisi panjang * lebar, 2 sisi panjang * tinggi, dan 2 sisi lebar * tinggi) kemudian menjumlahkannya', 'Volume balok dihitung dengan mengalikan panjang, lebar, dan tinggi menggunakan operator perkalian. Luas balok dihitung dengan menjumlahkan sisi-sisi balok yaitu 2 sisi panjang dikali lebar ditambah 2 sisi panjang dikali tinggi ditambah 2 sisi lebar dikali tinggi.', 'Menggunakan rumus volume balok, yaitu panjang * lebar * tinggi, untuk menghitung volumenya. Menggunakan rumus luas permukaan balok, yaitu 2*(panjang * lebar + panjang * tinggi + lebar * tinggi), untuk menghitung luas permukaannya.', 'Menghitung volume balok menggunakan rumus panjang * lebar * tinggi yang disimpan pada variable vBalok. Kemudian untuk menghitung luas permukaan balok menggunakan rumus 2*(panjang * lebar + panjang * tinggi + lebar * tinggi) yang disimpan pada variable lBalok.', '2023-06-01 08:11:49', '2024-03-23 11:53:07', NULL), +(3, 1, 1, 'Bagaimana cara mengubah nilai panjang, lebar, dan tinggi balok pada kode program ini?', 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, Anda dapat mengganti nilai pada bagian panjang = 10, lebar = 6, dan tinggi = 7 dengan nilai yang diinginkan.', 'Cara mengubah nilai panjang, lebar, dan tinggi dengan mengganti atau menginput nilai baru sesuai kebutuhan. Misalnya, panjang = 12, lebar = 8, dan tinggi = 5.', 'Langkah pertama adalah mencari bagian kode yang mendefinisikan nilai awal variabel panjang, lebar, dan tinggi. Kemudian ubah nilainya sesuai keinginan. Misalnya, jika ingin mengubah panjang menjadi 15, lebar menjadi 8, dan tinggi menjadi 9, ubah nilai variabel panjang, lebar, dan tinggi menjadi 15, 8, dan 9.', 'Dapat mengubah nilai panjang, lebar, dan tinggi langsung di dalam kode program. Cukup ubah nilai variabel panjang, lebar, dan tinggi sesuai dengan nilai yang diinginkan.', '2023-06-01 08:11:49', '2024-03-23 11:53:07', NULL), +(4, 2, 1, 'Apakah fungsi “if” dalam kode program diatas?', 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', 'Dalam kode program tersebut, if digunakan untuk memeriksa apakah nilai variabel \"nilai\" lebih besar dari 70, sehingga bertindak sebagai filter untuk menentukan pesan \"Selamat anda lulus!\" akan ditampilkan atau tidak.', 'Dalam hal ini, if digunakan untuk mengeksekusi pernyataan \"Selamat anda lulus!\" Hanya jika nilai variabel lebih besar dari 70.', 'If digunakan untuk membuat keputusan berdasarkan kondisi tertentu.\r\nJika kondisi yang ditentukan terpenuhi (nilai > 70), pernyataan di blok if akan dieksekusi.', '2023-06-01 08:14:09', '2024-03-23 11:55:29', NULL), +(5, 2, 1, 'Jelaskan alur program dari kode program diatas!', 'Alur program dari kode di atas adalah sebagai berikut:\r\n\r\n• Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java.\r\n• Kemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80.\r\n• Program akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70.\r\n• Jika kondisi dalam blok if (nilai > 70) bernilai true, program akan mengeksekusi pernyataan yang ada di dalam blok if, yaitu mencetak string \"Selamat anda lulus!\" menggunakan System.out.print().\r\n• Jika kondisi dalam blok if bernilai false, program akan melanjutkan ke pernyataan setelah blok if dan program akan selesai.', 'Menginisialisasi variabel nilai dengan nilai 80. Selanjutnya, program akan mengecek kondisi menggunakan pernyataan if. Jika nilai variabel nilai lebih besar dari 70, maka kondisi pernyataan di dalam if akan dieksekusi. Karena nilai variabel nilai adalah 80 (lebih besar dari 70), pernyataan \"Selamat anda lulus!\" akan dicetak menggunakan System.out.print(\"Selamat anda lulus!\");.', 'Program dimulai dengan mendeklarasikan variabel nilai dan menginisialisasinya dengan nilai 80. Program kemudian mengevaluasi kondisi \"nilai> 70\" dalam blok if untuk menentukan apakah pernyataan yang ada di dalamnya dieksekusi. Blok pernyataan di dalam if dijalankan karena nilai variabel nilai adalah 80 (lebih besar dari 70). Saat menjalankannya, pesan \"Selamat anda lulus!\" akan ditampilkan.', 'Langkah awal kode program tersebut mendeklarasikan variabel nilai dan menginisialisasinya dengan nilai 80. Program kemudian mengevaluasi apakah nilai variabel nilai lebih besar dari 70. Jika nilai variabel nilai memenuhi kondisi (lebih besar dari 70), pernyataan di dalam blok if akan dieksekusi. Karena nilai variabel nilai adalah 80 (lebih besar dari 70), pesan \"Selamat anda lulus!\" akan ditampilkan sebagai output dari program. Setelah menjalankan blok if, program akan selesai dieksekusi karena tidak ada pernyataan lanjutan setelahnya.', '2023-06-01 08:14:09', '2024-03-23 11:55:29', NULL), +(6, 2, 1, 'Apakah output yang dihasilkan dari program jika nilai dari variabel “nilai” kurang dari 70?', 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', 'Jika nilai dari variabel \"nilai\" kurang dari 70, maka blok kode dalam kondisi if tidak akan dieksekusi. Dalam hal ini, tidak akan ada output yang dihasilkan dari program.', 'Jika nilai dari variabel \"nilai\" kurang dari 70, maka program akan langsung selesai setelah blok if tidak terpenuhi. Output dari program tidak akan terdefinisi karena tidak ada perintah output yang dijalankan.', 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada perintah output yang dijalankan. Program akan selesai tanpa memberikan pesan atau tindakan tambahan apa pun.', '2023-06-01 08:14:09', '2024-03-23 11:55:29', NULL), +(7, 3, 1, 'Apa fungsi dari penggunaan if-else pada baris kode diatas?', 'If-else digunakan untuk membagi kondisi menjadi dua kemungkinan. Dalam studi kasus diatas, IF digunakan untuk melakukan pengecekan apakah nilai itemCost lebih besar dari 24. Jika kondisi tersebut terpenuhi, maka variabel order bernilai \"High Value Item!\" akan dicetak. Sedangkan jika nilai itemCost tidak lebih dari 24, maka variabel order bernilai “Low Order Value!”', 'Fungsi dari penggunaan if-else adalah untuk menentukan kategori barang berdasarkan harga. Jika harga barang lebih dari 24.00, maka kategori barang akan ditetapkan sebagai \"High Value Item!\", jika tidak, maka kategori barang akan ditetapkan sebagai \"Low Value Item!\".', 'If-else digunakan untuk memilih pesan yang akan ditampilkan berdasarkan harga barang. Jika itemCost > 24.00, maka pesan yang ditampilkan akan berupa \"High Value Item!\", jika tidak, maka pesan yang ditampilkan akan berupa \"Low Value Item!\".', 'If-else digunakan untuk mengatur tindakan yang akan diambil berdasarkan harga barang. Jika itemCost > 24.00, maka tindakan yang diambil adalah menetapkan pesanan sebagai \"High Value Item!\", jika tidak, maka tindakan yang diambil adalah menetapkan pesanan sebagai \"Low Value Item!\".', '2023-06-01 08:16:58', '2024-03-23 11:57:25', NULL), +(8, 3, 1, 'Jelaskan alur program dari baris kode diatas!', '• Mendeklarasikan kelas Order.\r\n• Mendeklarasikan method main sebagai method utama yang akan dieksekusi saat program dijalankan.\r\n• Mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99.\r\n• Mendeklarasikan variabel order dengan tipe data String dan memberikannya nilai awal berupa string kosong (\"\").\r\n• Melakukan pengecekan kondisi menggunakan pernyataan if. Kondisi yang dievaluasi adalah itemCost > 24.00.\r\n• Jika kondisi tersebut benar (nilai itemCost lebih besar dari 24.00), maka blok kode di dalam if akan dieksekusi.\r\n• Dalam blok if, nilai variabel order diubah menjadi \"High Value Item!\".\r\n• Jika kondisi dalam if tidak terpenuhi (nilai itemCost tidak lebih besar dari 24.00), maka blok kode di dalam else akan dieksekusi.\r\n• Dalam blok else, nilai variabel order diubah menjadi \"Low Value Item!\".\r\n• Setelah blok if-else selesai dieksekusi, pesan yang ada dalam variabel order akan dicetak menggunakan System.out.print.\r\n• Output yang ditampilkan akan bergantung pada nilai itemCost. Jika itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan dicetak. Jika tidak, maka pesan \"Low Value Item!\" akan dicetak.', 'Program di atas merupakan program sederhana untuk menentukan status suatu pesanan berdasarkan harga barang. Berikut adalah alur programnya: Mendeklarasikan kelas Order yang merupakan kelas utama program. Di dalam method main, mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99, serta variabel order dengan tipe data String dan tanpa nilai awal. Menggunakan struktur kontrol if-else untuk mengevaluasi harga barang. Pada kondisi if, jika itemCost lebih besar dari 24.00, variabel order akan diisi dengan string \"High Value Item!\", sedangkan jika tidak memenuhi kondisi if (itemCost <= 24.00), variabel order akan diisi dengan string \"Low Value Item!\". Mencetak nilai variabel order menggunakan System.out.print.', 'Alur program dari baris kode di atas adalah sebagai berikut: Mendeklarasikan kelas Order yang berisi method main sebagai method utama yang akan dieksekusi pertama kali saat program dijalankan. Di dalam method main, terdapat deklarasi variabel itemCost yang bertipe data double dan diberi nilai 30.99, merepresentasikan biaya barang. Deklarasi variabel order dengan tipe data String yang belum diinisialisasi (nilai awalnya kosong). Program menggunakan struktur kontrol if-else untuk mengevaluasi nilai itemCost. Jika nilai itemCost lebih besar dari 24.00, maka kondisi if terpenuhi, dan variabel order akan diisi dengan string \"High Value Item!\". Jika tidak, maka kondisi else akan dieksekusi, dan variabel order akan diisi dengan string \"Low Value Item!\". Setelah nilai variabel order ditentukan berdasarkan harga barang, program mencetak nilai variabel order ke konsol menggunakan System.out.print. Dengan demikian, program tersebut bertujuan untuk memberikan status pesanan (\"High Value Item!\" atau \"Low Value Item!\") berdasarkan nilai itemCost. Jika itemCost lebih dari 24.00, pesanan dianggap bernilai tinggi, dan sebaliknya.', 'Variabel biaya barang (itemCost) diinisialisasi dengan nilai 30.99. Jika itemCost > 24.00, maka pesan yang ditampilkan akan berupa \"High Value Item!\", jika tidak, maka pesan yang ditampilkan akan berupa \"Low Value Item!\". Pesan dicetak menggunakan System.out.print.', '2023-06-01 08:16:58', '2024-03-23 11:57:25', NULL), +(9, 3, 1, 'Apa yang akan ditampilkan sebagai output program ini, jika nilai variabel “itemCost” adalah 20?', 'Program akan menampilkan output “Low Value Item”', 'Jika nilai variabel \"itemCost\" adalah 20, maka kondisi dalam if-statement akan bernilai false. Karena nilai \"itemCost\" tidak lebih besar dari 24.00, program akan menjalankan blok else. Sehingga output dari program adalah \"Low Value Item!\".', 'Ketika nilai variabel \"itemCost\" adalah 20, maka kondisi if-statement akan dinilai false. Program akan menjalankan blok else, yang menetapkan nilai \"order\" menjadi \"Low Value Item!\". Output dari program adalah \"Low Value Item!\".', 'Jika nilai variabel \"itemCost\" adalah 20, maka kondisi akan bernilai false. Karena nilai \"itemCost\" tidak memenuhi syarat untuk kondisi if, program akan menjalankan blok else dan menetapkan nilai \"order\" sebagai \"Low Value Item!\".', '2023-06-01 08:16:58', '2024-03-23 11:57:25', NULL), +(10, 4, 1, 'Apakah fungsi dari baris program default?', 'Dengan menggunakan default, program akan menangani situasi di mana nilai shipping tidak cocok dengan case-case yang didefinisikan sebelumnya. Default berfungsi sebagai pilihan terakhir yang akan dieksekusi jika tidak ada case yang cocok dengan nilai yang dievaluasi.', 'Baris program default digunakan untuk menangani situasi ketika nilai dari variabel \"shipping\" tidak cocok dengan salah satu kasus yang telah ditentukan dalam switch statement. Dalam hal ini, jika nilai \"shipping\" tidak sama dengan \"Regular\" atau \"Express\", maka program akan menjalankan blok kode dalam default untuk menetapkan nilai \"shippingCost\".', 'Baris program default berfungsi sebagai opsi alternatif atau fallback jika tidak ada case yang cocok dengan nilai dari variabel \"shipping\". Ini memastikan bahwa jika tidak ada opsi yang cocok, program tidak akan mengalami kesalahan dan akan tetap melanjutkan eksekusi dengan menggunakan nilai default.', 'Default digunakan untuk mengatasi kesalahan input atau kondisi yang tidak terduga dalam program. Jika nilai \"shipping\" tidak sesuai dengan kasus yang telah ditentukan sebelumnya, default akan menetapkan nilai \"shippingCost\" ke nilai yang telah ditentukan (0.50 dalam kasus ini) untuk menangani situasi tersebut.', '2023-06-01 08:18:42', '2024-03-23 11:59:15', NULL), +(11, 4, 1, 'Jelaskan alur program dari baris kode switch – case diatas!', 'Alur program dari baris kode switch-case di atas adalah sebagai berikut:\r\n\r\nProgram dimulai dengan mendeklarasikan variabel shipping dengan nilai \"Express\" dan variabel shippingCost tanpa nilai awal. Kemudian, program melanjutkan ke switch statement dengan mengevaluasi nilai dari variabel shipping. \r\n\r\nProgram akan membandingkan nilai shipping dengan setiap case yang ada. Jika nilai shipping cocok dengan salah satu case, program akan melompat ke blok kode yang sesuai dengan case tersebut.\r\nJika nilai shipping adalah \"Regular\", maka variabel shippingCost akan diatur menjadi 0.\r\nJika nilai shipping adalah \"Express\", maka variabel shippingCost akan diatur menjadi 1.75.\r\nJika nilai shipping tidak cocok dengan case-case di atas, program akan melompat ke blok kode dalam default.\r\nPada blok kode default, variabel shippingCost akan diatur menjadi 0.50.\r\n\r\nSetelah switch statement selesai dieksekusi, program akan mencetak nilai shippingCost dengan menggunakan pernyataan System.out.print(\"Shipping cost: \" + shippingCost);.\r\nDengan demikian, alur program akan menentukan nilai shippingCost berdasarkan nilai shipping yang dievaluasi menggunakan switch-case.', 'Alur program dari baris kode switch-case di atas adalah sebagai berikut:\r\n Variabel \"shipping\" dideklarasikan dan diinisialisasi dengan nilai \"Express\". Dilakukan pernyataan switch pada variabel \"shipping\". Program mengevaluasi nilai variabel \"shipping\" dan mencocokkannya dengan setiap case dalam switch-case. Jika nilai \"shipping\" cocok dengan salah satu case, maka blok kode di dalam case tersebut akan dieksekusi. Jika nilai \"shipping\" adalah \"Regular\", maka nilai variabel \"shippingCost\" akan diatur menjadi 0. Jika nilai \"shipping\" adalah \"Express\", maka nilai variabel \"shippingCost\" akan diatur menjadi 1.75.\r\nJika tidak ada case yang cocok dengan nilai \"shipping\", maka blok kode di dalam default case akan dieksekusi. Di sini, nilai variabel \"shippingCost\" akan diatur menjadi 0.50. Setelah nilai variabel \"shippingCost\" ditetapkan berdasarkan case yang cocok, program akan mencetak nilai \"shippingCost\" sebagai biaya pengiriman.', 'Pertama, variabel \"shipping\" dideklarasikan dan diinisialisasi dengan nilai \"Express\". Kemudian, dilakukan pengecekan kondisi variabel \"shipping\" dalam struktur switch-case. Program akan mengevaluasi nilai \"shipping\" dan mencocokkannya dengan setiap case yang ada dalam switch-case. Jika nilai \"shipping\" cocok dengan salah satu case, maka blok kode di dalam case tersebut akan dieksekusi. Jika nilai \"shipping\" sama dengan \"Regular\", maka nilai variabel \"shippingCost\" akan diatur menjadi 0. Jika nilai \"shipping\" sama dengan \"Express\", maka nilai variabel \"shippingCost\" akan diatur menjadi 1.75. Jika tidak ada case yang cocok dengan nilai \"shipping\", maka blok kode di dalam default case akan dieksekusi. Di sini, nilai variabel \"shippingCost\" akan diatur menjadi 0.50. Setelah nilai variabel \"shippingCost\" ditetapkan berdasarkan case yang cocok atau default, program akan mencetak nilai \"shippingCost\" sebagai biaya pengiriman.', 'Variabel \"shipping\" diinisialisasi dengan nilai \"Express\". Nilai \"shipping\" dibandingkan dengan setiap case dalam switch-case. Jika \"shipping\" cocok dengan case \"Regular\", \"shippingCost\" diatur menjadi 0. Jika \"shipping\" cocok dengan case \"Express\", \"shippingCost\" diatur menjadi 1.75. Jika tidak ada case yang cocok, maka nilai default \"shippingCost\" adalah 0.50. Program mencetak nilai \"shippingCost\" sebagai biaya pengiriman.', '2023-06-01 08:18:42', '2024-03-23 11:59:15', NULL), +(12, 4, 1, 'Kapan shippingCost bernilai 0.05?', 'Pada saat nilai shipping tidak bernilai regular maupun express, sehingga mengeluarkan nilai default, yaitu 0.05', 'Jika pernyataan default digunakan pada switch statement karena nilai variabel \"shipping\" tidak cocok dengan kasus yang ada, maka shippingCost akan diatur ke 0.05.', 'Jika nilai variabel \"shipping\" tidak cocok dengan kasus \"Regular\" dan \"Express\", maka default case akan dieksekusi dan shippingCost akan diatur ke 0.05.', 'shippingCost akan bernilai 0.05 jika tidak ada case yang cocok dengan nilai variabel \"shipping\" dan default case dieksekusi.', '2023-06-01 08:18:42', '2024-03-23 11:59:15', NULL), +(13, 5, 1, 'Mengapa variabel isMember bertipe data Boolean?', 'Karena variabel isMember di rancang untuk menampung nilai salah atau benar', 'Variabel ini digunakan untuk mewakili status keanggotaan pelanggan, yang hanya memiliki dua nilai, yaitu true (anggota) atau false (non-anggota). Tipe data Boolean tepat untuk menyimpan nilai-nilai yang hanya memiliki dua kemungkinan.', 'variabel isMember digunakan dalam struktur kondisional (if-else) untuk menentukan jenis diskon yang akan diberikan berdasarkan status keanggotaan. Tipe data Boolean cocok digunakan dalam kondisi seperti ini karena hanya memiliki dua nilai yang relevan: true atau false.', 'Dalam konteks program ini, isMember digunakan untuk menentukan jenis diskon yang berlaku. Dengan menggunakan tipe data Boolean, kode program menjadi lebih mudah dipahami dan sesuai dengan kebutuhan, karena hanya perlu memeriksa apakah seseorang adalah anggota atau bukan.', '2023-06-01 08:21:08', '2024-03-23 12:01:06', NULL), +(14, 5, 1, 'Jelaskan alur program diatas, jika diketahui nilai isMember adalah false!', '• Jika nilai isMember adalah false, maka program akan masuk kedalam pemilihan else.\r\n• Program akan melakukan pengecekan total. Diketahui total adalah 200000, sehingga masuk kedalam blok pemilihan ketiga dengan diskon 15 %\r\n• Sehingga, output dari program tersebut adalah “diskon yang didapatkan adalah 15%”', 'Ketika isMember memiliki nilai false dalam program ini, artinya pelanggan bukanlah anggota dari toko buku. Dalam kondisi ini, program akan menetapkan diskon berdasarkan total belanja. Program akan menguji nilai total untuk menentukan besarnya diskon yang akan diberikan. Jika total belanja kurang dari 100000, diskon akan diatur menjadi 5%. Jika total belanja berada di antara 100000 dan 150000, diskon akan menjadi 10%. Namun, jika total belanja melebihi 150000, maka diskon akan menjadi 15%. Dalam kasus nilai total belanja sebesar 200000, karena melebihi 150000, maka diskon yang diberikan adalah sebesar 15%. Setelah itu, program akan mencetak pesan yang menyatakan jumlah diskon yang didapatkan oleh pelanggan.', 'Ketika isMember bernilai false, program akan menentukan diskon berdasarkan total belanja. Jika total belanja melebihi 150000, diskon adalah 15%. Dalam kasus nilai total belanja 200000, diskon akan menjadi 15%, yang kemudian dicetak oleh program.', 'Program dimulai dengan mendeklarasikan beberapa variabel, yaitu isMember yang diset sebagai false, total yang memiliki nilai 200000, dan diskon yang diinisialisasi dengan nilai 0. Kemudian, program masuk ke dalam blok if-else statement. Karena nilai isMember adalah false, program akan mengeksekusi blok else. Di dalam blok else, terdapat serangkaian kondisi if-else if-else untuk menentukan besarnya diskon berdasarkan nilai total pembelanjaan. Pertama, program mengecek apakah nilai total kurang dari 100000. Karena nilai total adalah 200000, maka kondisi ini tidak terpenuhi. Kemudian, program mengecek apakah nilai total berada di antara 100000 dan 150000. Karena total adalah 200000, maka kondisi ini juga tidak terpenuhi. Terakhir, karena kedua kondisi sebelumnya tidak terpenuhi, program mengeksekusi blok else terakhir. Di sini, diskon diatur menjadi 15 karena nilai total melebihi 150000. Setelah itu, program mencetak hasil diskon yang didapatkan, yang dalam kasus ini adalah \"diskon yang didapatkan adalah 15%\".', '2023-06-01 08:21:08', '2024-03-23 12:01:06', NULL), +(15, 5, 1, 'Apakah output program jika nilai variabel “total” bernilai Rp.30.000?', 'program akan mengeluarkan output “diskon yang didapatkan adalah 10%”', 'Karena nilai variabel \"total\" adalah Rp.30.000 dan nilai \"isMember\" adalah true, maka program akan mengeksekusi blok if pertama. Dalam blok if pertama, nilai \"total\" kurang dari Rp.100.000 sehingga diskon akan diatur menjadi 10%. Namun, karena nilai \"total\" tidak memenuhi syarat, maka program akan beralih ke blok else. Dalam blok else, karena nilai \"total\" kurang dari Rp.100.000, diskon akan diatur menjadi 5%. Sehingga output program akan menampilkan \"diskon yang didapatkan adalah 5%\".', 'Output: \"diskon yang didapatkan adalah 5%\". Karena nilai variabel \"total\" adalah Rp.30.000 dan \"isMember\" bernilai true, program akan memeriksa kondisi if pertama. Kondisi if pertama akan bernilai false karena nilai \"total\" tidak kurang dari Rp.100.000. Program akan beralih ke blok else dan mengecek kondisi di dalamnya. Kondisi dalam blok else akan bernilai true karena nilai \"total\" kurang dari Rp.100.000. Maka, diskon akan diatur menjadi 5%. Output program akan menampilkan \"diskon yang didapatkan adalah 5%\".', 'Jika isMember == true maka outputnya \"diskon yang didapatkan adalah 10%\". Jika false maka outputnya \"diskon yang didapatkan adalah 5%\".', '2023-06-01 08:21:08', '2024-03-23 12:01:06', NULL), +(16, 6, 1, 'Apakah kegunaan i++ pada perulangan for diatas?', 'fungsi i++ memiliki fungsi sebagai operator penambahan', 'Kegunaan i++ dalam perulangan for adalah untuk meningkatkan nilai variabel i setiap kali iterasi loop dilakukan.\r\nDalam konteks ini, setiap kali iterasi dilakukan, nilai i akan bertambah satu.', 'i++ digunakan untuk menggerakkan iterasi perulangan for ke nilai selanjutnya. Saat iterasi dilakukan, nilai i akan ditingkatkan, sehingga perulangan akan melanjutkan eksekusi ke langkah berikutnya.', 'i++ sangat penting untuk menghindari perulangan tanpa batas. Dengan menambah nilai i setiap iterasi, kita memastikan bahwa perulangan akan berhenti ketika kondisi berhenti terpenuhi.', '2023-06-01 08:22:55', '2024-03-23 12:02:56', NULL), +(17, 6, 1, 'Jelaskan alur program perulangan diatas!', 'Program dimulai dengan mendeklarasikan variabel number dengan nilai 6. Kemudian, program melanjutkan ke for loop yang dimulai dengan inisialisasi variabel i dengan nilai 1. Setelah inisialisasi, program akan memeriksa kondisi “i < number”. Jika kondisi ini benar, program akan melanjutkan ke blok kode dalam for loop. \r\n\r\nDalam setiap iterasi, program akan mencetak nilai i menggunakan pernyataan System.out.print(i).\r\nSetelah mencetak nilai i, program akan melanjutkan ke pernyataan i++.\r\nPernyataan i++ akan menambahkan nilai i sebesar 1 setelah setiap iterasi, sehingga nilai i akan bertambah secara bertahap.\r\n\r\nProgram akan kembali memeriksa kondisi “i < number” dan akan terus berulang sampai kondisi “i < number” tidak lagi terpenuhi. Ketika kondisi tidak terpenuhi, program keluar dari for loop dan selesai.', 'Program dimulai dengan mendeklarasikan kelas \"LuckyFive\" dengan method main. Dalam method main, variabel \"number\" diinisialisasi dengan nilai 6. Perulangan for digunakan untuk mengiterasi nilai variabel \"i\" dari 1 hingga kurang dari nilai variabel \"number\" (6). Pada setiap iterasi, nilai \"i\" akan dicetak ke layar tanpa diikuti spasi atau karakter lainnya. Perulangan akan berhenti saat nilai \"i\" sama dengan nilai variabel \"number\" (6). Setelah perulangan selesai, program akan selesai dijalankan.', 'Program ini memulai dengan menginisialisasi kelas \"LuckyFive\" dan method main. Variabel \"number\" diatur ke nilai 6. Perulangan for digunakan untuk mengulangi blok kode di dalamnya. Variabel \"i\" dimulai dari nilai 1 dan terus bertambah satu setiap iterasi hingga kurang dari 6. Setiap iterasi, nilai \"i\" dicetak tanpa spasi ke layar. Perulangan berakhir ketika nilai \"i\" mencapai nilai yang kurang dari 6. Setelah perulangan selesai, program berakhir.', 'Kode ini memulai dengan menginisialisasi kelas \"LuckyFive\" dan method main. Variabel \"number\" diinisialisasi dengan nilai 6. Perulangan for digunakan untuk melakukan serangkaian iterasi. Selama iterasi, variabel \"i\" mulai dari 1 dan terus bertambah satu setiap iterasi hingga mencapai nilai kurang dari 6. Pada setiap iterasi, nilai \"i\" dicetak ke layar tanpa ada spasi atau karakter tambahan. Proses perulangan akan berakhir saat nilai \"i\" mencapai angka kurang dari 6. Setelah iterasi terakhir, program akan selesai dieksekusi.', '2023-06-01 08:22:55', '2024-03-23 12:02:56', NULL), +(18, 6, 1, 'Apa output dari program jika nilai dari variabel number adalah 8?', 'Output program jika nilai variabel number 8 adalah 1234567', 'Ketika nilai variabel \"number\" adalah 8, maka iterasi akan berlangsung dari 1 hingga 7 (kurang dari 8). Setiap iterasi, nilai dari variabel i akan dicetak menggunakan System.out.print(). Sehingga output program adalah deret angka dari 1 hingga 7: \"1234567\".', 'Jika nilai variabel \"number\" adalah 8, maka loop akan berjalan dari 1 hingga 7 (kurang dari 8). Setiap nilai \"i\" akan dicetak menggunakan System.out.print() dalam setiap iterasi. Output program akan mencetak deret angka dari 1 hingga 7: \"1234567\".', 'Outputnya \"1234567\"', '2023-06-01 08:22:55', '2024-03-23 12:02:56', NULL), +(19, 7, 1, 'Apa kegunaan dari i++ pada kode program diatas?', 'Pada kode program tersebut, i++ digunakan sebagai operator penambahan (increment) pada variabel i.\r\n\r\nKegunaan dari i++ adalah untuk menambahkan nilai 1 pada variabel i setiap kali perulangan dilakukan. Dalam konteks kode program yang diberikan, setiap iterasi perulangan akan mencetak nilai i dan kemudian nilai i akan ditambah 1 menggunakan i++.\r\n\r\nSehingga, i++ berguna untuk mengatur aliran perulangan dan menghindari terjadinya perulangan tak terbatas (infinite loop) dengan memastikan bahwa kondisi perulangan pada while-loop (i < number) akan berhenti pada suatu titik saat nilai i mencapai nilai number yang ditentukan.', 'i++ digunakan untuk meningkatkan nilai variabel i setiap kali iterasi loop dilakukan. Ini memastikan bahwa nilai i akan terus bertambah seiring berjalannya perulangan, sehingga loop akan berhenti saat kondisi i < number tidak lagi terpenuhi.', 'Dengan menambahkan i++ setelah instruksi System.out.print(i), program memastikan bahwa setiap iterasi loop akan mencetak nilai i yang sesuai dan memperbarui nilai i untuk iterasi berikutnya. Ini membantu mengendalikan jalannya perulangan.', 'Menghindari Perulangan Tanpa Akhir: Tanpa i++, nilai i akan tetap sama dan kondisi i < number akan selalu terpenuhi. Dengan demikian, program akan terjebak dalam perulangan tanpa akhir. Dengan i++, nilai i bertambah setiap iterasi sehingga akhirnya kondisi perulangan tidak akan terpenuhi dan perulangan berhenti.', '2023-06-01 18:14:49', '2024-03-23 12:04:44', NULL), +(20, 7, 1, 'Jelaskan alur program dalam blok kode while!', 'Variabel number diinisialisasi dengan nilai 6, dan variabel i diinisialisasi dengan nilai 1. Kondisi i < number dievaluasi. Jika kondisi tersebut terpenuhi (nilai i kurang dari number), maka blok kode di dalam while loop akan dieksekusi. Jika kondisi tidak terpenuhi, maka program akan keluar dari loop. Di dalam loop, perintah System.out.print(i) akan mencetak nilai i ke layar. \r\n\r\nPada iterasi pertama, nilai i adalah 1, sehingga angka 1 akan dicetak. Selanjutnya, perintah i++ akan menambahkan nilai i sebesar 1. Proses di atas akan diulang terus menerus selama kondisi i < number masih terpenuhi. Pada setiap iterasi, nilai i akan bertambah 1 dan angka tersebut akan dicetak ke layar. \r\n\r\nLoop akan berhenti saat nilai i sama dengan atau melebihi nilai number, yaitu saat i bernilai 6. Setelah loop selesai, program akan keluar dari blok while dan program akan berakhir.', 'Inisialisasi Variabel: Variabel \"number\" diinisialisasi dengan nilai 6 dan variabel \"i\" diinisialisasi dengan nilai 1. Pengecekan Kondisi: Program memeriksa apakah nilai \"i\" kurang dari nilai \"number\". Jika kondisi ini terpenuhi, langkah berikutnya akan dieksekusi. Cetak Nilai Variabel i: Jika kondisi terpenuhi, program akan mencetak nilai variabel \"i\" menggunakan System.out.print(). Peningkatan Nilai i: Setelah nilai variabel \"i\" dicetak, nilai \"i\" akan ditingkatkan dengan menggunakan operator increment (i++). Kembali ke Pengecekan Kondisi: Setelah nilai \"i\" ditingkatkan, program kembali ke tahap pengecekan kondisi. Jika nilai \"i\" masih kurang dari nilai \"number\", program akan kembali mencetak nilai \"i\" dan meningkatkan nilai \"i\" lagi. Proses ini terus berulang sampai nilai \"i\" tidak lagi kurang dari \"number\". Selesai: Ketika nilai \"i\" tidak lagi kurang dari \"number\", loop while akan berhenti dan program selesai dieksekusi.', 'Persiapan Variabel: Awalnya, program menyiapkan dua variabel, yaitu \"number\" yang diisi dengan nilai 6 dan \"i\" yang diinisialisasi dengan nilai 1. Pengecekan Batasan: Program memeriksa apakah nilai \"i\" masih lebih kecil dari nilai \"number\". Jika ya, proses akan dilanjutkan; jika tidak, program akan keluar dari loop. Cetak Nilai: Jika kondisi masih terpenuhi, nilai dari variabel \"i\" akan dicetak menggunakan perintah cetak (print). Peningkatan Variabel: Setelah nilai \"i\" dicetak, nilai \"i\" akan ditingkatkan sebesar 1. Pengecekan Kembali: Program kembali ke tahap pengecekan batasan untuk memastikan apakah nilai \"i\" masih memenuhi syarat untuk berlanjut dalam loop. Penyelesaian: Proses ini akan terus berulang sampai nilai \"i\" tidak lagi lebih kecil dari \"number\". Setelah itu, program akan keluar dari loop dan selesai dieksekusi.', 'Program menggunakan loop while untuk mencetak nilai variabel \"i\" selama nilai \"i\" kurang dari nilai \"number\". Setiap iterasi, nilai \"i\" akan dicetak dan kemudian ditingkatkan sebesar 1. Proses ini akan terus berlanjut hingga nilai \"i\" tidak lagi kurang dari \"number\", pada saat itu program akan keluar dari loop.', '2023-06-01 18:14:49', '2024-03-23 12:04:44', NULL), +(21, 7, 1, 'Jika kondisi dalam while diganti menjadi “while(i > number)”, apakah output yang dikeluarkan oleh program ?', 'Output dari kode program di atas adalah tidak ada. Hal ini dikarenakan kondisi pada while loop, yaitu i > number, tidak terpenuhi pada awalnya. Karena nilai awal i adalah 1 dan number adalah 6, maka kondisi 1 > 6 akan bernilai false. Oleh karena itu, blok kode dalam while loop tidak akan dieksekusi, sehingga tidak ada output yang dicetak ke layar', 'Karena nilai awal variabel \"i\" adalah 1 dan nilai variabel \"number\" adalah 6, maka kondisi \"while(i > number)\" tidak akan terpenuhi.\r\nKarena itu, blok while tidak akan dieksekusi, sehingga tidak akan ada output yang dihasilkan.', 'Karena nilai awal variabel \"i\" adalah 1 dan nilai variabel \"number\" adalah 6, kondisi \"while(i > number)\" tidak terpenuhi.\r\nProgram tidak akan masuk ke dalam blok while karena kondisinya salah. Sehingga, tidak ada output yang dihasilkan.', 'Tidak Ada Output Karena kondisi while tidak terpenuhi, program tidak akan masuk ke dalam loop.', '2023-06-01 18:14:49', '2024-03-23 12:04:44', NULL), +(22, 8, 1, 'Apakah fungsi dari baris kode “int next = first + second” ?', 'Pada program Fibonacci, fungsi dari kode “int next = first + second;” adalah untuk menghitung nilai angka selanjutnya dalam deret Fibonacci.\r\n\r\nPada setiap iterasi perulangan, nilai next dihitung dengan menjumlahkan nilai first dan second. Kemudian, nilai next akan menjadi angka baru dalam deret Fibonacci.\r\n\r\nMisalnya, pada awalnya first memiliki nilai 0 dan second memiliki nilai 1. Pada iterasi pertama, next akan dihitung sebagai 0 + 1 = 1. Setelah itu, nilai first akan diperbarui menjadi 1 dan nilai second akan diperbarui menjadi 1.\r\n\r\nPada iterasi berikutnya, next akan dihitung sebagai 1 + 1 = 2. Proses ini akan terus berlanjut sampai mencapai jumlah angka Fibonacci yang diinginkan.\r\n\r\nDengan mengupdate nilai first dan second setiap kali perulangan dilakukan, kita dapat menghasilkan deret Fibonacci dengan benar.', 'Baris kode tersebut menghitung bilangan Fibonacci berikutnya dengan menjumlahkan dua bilangan Fibonacci sebelumnya yang disimpan dalam variabel \"first\" dan \"second\". Hasilnya disimpan dalam variabel \"next\" untuk digunakan dalam iterasi berikutnya.', 'Baris kode tersebut bertujuan untuk menghasilkan bilangan Fibonacci berikutnya dalam deret Fibonacci. Dengan menambahkan dua bilangan Fibonacci sebelumnya, kita dapat menentukan bilangan Fibonacci berikutnya dalam deret tersebut.', 'Baris kode tersebut digunakan untuk menghitung dan menyimpan nilai bilangan Fibonacci berikutnya dalam variabel \"next\". Nilai \"next\" kemudian akan digunakan dalam iterasi selanjutnya dalam mencetak deret Fibonacci.', '2023-06-01 18:16:41', '2024-03-23 12:06:51', NULL), +(23, 8, 1, 'Jelaskan alur program dalam blok kode do-while diatas!', 'Variabel next diinisialisasi dengan hasil penjumlahan first dan second.\r\nNilai next dicetak menggunakan perintah System.out.print(next + \" \"), sehingga akan mencetak nilai next diikuti dengan spasi. Nilai first diperbarui dengan nilai second. Nilai second diperbarui dengan nilai next. \r\n\r\nVariabel i (yang merupakan counter) ditambahkan dengan 1 menggunakan perintah i++. Kondisi i <= n dievaluasi. Jika kondisi tersebut terpenuhi, maka program akan kembali ke langkah 1 dan melanjutkan iterasi berikutnya. Jika kondisi tidak terpenuhi, maka program akan keluar dari loop.\r\n\r\nLangkah-langkah 1-6 akan terus diulang sampai kondisi i <= n tidak terpenuhi.', 'Variabel \"n\" menyimpan nilai yang menunjukkan panjang dari deret Fibonacci yang ingin dihasilkan. Variabel \"first\" dan \"second\" digunakan untuk menyimpan dua angka pertama dari deret Fibonacci, yaitu 0 dan 1. Variabel \"i\" digunakan sebagai counter untuk menghitung iterasi. Pesan \"Deret Fibonacci: \" dicetak sebagai judul.\r\nDua angka pertama dari deret Fibonacci, yaitu \"first\" dan \"second\", dicetak. Di dalam blok do, dilakukan iterasi untuk menghasilkan angka-angka selanjutnya dalam deret Fibonacci. Selama nilai \"i\" masih kurang dari atau sama dengan nilai \"n\", langkah-langkah berikut dijalankan: Variabel \"next\" menampung hasil penjumlahan dari \"first\" dan \"second\", yang merupakan angka selanjutnya dalam deret Fibonacci. Angka \"next\" dicetak. Nilai variabel \"first\" diperbarui menjadi nilai variabel \"second\". Nilai variabel \"second\" diperbarui menjadi nilai variabel \"next\". Counter \"i\" ditingkatkan. Iterasi dilakukan hingga nilai \"i\" mencapai nilai \"n\". Proses ini akan menghasilkan deret Fibonacci sepanjang n sesuai dengan nilai yang dimasukkan ke dalam variabel \"n\".', 'Inisialisasi Variabel: Variabel \"n\" menentukan jumlah angka dalam deret Fibonacci yang akan dihasilkan. Variabel \"first\" dan \"second\" memuat dua angka pertama dalam deret Fibonacci, yaitu 0 dan 1. Variabel \"i\" digunakan sebagai penghitung iterasi untuk mengontrol berapa kali deret Fibonacci dihasilkan. Cetak Judul: \"Deret Fibonacci: \" dicetak sebagai judul untuk hasil output. Cetak Angka Awal: Dua angka pertama dari deret Fibonacci, yaitu \"first\" dan \"second\", dicetak.\r\nIterasi untuk Menghasilkan Deret Fibonacci: Program menggunakan do-while loop untuk melakukan iterasi untuk menghasilkan angka-angka berikutnya dalam deret Fibonacci. Setiap iterasi, variabel \"next\" dihitung sebagai penjumlahan dari dua angka terakhir dalam deret Fibonacci. Angka \"next\" dicetak sebagai bagian dari deret Fibonacci.\r\nVariabel \"first\" dan \"second\" diperbarui untuk menyesuaikan angka-angka terakhir dalam deret Fibonacci. Counter \"i\" ditingkatkan untuk melanjutkan iterasi. Pengecekan Batas: Iterasi dilakukan hingga jumlah iterasi mencapai atau melebihi nilai \"n\", sesuai dengan jumlah angka yang diinginkan dalam deret Fibonacci. Proses ini akan terus berlanjut hingga mencapai jumlah iterasi yang diinginkan, menghasilkan deret Fibonacci sesuai dengan panjang yang ditentukan oleh nilai variabel \"n\".', 'Program menghasilkan deret Fibonacci dengan jumlah elemen yang ditentukan oleh variabel \"n\". Tahapan program: Inisialisasi variabel: \"n\" untuk menentukan jumlah elemen, \"first\" dan \"second\" untuk dua elemen pertama, \"i\" sebagai penghitung iterasi. Cetak judul \"Deret Fibonacci: \". Cetak dua elemen pertama. Lakukan iterasi menggunakan do-while loop: Hitung dan cetak elemen berikutnya. Perbarui variabel \"first\" dan \"second\". Perbarui penghitung iterasi. Iterasi dilakukan hingga mencapai atau melebihi jumlah elemen yang diinginkan.', '2023-06-01 18:16:41', '2024-03-23 12:06:51', NULL), +(24, 8, 1, 'Jika nilai variabel n di ganti menjadi 7, output apakah yang akan dikeluarkan program?', '0 1 1 2 3 5 8 13 21', 'Program akan mencetak deret Fibonacci hingga ke-7 (n=7). Deret Fibonacci dimulai dari 0 dan 1, kemudian setiap angka berikutnya adalah penjumlahan dari dua angka sebelumnya. Sehingga output program akan mencetak deret Fibonacci: \"0 1 1 2 3 5 8 13 21\".', 'Program akan menghasilkan deret Fibonacci hingga bilangan ke-7, dimulai dari 0 dan 1. Setiap bilangan dalam deret Fibonacci dihasilkan dengan menambahkan dua bilangan sebelumnya. Sehingga, setelah 0 dan 1, angka berikutnya adalah penjumlahan dari 0 + 1 = 1, 1 + 1 = 2, 1 + 2 = 3, 2 + 3 = 5, 3 + 5 = 8, 5 + 8 = 13, dan seterusnya. Oleh karena itu, output program akan mencetak deret Fibonacci: \"0 1 1 2 3 5 8 13 21\".', 'Program akan menghasilkan deret Fibonacci hingga bilangan ke-7, dimulai dari 0 dan 1. Setiap angka dalam deret Fibonacci dihasilkan dengan menambahkan dua angka sebelumnya. Dengan kata lain, setiap angka dalam deret Fibonacci adalah hasil dari penjumlahan dua angka sebelumnya. Sehingga, output program akan mencetak deret Fibonacci: \"0 1 1 2 3 5 8 13 21\".', '2023-06-01 18:16:41', '2024-03-23 12:06:51', NULL), +(25, 9, 1, 'Apakah fungsi kondisi (i <=5) pada perulangan pertama (outer loop)?', 'Kode program tersebut berfungsi untuk menentukan jumlah baris piramida bintang. Jika 5 diganti menjadi 7, maka baris piramida menjadi 7 baris', 'Kondisi tersebut mengontrol jumlah baris yang akan dicetak. Dengan i bervariasi dari 1 hingga 5, perulangan luar akan mencetak 5 baris.', 'Dengan i bervariasi dari 1 hingga 5, setiap baris akan memiliki jumlah bintang yang sesuai dengan nilai i.', 'Kondisi tersebut digunakan untuk membentuk pola bertingkat dalam pola bintang. Saat i meningkat, jumlah bintang yang dicetak dalam satu baris juga bertambah sesuai dengan nilai i.', '2023-06-01 18:19:46', '2024-03-23 12:08:41', NULL), +(26, 9, 1, 'Jelaskan alur program dari perulangan kedua (inner loop) yang menggunakan variabel j!', 'Perulangan akan dimulai dari nilai 1 dan berakhir pada saat nilai “j” sama dengan atau kurang dari nilai “i”. Saat kondisi terpenuhi, satu bintang akan ditambahkan ke variabel “output”, jumlah bintang akan terus bertambah seiring dengan nilai “i” yang meningkat.', 'Program memulai perulangan pertama (outer loop) dengan nilai i mulai dari 1 hingga 5, sesuai dengan jumlah baris yang ingin dibuat dalam piramida. Pada setiap iterasi perulangan pertama, program memulai perulangan kedua (inner loop) dengan nilai j mulai dari 1 hingga i. Pada setiap iterasi perulangan kedua, program mencetak sebuah bintang (*) ke dalam variabel output. Jumlah bintang (*) yang dicetak pada setiap iterasi perulangan kedua (inner loop) akan bertambah sesuai dengan nilai i pada iterasi perulangan pertama (outer loop). Setelah mencetak bintang (*) sejumlah i kali pada setiap baris, program akan menambahkan karakter baris baru (\\n) ke dalam variabel output. Proses ini akan terus berlanjut hingga perulangan pertama (outer loop) selesai, dan output akan dicetak ke layar. Dengan demikian, pada setiap baris, jumlah bintang () yang dicetak akan meningkat sesuai dengan nomor barisnya, membentuk piramida dari bintang ().', 'Pada setiap iterasi perulangan pertama (outer loop), nilai variabel i menentukan nomor baris yang sedang diproses dalam piramida. Saat perulangan kedua (inner loop) dimulai, nilai variabel j dimulai dari 1 hingga mencapai nilai yang sama dengan variabel i, menandakan jumlah bintang (*) yang akan dicetak pada baris saat ini. Di setiap iterasi perulangan kedua, sebuah bintang (*) ditambahkan ke dalam variabel output. Jumlah bintang (*) yang dicetak pada setiap baris bertambah sesuai dengan nomor barisnya, membentuk pola bertingkat yang khas dalam piramida. Setelah mencetak bintang (*) sejumlah yang sesuai untuk baris saat ini, karakter baris baru (\\n) ditambahkan ke dalam variabel output untuk memindahkan output ke baris berikutnya. Proses ini diulangi hingga seluruh baris dalam piramida selesai dibangun.', 'Perulangan kedua menggunakan variabel j untuk menambahkan satu bintang () pada setiap baris piramida, di mana jumlah bintang () yang dicetak bertambah sesuai dengan nomor barisnya.', '2023-06-01 18:19:46', '2024-03-23 12:08:41', NULL), +(27, 9, 1, 'Apakah output yang diberikan program, jika kondisi ( i<= 5) pada perulangan pertama (outer loop) di ganti menjadi ( i<=6 )?', 'Jumlah baris piramida akan bertambah 1 baris, sehingga menjadi 6 baris, dengan baris terakhir memiliki 6 bintang.', 'Program akan mencetak piramida dengan tinggi 6 baris. Setiap baris akan memiliki jumlah bintang yang sama dengan nomor barisnya.', 'Program akan menghasilkan pola piramida dengan tinggi 6 baris, di mana jumlah bintang pada setiap baris akan sama dengan nomor barisnya. Dengan kata lain, pada baris pertama hanya akan ada satu bintang, pada baris kedua akan ada dua bintang, pada baris ketiga akan ada tiga bintang, dan seterusnya hingga baris keenam akan memiliki enam bintang.', 'Program akan mencetak pola piramida dengan tinggi 6 baris, di mana jumlah bintang pada setiap baris sesuai dengan nomor barisnya.', '2023-06-01 18:19:46', '2024-03-23 12:08:41', NULL), +(28, 10, 1, 'Kode program manakah yang berfungsi untuk merubah array menjadi data string?', 'Yang merubah array menjadi data string adalah baris kode Arrays.toString(topics)', 'Dengan menggunakan metode Arrays.toString(), array topics dikonversi menjadi string.', 'Dengan menggunakan metode Arrays.toString(), array topics diubah menjadi string dengan cara menggabungkan semua elemen array ke dalam satu string dengan tanda kurung siku dan koma sebagai pemisah antara elemen-elemen array tersebut.', 'Metode Arrays.toString() mengubah array topics menjadi string dengan cara menggabungkan semua elemen array ke dalam satu string, di mana setiap elemen dipisahkan oleh koma dan dikelilingi oleh tanda kurung siku.', '2023-06-01 18:21:53', '2024-03-23 12:10:41', NULL), +(29, 10, 1, 'Jelaskan alur program dari kode program diatas!', 'Array topics berisi empat elemen yang mewakili topik-topik berita, yaitu \"Opinion\", \"Tech\", \"Science\", dan \"Health\". Variabel topicArray diinisialisasi dengan hasil pemanggilan Arrays.toString(topics). Fungsi Arrays.toString() digunakan untuk mengonversi array topics menjadi string dengan format yang sesuai.\r\n\r\nSelanjutnya, perintah System.out.print(topicArray) digunakan untuk mencetak isi dari variabel topicArray, yaitu string yang berisi daftar topik-topik berita yang diubah dari array topics.\r\nKetika program dijalankan, string yang berisi daftar topik-topik berita akan ditampilkan sebagai output.', 'Mendefinisikan sebuah array topics yang berisi beberapa topik berita. Menggunakan method Arrays.toString() untuk mengonversi array topics menjadi sebuah string. String yang dihasilkan disimpan dalam variabel topicArray. Menggunakan System.out.print() untuk mencetak isi dari variabel topicArray, yang merupakan string yang berisi seluruh topik berita yang ada dalam array topics.', 'Array topics dideklarasikan dengan berisi beberapa topik berita. Kemudian, isi dari array topics diubah menjadi string menggunakan metode Arrays.toString(). Hasil konversi tersebut disimpan dalam variabel topicArray. Selanjutnya, isi dari variabel topicArray dicetak menggunakan System.out.print(). Ini akan mencetak daftar topik berita dalam bentuk string.', 'Pertama, terdapat sebuah array yang menyimpan beberapa topik berita yang telah ditentukan sebelumnya. Selanjutnya, array tersebut diubah menjadi sebuah string menggunakan sebuah metode. Hasil dari proses tersebut disimpan dalam variabel topicArray. Akhirnya, string yang berisi daftar topik berita tersebut dicetak ke layar.', '2023-06-01 18:21:53', '2024-03-23 12:10:41', NULL), +(30, 10, 1, 'Jika elemen array topics diubah menjadi “String[] topics = {1,2,3,4};”, apakah output yang dihasilkan program? Jelaskan mengapa!', 'Error. Karena elemen array berisi bilangan bulat, sedangkan tipe data array adalah String', 'Error, Program akan menghasilkan kesalahan kompilasi karena tipe data yang dideklarasikan untuk array \"topics\" adalah string, sedangkan elemennya diberikan dalam tipe data integer.\r\nJava tidak dapat mengonversi integer menjadi string secara otomatis dalam konteks ini.', 'Program akan menghasilkan kesalahan saat dijalankan karena mencoba mencetak nilai array integer sebagai string tanpa konversi tipe data yang sesuai.', 'Program menghasilkan error karena terjadi inkonsistensi antara tipe data yang dideklarasikan untuk array \"topics\" (string) dan tipe data elemennya (integer). Dengan kata lain, program mencoba memasukkan nilai integer ke dalam array yang dideklarasikan sebagai array string, yang tidak dapat dilakukan secara langsung dalam Java. Ini menyebabkan kesalahan kompilasi karena Java tidak dapat secara otomatis mengonversi tipe data integer menjadi tipe data string dalam konteks ini.', '2023-06-01 18:21:53', '2024-03-23 12:10:41', NULL), +(31, 11, 1, 'Apakah fungsi dari kode “i < nilai.length;” pada perulangan pertama ?', 'Fungsi dari kode tersebut adalah untuk membatasi jumlah perulangan sebanyak jumlah panjang data dari array nilai', 'Kode \"i < nilai.length;\" pada perulangan pertama digunakan untuk memastikan bahwa iterasi berlangsung selama nilai dari variabel \'i\' kurang dari panjang (jumlah baris) dari array dua dimensi \'nilai\'. Dengan demikian, itu memastikan bahwa iterasi akan terjadi untuk setiap baris dalam array \'nilai\'.', 'Kode tersebut bertanggung jawab untuk membatasi iterasi agar tidak melebihi jumlah baris yang ada dalam array dua dimensi \'nilai\'. Ini membantu mencegah kesalahan indeks dan memastikan bahwa hanya baris yang ada dalam array yang diperlakukan.', 'Dengan \"i < nilai.length;\", perulangan memastikan bahwa iterasi berlangsung untuk setiap baris dalam array \'nilai\' tanpa melampaui batas yang ditetapkan oleh panjang array, sehingga memastikan bahwa semua data dalam array \'nilai\' diproses dengan benar.', '2023-06-01 18:27:43', '2024-03-23 12:12:23', NULL); +INSERT INTO `essay_question` (`id`, `question_id`, `user_id`, `question`, `answer`, `answer2`, `answer3`, `answer4`, `created_at`, `updated_at`, `deleted_at`) VALUES +(32, 11, 1, 'Jelaskan alur program dari blok kode perulangan kedua (inner loop) diatas!', 'Perulangan akan dimulai dari nilai 0 dan berakhir pada saat nilai “j” kurang dari jumlah panjang array nilai. Saat kondisi terpenuhi, satu nilai akan ditambahkan ke variabel “total”. selain itu, variabel “jumlahData” juga akan ditambahkan dengan 1. nilai akan terus bertambah seiring dengan nilai “j” yang meningkat.', 'Variabel j diinisialisasi dengan nilai 0. Perulangan dilakukan selama nilai j kurang dari panjang array yang terdapat pada indeks ke i dari array nilai. Pada setiap iterasi, nilai dari array yang terletak pada indeks [i][j] ditambahkan ke dalam variabel total. Variabel jumlahData ditambah satu setiap kali perulangan dalam loop j dilakukan, untuk menghitung jumlah total data yang telah diproses. Setelah loop j selesai, program akan kembali ke awal loop i (outer loop) untuk melanjutkan iterasinya atau program berakhir jika syarat iterasi pada loop i tidak terpenuhi.', 'Pertama, variabel j diinisialisasi dengan nilai 0. Kemudian, loop akan berjalan selama nilai j kurang dari panjang array yang terdapat pada indeks ke i dari array nilai. Di setiap iterasi loop j, program akan mengakses nilai yang terletak pada indeks [i][j] dari array nilai. Nilai tersebut akan ditambahkan ke dalam variabel total, yang bertujuan untuk mengakumulasikan total nilai dari semua elemen dalam array nilai. Selain itu, variabel jumlahData akan bertambah satu pada setiap iterasi loop j. Hal ini bertujuan untuk menghitung jumlah total elemen yang telah diproses. Setelah loop j selesai, program akan melanjutkan ke iterasi berikutnya dalam loop i (outer loop) jika masih memenuhi syarat, atau program akan berakhir jika iterasi terakhir dari loop i telah selesai.', 'Perulangan dimulai dengan inisialisasi nilai j sebagai 0, dan akan terus berjalan selama nilai j kurang dari panjang array yang terdapat pada indeks ke i dari array nilai. Selama iterasi ini, setiap elemen array yang berada pada indeks [i][j] akan diakses. Nilai dari elemen tersebut akan ditambahkan ke dalam variabel total, yang bertanggung jawab untuk mengumpulkan total nilai dari semua elemen dalam array nilai. Selain itu, setiap kali iterasi dilakukan, variabel jumlahData akan bertambah satu. Ini dilakukan untuk menghitung jumlah total elemen yang telah diproses dalam perulangan. Dengan demikian, proses ini akan terus berlanjut hingga seluruh elemen dalam array nilai pada baris yang sedang diproses telah selesai diproses.', '2023-06-01 18:27:43', '2024-03-23 12:12:23', NULL), +(33, 11, 1, 'Jika elemen array nilai diganti menjadi “double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}};”. Berapakah rata-rata nilai yang didapatkan?', 'Rata-rata yang didapatkan adalah 82', 'Jika elemen array nilai diganti menjadi “double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}};” maka rata-rata nilai yang didapatkan adalah 82.', 'Jika nilai-nilai dalam array diubah menjadi \"double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}};\", maka rata-rata yang dihasilkan adalah 82. Dengan kata lain, rata-rata dari kumpulan nilai tersebut adalah 82, yang merupakan nilai tengah dari rentang nilai yang ada. Hal ini menunjukkan bahwa sebagian besar nilai berada di sekitar angka 82, yang dapat dianggap sebagai representasi keseluruhan dari kumpulan data tersebut.', 'Jika kita mengubah nilai-nilai dalam array menjadi \"double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}};\", maka rata-rata yang dihasilkan adalah 82. Dengan kata lain, nilai rata-rata dari semua nilai dalam array tersebut adalah 82. Ini menunjukkan bahwa secara keseluruhan, nilai-nilai tersebut cenderung mendekati angka 82.', '2023-06-01 18:27:43', '2024-03-23 12:12:23', NULL), +(34, 12, 1, 'Apakah kegunaan dari kode “tampil()” pada main method?', 'Fungsi dari kode “tampil()” adalah untuk memanggil fungsi tampil.', 'Fungsi dari kode \"tampil()\" adalah untuk menampilkan hasil perhitungan luas dan keliling lingkaran dengan menggunakan metode \"tampil\". Dengan kata lain, kode \"tampil()\" bertanggung jawab untuk menampilkan informasi tentang luas dan keliling lingkaran ke layar atau output yang sesuai.', 'Kode \"tampil()\" berfungsi untuk mengorganisir dan menampilkan hasil perhitungan luas dan keliling lingkaran. Dengan kata lain, tugas kode \"tampil()\" adalah untuk menampilkan informasi terkait lingkaran, seperti luas dan kelilingnya, kepada pengguna secara jelas dan terstruktur.', 'Kode \"tampil()\" berfungsi untuk menampilkan hasil perhitungan luas dan keliling lingkaran ke layar atau output. Dengan kata lain, tugasnya adalah untuk menyajikan informasi tentang lingkaran kepada pengguna secara visual atau dalam bentuk teks agar dapat dengan mudah dipahami.', '2023-06-01 18:31:05', '2024-03-23 12:14:42', NULL), +(35, 12, 1, 'Jelaskan alur program yang ada pada fungsi “tampil()”!', 'Inisialisasi phi dengan 3.14, inisialisasi r dengan 14. Kemudian, inisialisasi variabel luas dengan memanggil method luasLingkaran yang berparameter phi dan r, begitupun dengan variabel keliling yang memanggil kelilingLingkaran', 'Variabel lokal phi diinisialisasi dengan nilai 3.14 dan variabel r diinisialisasi dengan nilai 14. Fungsi luasLingkaran(phi, r) dipanggil dengan mengirimkan nilai phi dan r sebagai argumen. Fungsi ini menghitung luas lingkaran menggunakan rumus πr^2, dimana phi adalah nilai pi (π) dan r adalah jari-jari lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Fungsi kelilingLingkaran(phi, r) dipanggil dengan mengirimkan nilai phi dan r sebagai argumen. Fungsi ini menghitung keliling lingkaran menggunakan rumus 2πr, dimana phi adalah nilai pi (π) dan r adalah jari-jari lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Menggunakan System.out.print, hasil perhitungan luas dan keliling lingkaran ditampilkan dalam satu baris dengan format yang sesuai. Pada kasus ini, hasil luas dan keliling lingkaran akan ditampilkan dalam satu baris dengan pesan \"Luas Lingkaran = ...\" diikuti oleh nilai luas dan pesan \"Keliling Lingkaran = ...\" diikuti oleh nilai keliling.', 'Pertama, program menetapkan nilai phi (π) dengan 3.14 dan nilai jari-jari lingkaran (r) dengan 14. Selanjutnya, fungsi luasLingkaran(phi, r) dipanggil untuk menghitung luas lingkaran. Fungsi ini menggunakan rumus matematika πr^2, yang mengalikan phi dengan kuadrat jari-jari lingkaran, sehingga menghasilkan luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel luas. Kemudian, fungsi kelilingLingkaran(phi, r) dipanggil untuk menghitung keliling lingkaran. Fungsi ini menggunakan rumus 2πr, yang mengalikan phi dengan dua kali jari-jari lingkaran, sehingga menghasilkan keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel keliling. Akhirnya, program menampilkan hasil luas dan keliling lingkaran dengan menggunakan System.out.print. Informasi ditampilkan dalam satu baris dengan format yang sesuai, diawali dengan pesan \"Luas Lingkaran = ...\" yang diikuti oleh nilai luas, dan diikuti lagi dengan pesan \"Keliling Lingkaran = ...\" yang diikuti oleh nilai keliling.', 'Fungsi tampil() bertugas menampilkan luas dan keliling lingkaran dengan jari-jari 14 dan nilai pi sebesar 3.14. Prosesnya melibatkan perhitungan luas dan keliling menggunakan rumus matematika yang sesuai, kemudian hasilnya ditampilkan dalam satu baris dengan format yang jelas dan mudah dimengerti.', '2023-06-01 18:31:05', '2024-03-23 12:14:42', NULL), +(36, 12, 1, 'Apa yang terjadi jika kode “tampil()” pada main method di hapus?', 'Jika kode tersebut dihapus, maka program tidak menampilkan output apapun', 'Jika tampil() adalah satu-satunya kode di dalam main() dan kita menghapusnya, maka kompilator akan menghasilkan kesalahan karena tidak ada tindakan yang dilakukan dalam main(). Kode harus melakukan sesuatu yang relevan di dalam metode main() untuk menjalankan program.', 'Tanpa pemanggilan tampil(), tidak ada tindakan yang dilakukan dalam main(), yang berarti tidak akan ada output yang dihasilkan ketika program dijalankan.', 'Jika tidak ada kode lain yang dieksekusi di dalam main() selain pemanggilan tampil(), meskipun tampil() dihapus, program masih akan berjalan. Namun, tidak akan ada output yang ditampilkan.', '2023-06-01 18:31:05', '2024-03-23 12:14:42', NULL), +(37, 13, 1, 'Apakah program ini menggunakan rekursi? Jelaskan!', 'Ya, program ini menggunakan rekursi. Fungsi hitungBunga memanggil dirinya sendiri dengan parameter yang telah diubah untuk tahun sebelumnya. Proses ini terjadi hingga mencapai kondisi base, yaitu saat tahun menjadi 0, di mana rekursi berhenti dan mengembalikan saldo akhir.', 'Metode hitungBunga() memanggil dirinya sendiri secara rekursif dengan parameter yang dimodifikasi pada setiap iterasi, yaitu tahun - 1, hingga mencapai kondisi basis tahun == 0.', 'Iya, Kasus dasar dalam rekursi ini adalah ketika tahun == 0, di mana tidak ada lagi tahun yang tersisa untuk dihitung, sehingga metode mengembalikan saldo.', 'Terdapat pola rekursif yang jelas dalam program ini di mana setiap pemanggilan fungsi hitungBunga() memecah masalah menjadi masalah yang lebih kecil (tahun yang berkurang) hingga mencapai kasus dasar.', '2023-06-01 18:37:39', '2024-03-23 12:16:22', NULL), +(38, 13, 1, 'Jelaskan alur kode program yang ada dalam method atau fungsi hitungBunga!', 'Fungsi hitungBunga didefinisikan dengan tiga parameter, yaitu saldo (saldo awal), bunga (persentase bunga per tahun), dan tahun (jumlah tahun). \r\n\r\nPertama, program melakukan pengecekan kondisi if (tahun == 0). Jika tahun sama dengan 0, artinya perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\r\nJika kondisi pada langkah sebelumnya tidak terpenuhi, program akan melanjutkan ke blok else.\r\nPada blok else, variabel bungaTahunan dihitung dengan rumus saldo * (bunga / 100), yang merupakan bunga yang diperoleh dalam satu tahun.\r\nSelanjutnya, variabel total dihitung dengan menambahkan saldo dengan bungaTahunan, yang merupakan total saldo setelah satu tahun dengan bunga.\r\n\r\nTerakhir, fungsi hitungBunga dipanggil secara rekursif dengan nilai total sebagai saldo baru, bunga yang sama, dan tahun - 1 sebagai tahun yang berkurang satu.\r\n\r\nAlur program akan berulang kembali ke pengecekan tahun dengan nilai saldo dan tahun yang baru. Proses ini akan terus berlanjut hingga kondisi tahun == 0 terpenuhi, dan fungsi akan mengembalikan saldo akhir setelah seluruh perhitungan bunga selesai.', 'Parameter dan Kondisional: Fungsi ini menerima tiga parameter: saldo (saldo awal), bunga (tingkat bunga tahunan), dan tahun (jumlah tahun). Pertama, fungsi memeriksa apakah tahun sama dengan 0. Jika ya, itu berarti sudah mencapai akhir perhitungan dan fungsi mengembalikan saldo saat ini.\r\n\r\nPerhitungan Bunga Tahunan: Jika tahun bukan 0, itu berarti perlu dilakukan perhitungan bunga untuk tahun tersebut. Bunga tahunan dihitung sebagai saldo awal dikalikan dengan tingkat bunga (dalam persen).\r\n\r\nTotal Saldo: Setelah mendapatkan nilai bunga tahunan, total saldo untuk tahun tersebut dihitung dengan menambahkan saldo awal dengan bunga tahunan.\r\n\r\nRekursi: Kemudian, fungsi hitungBunga() dipanggil kembali dengan nilai total saldo yang baru, tingkat bunga yang sama, dan jumlah tahun dikurangi satu. Langkah ini diulangi secara rekursif sampai mencapai tahun yang ditentukan.\r\n\r\nPengembalian Nilai: Setelah semua perhitungan selesai, nilai total saldo akhir setelah sejumlah tahun dikembalikan sebagai output dari fungsi hitungBunga().\r\n\r\nDengan cara ini, fungsi hitungBunga() secara rekursif menghitung total saldo akhir setelah sejumlah tahun dengan mengakumulasikan bunga tahunan pada saldo awal pada setiap iterasi tahun.', 'Pengecekan Awal: Fungsi memeriksa apakah sudah mencapai akhir perhitungan. Jika tahun yang diberikan adalah 0, artinya sudah selesai, dan saldo saat ini dikembalikan.\r\n\r\nPerhitungan Bunga: Jika masih ada tahun yang harus dihitung, maka bunga tahunan dihitung terlebih dahulu. Ini adalah seberapa banyak uang yang akan ditambahkan ke saldo awal pada tahun tersebut, berdasarkan persentase bunga.\r\n\r\nPertambahan Saldo: Bunga tahunan kemudian ditambahkan ke saldo awal untuk mendapatkan total saldo setelah bunga diperhitungkan.\r\n\r\nRekursi: Fungsi kembali dipanggil untuk tahun selanjutnya dengan total saldo baru tersebut sebagai saldo awal.\r\n\r\nPengulangan Langkah: Langkah-langkah di atas diulangi untuk setiap tahun, terus-menerus menambahkan bunga ke saldo sebelumnya.\r\n\r\nPengembalian Hasil: Setelah semua tahun dihitung, total saldo akhir dikembalikan sebagai hasil perhitungan.\r\n\r\nDengan cara ini, fungsi bekerja secara berulang untuk mengakumulasikan bunga pada saldo awal dari tahun ke tahun, hingga mencapai jumlah tahun yang ditentukan.', 'Fungsi hitungBunga() menghitung total saldo setelah beberapa tahun dengan menambahkan bunga tahunan ke saldo awal pada setiap iterasi tahun, hingga mencapai jumlah tahun yang ditentukan. Proses ini berlangsung secara berulang, di mana saldo yang dihitung kembali digunakan sebagai saldo awal untuk tahun berikutnya, sampai semua tahun dihitung. Akhirnya, fungsi mengembalikan total saldo akhir setelah perhitungan selesai.', '2023-06-01 18:37:39', '2024-03-23 12:16:22', NULL), +(39, 13, 1, 'Jika bunga pertahun diganti menjadi 7%, berapakah jumlah uang yang dihasilkan setelah 5 tahun?', 'Uang yang dihasilkan setelah menabung 5 tahun adalah 1.402.551,7307', 'Dengan bunga 7% pertahun, jumlah uang setelah 5 tahun adalah 1.402.551,7307', 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah 1.402.551,7307.', '1.402.551,7307', '2023-06-01 18:37:39', '2024-03-23 12:16:22', NULL), +(56, 26, 1, 'aaa', 'aaa', 'aa', 'aa', 'aa', '2024-03-23 12:23:52', '2024-03-23 12:24:33', '2024-03-23 12:24:33'), +(57, 26, 1, 'bbb', 'bbb', 'bb', 'bb', 'bb', '2024-03-23 12:23:52', '2024-03-23 12:24:33', '2024-03-23 12:24:33'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `explaining_score` +-- + +CREATE TABLE `explaining_score` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `content_id` int UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `konteks_penjelasan` int DEFAULT NULL, + `keruntutan` int DEFAULT NULL, + `kebenaran` int DEFAULT NULL, + `is_accepted` tinyint(1) DEFAULT NULL, + `essay_question_id` bigint UNSIGNED NOT NULL, + `user_answer_id` bigint UNSIGNED NOT NULL, + `total_score_id` bigint UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `explaining_score` +-- + +INSERT INTO `explaining_score` (`id`, `user_id`, `content_id`, `question_id`, `konteks_penjelasan`, `keruntutan`, `kebenaran`, `is_accepted`, `essay_question_id`, `user_answer_id`, `total_score_id`, `created_at`, `updated_at`) VALUES +(1, 2, 1, 1, 20, NULL, NULL, 0, 1, 1, 1, '2023-06-01 18:49:37', '2023-06-01 18:49:37'), +(2, 2, 1, 1, NULL, 10, NULL, 0, 2, 2, 1, '2023-06-01 18:49:37', '2023-06-01 18:49:37'), +(3, 2, 1, 1, NULL, NULL, 5, 0, 3, 3, 1, '2023-06-01 18:49:37', '2023-06-01 18:49:37'), +(4, 2, 2, 2, 5, NULL, NULL, 0, 4, 4, 2, '2023-06-01 19:35:27', '2023-06-01 19:35:27'), +(5, 2, 2, 2, NULL, 15, NULL, 0, 5, 5, 2, '2023-06-01 19:35:27', '2023-06-01 19:35:27'), +(6, 2, 2, 2, NULL, NULL, 10, 0, 6, 6, 2, '2023-06-01 19:35:27', '2023-06-01 19:35:27'), +(7, 2, 3, 3, 2, NULL, NULL, 0, 7, 7, 3, '2023-06-01 20:01:42', '2023-06-01 20:02:30'), +(8, 2, 3, 3, NULL, 5, NULL, 0, 8, 8, 3, '2023-06-01 20:01:42', '2023-06-01 20:02:30'), +(9, 2, 3, 3, NULL, NULL, 3, 0, 9, 9, 3, '2023-06-01 20:01:42', '2023-06-01 20:02:30'), +(10, 2, 4, 4, 5, NULL, NULL, 0, 10, 10, 4, '2023-06-01 20:48:40', '2023-06-01 20:48:40'), +(11, 2, 4, 4, NULL, 20, NULL, 0, 11, 11, 4, '2023-06-01 20:48:40', '2023-06-01 20:48:40'), +(12, 2, 4, 4, NULL, NULL, 3, 0, 12, 12, 4, '2023-06-01 20:48:40', '2023-06-01 20:48:40'), +(13, 2, 5, 5, 3, NULL, NULL, 0, 13, 13, 5, '2023-06-03 06:00:26', '2023-06-03 06:00:26'), +(14, 2, 5, 5, NULL, 3, NULL, 0, 14, 14, 5, '2023-06-03 06:00:26', '2023-06-03 06:00:26'), +(15, 2, 5, 5, NULL, NULL, 3, 0, 15, 15, 5, '2023-06-03 06:00:26', '2023-06-03 06:00:26'), +(16, 2, 6, 6, 3, NULL, NULL, 0, 16, 16, 6, '2023-06-03 06:40:02', '2023-06-03 06:40:02'), +(17, 2, 6, 6, NULL, 3, NULL, 0, 17, 17, 6, '2023-06-03 06:40:02', '2023-06-03 06:40:02'), +(18, 2, 6, 6, NULL, NULL, 3, 0, 18, 18, 6, '2023-06-03 06:40:02', '2023-06-03 06:40:02'), +(19, 2, 11, 11, 10, NULL, NULL, 0, 31, 31, 7, '2023-06-04 07:32:01', '2023-06-04 07:32:01'), +(20, 2, 11, 11, NULL, 3, NULL, 0, 32, 34, 7, '2023-06-04 07:32:01', '2023-06-04 07:32:01'), +(21, 2, 11, 11, NULL, NULL, 20, 0, 33, 37, 7, '2023-06-04 07:32:01', '2023-06-04 07:32:01'), +(22, 2, 7, 7, 3, NULL, NULL, 0, 19, 19, 8, '2023-06-24 06:25:08', '2023-06-24 06:25:08'), +(23, 2, 7, 7, NULL, 5, NULL, 0, 20, 20, 8, '2023-06-24 06:25:08', '2023-06-24 06:25:08'), +(24, 2, 7, 7, NULL, NULL, 10, 0, 21, 21, 8, '2023-06-24 06:25:08', '2023-06-24 06:25:08'), +(25, 3, 1, 1, 5, NULL, NULL, 0, 1, 46, 9, '2023-07-02 20:44:42', '2023-07-02 20:44:42'), +(26, 3, 1, 1, NULL, 10, NULL, 0, 2, 47, 9, '2023-07-02 20:44:42', '2023-07-02 20:44:42'), +(27, 3, 1, 1, NULL, NULL, 15, 0, 3, 48, 9, '2023-07-02 20:44:42', '2023-07-02 20:44:42'), +(28, 4, 1, 1, 20, NULL, NULL, 0, 1, 52, 10, '2023-07-06 20:23:59', '2023-07-06 20:23:59'), +(29, 4, 1, 1, NULL, 20, NULL, 0, 2, 53, 10, '2023-07-06 20:23:59', '2023-07-06 20:23:59'), +(30, 4, 1, 1, NULL, NULL, 10, 0, 3, 54, 10, '2023-07-06 20:23:59', '2023-07-06 20:23:59'), +(31, 6, 2, 2, 20, NULL, NULL, 0, 4, 58, 11, '2024-01-22 22:57:08', '2024-01-22 22:57:08'), +(32, 6, 2, 2, NULL, 20, NULL, 0, 5, 59, 11, '2024-01-22 22:57:08', '2024-01-22 22:57:08'), +(33, 6, 2, 2, NULL, NULL, 20, 0, 6, 60, 11, '2024-01-22 22:57:08', '2024-01-22 22:57:08'), +(34, 6, 1, 1, 20, NULL, NULL, 0, 1, 55, 12, '2024-01-22 23:48:21', '2024-01-22 23:48:21'), +(35, 6, 1, 1, NULL, NULL, NULL, 0, 2, 56, 12, '2024-01-22 23:48:21', '2024-06-19 08:34:38'), +(36, 6, 1, 1, NULL, NULL, 20, 0, 3, 57, 12, '2024-01-22 23:48:21', '2024-06-19 08:34:38'), +(37, 6, 3, 3, 20, NULL, NULL, 0, 7, 61, 13, '2024-01-30 22:01:34', '2024-01-30 22:01:34'), +(38, 6, 3, 3, NULL, 20, NULL, 0, 8, 62, 13, '2024-01-30 22:01:34', '2024-01-30 22:01:34'), +(39, 6, 3, 3, NULL, NULL, 20, 0, 9, 63, 13, '2024-01-30 22:01:34', '2024-01-30 22:01:34'), +(40, 6, 4, 4, 20, NULL, NULL, 0, 10, 64, 14, '2024-02-26 20:33:37', '2024-02-26 20:33:37'), +(41, 6, 4, 4, NULL, 20, NULL, 0, 11, 65, 14, '2024-02-26 20:33:37', '2024-02-26 20:33:37'), +(42, 6, 4, 4, NULL, NULL, 20, 0, 12, 66, 14, '2024-02-26 20:33:37', '2024-02-26 20:33:37'), +(43, 6, 5, 5, 20, NULL, NULL, 0, 13, 67, 15, '2024-02-26 20:34:05', '2024-02-26 20:34:05'), +(44, 6, 5, 5, NULL, 20, NULL, 0, 14, 68, 15, '2024-02-26 20:34:05', '2024-02-26 20:34:05'), +(45, 6, 5, 5, NULL, NULL, 20, 0, 15, 69, 15, '2024-02-26 20:34:05', '2024-02-26 20:34:05'), +(46, 7, 1, 1, 15, NULL, NULL, 0, 1, 74, 16, '2024-03-08 07:52:30', '2024-03-08 07:52:30'), +(47, 7, 1, 1, NULL, 15, NULL, 0, 2, 75, 16, '2024-03-08 07:52:30', '2024-03-08 07:52:30'), +(48, 7, 1, 1, NULL, NULL, 15, 0, 3, 76, 16, '2024-03-08 07:52:30', '2024-03-08 07:52:30'), +(52, 7, 2, 2, 20, NULL, NULL, 0, 4, 93, 18, '2024-03-08 08:37:29', '2024-03-08 08:37:29'), +(53, 7, 2, 2, NULL, 20, NULL, 0, 5, 94, 18, '2024-03-08 08:37:29', '2024-03-08 08:37:29'), +(54, 7, 2, 2, NULL, NULL, 20, 0, 6, 95, 18, '2024-03-08 08:37:29', '2024-03-08 08:37:29'), +(55, 7, 3, 3, 20, NULL, NULL, 0, 7, 96, 19, '2024-03-08 08:40:00', '2024-03-08 08:40:00'), +(56, 7, 3, 3, NULL, 20, NULL, 0, 8, 97, 19, '2024-03-08 08:40:00', '2024-03-08 08:40:00'), +(57, 7, 3, 3, NULL, NULL, 20, 0, 9, 98, 19, '2024-03-08 08:40:00', '2024-03-08 08:40:00'), +(58, 7, 4, 4, 15, NULL, NULL, 0, 10, 99, 20, '2024-03-08 09:20:33', '2024-03-08 09:20:33'), +(59, 7, 4, 4, NULL, 20, NULL, 0, 11, 100, 20, '2024-03-08 09:20:33', '2024-03-08 09:20:33'), +(60, 7, 4, 4, NULL, NULL, 15, 0, 12, 101, 20, '2024-03-08 09:20:33', '2024-03-08 09:20:33'), +(61, 9, 1, 1, 10, NULL, NULL, 0, 1, 102, 21, '2024-03-11 05:01:27', '2024-03-11 05:01:27'), +(62, 9, 1, 1, NULL, 15, NULL, 0, 2, 103, 21, '2024-03-11 05:01:27', '2024-03-11 05:01:27'), +(63, 9, 1, 1, NULL, NULL, 15, 0, 3, 104, 21, '2024-03-11 05:01:27', '2024-03-11 05:01:27'), +(64, 9, 2, 2, 20, NULL, NULL, 0, 4, 105, 22, '2024-03-11 05:05:21', '2024-03-11 05:05:21'), +(65, 9, 2, 2, NULL, 20, NULL, 0, 5, 106, 22, '2024-03-11 05:05:21', '2024-03-11 05:05:21'), +(66, 9, 2, 2, NULL, NULL, 20, 0, 6, 107, 22, '2024-03-11 05:05:21', '2024-03-11 05:05:21'), +(67, 9, 3, 3, 20, NULL, NULL, 0, 7, 108, 23, '2024-03-11 05:07:59', '2024-03-11 05:07:59'), +(68, 9, 3, 3, NULL, 20, NULL, 0, 8, 109, 23, '2024-03-11 05:07:59', '2024-03-11 05:07:59'), +(69, 9, 3, 3, NULL, NULL, 20, 0, 9, 110, 23, '2024-03-11 05:07:59', '2024-03-11 05:07:59'), +(70, 9, 4, 4, 15, NULL, NULL, 0, 10, 111, 24, '2024-03-11 05:10:35', '2024-03-11 05:10:35'), +(71, 9, 4, 4, NULL, 20, NULL, 0, 11, 112, 24, '2024-03-11 05:10:35', '2024-03-11 05:10:35'), +(72, 9, 4, 4, NULL, NULL, 15, 0, 12, 113, 24, '2024-03-11 05:10:35', '2024-03-11 05:10:35'), +(73, 9, 5, 5, 15, NULL, NULL, 0, 13, 114, 25, '2024-03-11 05:15:53', '2024-03-11 05:15:53'), +(74, 9, 5, 5, NULL, 20, NULL, 0, 14, 115, 25, '2024-03-11 05:15:53', '2024-03-11 05:15:53'), +(75, 9, 5, 5, NULL, NULL, 15, 0, 15, 116, 25, '2024-03-11 05:15:53', '2024-03-11 05:15:53'), +(76, 7, 5, 5, 10, NULL, NULL, 0, 13, 117, 26, '2024-03-11 05:19:50', '2024-03-11 05:19:50'), +(77, 7, 5, 5, NULL, 20, NULL, 0, 14, 118, 26, '2024-03-11 05:19:50', '2024-03-11 05:19:50'), +(78, 7, 5, 5, NULL, NULL, 10, 0, 15, 119, 26, '2024-03-11 05:19:50', '2024-03-11 05:19:50'), +(79, 10, 1, 1, 20, NULL, NULL, 0, 1, 120, 27, '2024-03-11 08:35:46', '2024-05-01 20:57:26'), +(80, 10, 1, 1, NULL, 20, NULL, 0, 2, 121, 27, '2024-03-11 08:35:46', '2024-03-11 08:35:46'), +(81, 10, 1, 1, NULL, NULL, 20, 0, 3, 122, 27, '2024-03-11 08:35:46', '2024-05-01 20:57:26'), +(82, 10, 2, 2, 20, NULL, NULL, 0, 4, 123, 28, '2024-03-11 08:38:05', '2024-03-11 08:38:05'), +(83, 10, 2, 2, NULL, 20, NULL, 0, 5, 124, 28, '2024-03-11 08:38:05', '2024-03-11 08:38:05'), +(84, 10, 2, 2, NULL, NULL, 20, 0, 6, 125, 28, '2024-03-11 08:38:05', '2024-03-11 08:38:05'), +(85, 10, 3, 3, 20, NULL, NULL, 0, 7, 126, 29, '2024-03-11 08:42:06', '2024-03-11 08:42:06'), +(86, 10, 3, 3, NULL, 15, NULL, 0, 8, 127, 29, '2024-03-11 08:42:06', '2024-03-11 08:42:06'), +(87, 10, 3, 3, NULL, NULL, 15, 0, 9, 128, 29, '2024-03-11 08:42:06', '2024-03-11 08:42:06'), +(88, 10, 4, 4, 15, NULL, NULL, 0, 10, 129, 30, '2024-03-11 08:45:48', '2024-03-11 08:45:48'), +(89, 10, 4, 4, NULL, 20, NULL, 0, 11, 130, 30, '2024-03-11 08:45:48', '2024-03-11 08:45:48'), +(90, 10, 4, 4, NULL, NULL, 15, 0, 12, 131, 30, '2024-03-11 08:45:48', '2024-03-11 08:45:48'), +(91, 10, 5, 5, 15, NULL, NULL, 0, 13, 132, 31, '2024-03-11 08:49:16', '2024-03-11 08:49:16'), +(92, 10, 5, 5, NULL, 20, NULL, 0, 14, 133, 31, '2024-03-11 08:49:16', '2024-03-11 08:49:16'), +(93, 10, 5, 5, NULL, NULL, 10, 0, 15, 134, 31, '2024-03-11 08:49:16', '2024-03-11 08:49:16'), +(94, 11, 1, 1, 10, NULL, NULL, 0, 1, 135, 32, '2024-03-11 08:56:31', '2024-03-11 08:56:31'), +(95, 11, 1, 1, NULL, 20, NULL, 0, 2, 136, 32, '2024-03-11 08:56:31', '2024-03-11 08:56:31'), +(96, 11, 1, 1, NULL, NULL, 15, 0, 3, 137, 32, '2024-03-11 08:56:31', '2024-03-11 08:56:31'), +(97, 11, 2, 2, 20, NULL, NULL, 0, 4, 138, 33, '2024-03-11 08:58:04', '2024-03-11 08:58:04'), +(98, 11, 2, 2, NULL, 20, NULL, 0, 5, 139, 33, '2024-03-11 08:58:04', '2024-03-11 08:58:04'), +(99, 11, 2, 2, NULL, NULL, 20, 0, 6, 140, 33, '2024-03-11 08:58:04', '2024-03-11 08:58:04'), +(100, 11, 3, 3, 15, NULL, NULL, 0, 7, 141, 34, '2024-03-11 08:59:24', '2024-03-11 08:59:24'), +(101, 11, 3, 3, NULL, 20, NULL, 0, 8, 142, 34, '2024-03-11 08:59:24', '2024-03-11 08:59:24'), +(102, 11, 3, 3, NULL, NULL, 15, 0, 9, 143, 34, '2024-03-11 08:59:24', '2024-03-11 08:59:24'), +(103, 11, 4, 4, 15, NULL, NULL, 0, 10, 144, 35, '2024-03-11 09:00:41', '2024-03-11 09:00:41'), +(104, 11, 4, 4, NULL, 20, NULL, 0, 11, 145, 35, '2024-03-11 09:00:41', '2024-03-11 09:00:41'), +(105, 11, 4, 4, NULL, NULL, 15, 0, 12, 146, 35, '2024-03-11 09:00:41', '2024-03-11 09:00:41'), +(106, 11, 5, 5, 15, NULL, NULL, 0, 13, 147, 36, '2024-03-11 09:02:15', '2024-03-11 09:02:15'), +(107, 11, 5, 5, NULL, 20, NULL, 0, 14, 148, 36, '2024-03-11 09:02:15', '2024-03-11 09:02:15'), +(108, 11, 5, 5, NULL, NULL, 15, 0, 15, 149, 36, '2024-03-11 09:02:15', '2024-03-11 09:02:15'), +(109, 12, 1, 1, 15, NULL, NULL, 0, 1, 150, 37, '2024-03-11 09:11:14', '2024-03-11 09:11:14'), +(110, 12, 1, 1, NULL, 15, NULL, 0, 2, 151, 37, '2024-03-11 09:11:14', '2024-03-11 09:11:14'), +(111, 12, 1, 1, NULL, NULL, 15, 0, 3, 152, 37, '2024-03-11 09:11:14', '2024-03-11 09:11:14'), +(112, 12, 2, 2, 20, NULL, NULL, 0, 4, 153, 38, '2024-03-11 09:12:25', '2024-03-11 09:12:25'), +(113, 12, 2, 2, NULL, 20, NULL, 0, 5, 154, 38, '2024-03-11 09:12:25', '2024-03-11 09:12:25'), +(114, 12, 2, 2, NULL, NULL, 20, 0, 6, 155, 38, '2024-03-11 09:12:25', '2024-03-11 09:12:25'), +(115, 12, 3, 3, 15, NULL, NULL, 0, 7, 156, 39, '2024-03-11 09:14:08', '2024-03-11 09:14:08'), +(116, 12, 3, 3, NULL, 15, NULL, 0, 8, 157, 39, '2024-03-11 09:14:08', '2024-03-11 09:14:08'), +(117, 12, 3, 3, NULL, NULL, 15, 0, 9, 158, 39, '2024-03-11 09:14:08', '2024-03-11 09:14:08'), +(118, 12, 4, 4, 15, NULL, NULL, 0, 10, 159, 40, '2024-03-11 09:16:51', '2024-03-11 09:16:51'), +(119, 12, 4, 4, NULL, 20, NULL, 0, 11, 160, 40, '2024-03-11 09:16:51', '2024-03-11 09:16:51'), +(120, 12, 4, 4, NULL, NULL, 15, 0, 12, 161, 40, '2024-03-11 09:16:51', '2024-03-11 09:16:51'), +(121, 12, 5, 5, 15, NULL, NULL, 0, 13, 162, 41, '2024-03-11 09:18:03', '2024-03-11 09:18:03'), +(122, 12, 5, 5, NULL, 15, NULL, 0, 14, 163, 41, '2024-03-11 09:18:03', '2024-03-11 09:18:03'), +(123, 12, 5, 5, NULL, NULL, 10, 0, 15, 164, 41, '2024-03-11 09:18:03', '2024-03-11 09:18:03'), +(124, 13, 1, 1, 15, NULL, NULL, 0, 1, 165, 42, '2024-03-11 09:22:14', '2024-03-11 09:22:14'), +(125, 13, 1, 1, NULL, 15, NULL, 0, 2, 166, 42, '2024-03-11 09:22:14', '2024-03-11 09:22:14'), +(126, 13, 1, 1, NULL, NULL, 15, 0, 3, 167, 42, '2024-03-11 09:22:14', '2024-03-11 09:22:14'), +(127, 13, 2, 2, 20, NULL, NULL, 0, 4, 168, 43, '2024-03-11 09:24:16', '2024-03-11 09:24:16'), +(128, 13, 2, 2, NULL, 20, NULL, 0, 5, 169, 43, '2024-03-11 09:24:16', '2024-03-11 09:24:16'), +(129, 13, 2, 2, NULL, NULL, 20, 0, 6, 170, 43, '2024-03-11 09:24:16', '2024-03-11 09:24:16'), +(130, 13, 3, 3, 20, NULL, NULL, 0, 7, 171, 44, '2024-03-11 09:25:55', '2024-03-11 09:25:55'), +(131, 13, 3, 3, NULL, 20, NULL, 0, 8, 172, 44, '2024-03-11 09:25:55', '2024-03-11 09:25:55'), +(132, 13, 3, 3, NULL, NULL, 15, 0, 9, 173, 44, '2024-03-11 09:25:55', '2024-03-11 09:25:55'), +(133, 13, 4, 4, 20, NULL, NULL, 0, 10, 174, 45, '2024-03-11 09:29:34', '2024-03-11 09:29:34'), +(134, 13, 4, 4, NULL, 20, NULL, 0, 11, 175, 45, '2024-03-11 09:29:34', '2024-03-11 09:29:34'), +(135, 13, 4, 4, NULL, NULL, 15, 0, 12, 176, 45, '2024-03-11 09:29:34', '2024-03-11 09:29:34'), +(136, 13, 5, 5, 10, NULL, NULL, 0, 13, 177, 46, '2024-03-11 09:31:20', '2024-03-11 09:31:20'), +(137, 13, 5, 5, NULL, 20, NULL, 0, 14, 178, 46, '2024-03-11 09:31:20', '2024-03-11 09:31:20'), +(138, 13, 5, 5, NULL, NULL, 15, 0, 15, 179, 46, '2024-03-11 09:31:20', '2024-03-11 09:31:20'), +(139, 14, 1, 1, 10, NULL, NULL, 0, 1, 180, 47, '2024-03-11 09:41:30', '2024-03-11 09:41:30'), +(140, 14, 1, 1, NULL, 20, NULL, 0, 2, 181, 47, '2024-03-11 09:41:30', '2024-03-11 09:41:30'), +(141, 14, 1, 1, NULL, NULL, 10, 0, 3, 182, 47, '2024-03-11 09:41:30', '2024-03-11 09:41:30'), +(142, 14, 2, 2, 20, NULL, NULL, 0, 4, 183, 48, '2024-03-11 09:43:07', '2024-03-11 09:43:07'), +(143, 14, 2, 2, NULL, 20, NULL, 0, 5, 184, 48, '2024-03-11 09:43:07', '2024-03-11 09:43:07'), +(144, 14, 2, 2, NULL, NULL, 15, 0, 6, 185, 48, '2024-03-11 09:43:07', '2024-03-11 09:43:07'), +(145, 14, 3, 3, 15, NULL, NULL, 0, 7, 186, 49, '2024-03-11 09:44:33', '2024-03-11 09:44:33'), +(146, 14, 3, 3, NULL, 15, NULL, 0, 8, 187, 49, '2024-03-11 09:44:33', '2024-03-11 09:44:33'), +(147, 14, 3, 3, NULL, NULL, 15, 0, 9, 188, 49, '2024-03-11 09:44:33', '2024-03-11 09:44:33'), +(148, 14, 4, 4, 15, NULL, NULL, 0, 10, 189, 50, '2024-03-11 09:46:35', '2024-03-11 09:46:35'), +(149, 14, 4, 4, NULL, 20, NULL, 0, 11, 190, 50, '2024-03-11 09:46:35', '2024-03-11 09:46:35'), +(150, 14, 4, 4, NULL, NULL, 15, 0, 12, 191, 50, '2024-03-11 09:46:35', '2024-03-11 09:46:35'), +(151, 14, 5, 5, 15, NULL, NULL, 0, 13, 192, 51, '2024-03-11 09:48:04', '2024-03-11 09:48:04'), +(152, 14, 5, 5, NULL, 15, NULL, 0, 14, 193, 51, '2024-03-11 09:48:04', '2024-03-11 09:48:04'), +(153, 14, 5, 5, NULL, NULL, 15, 0, 15, 194, 51, '2024-03-11 09:48:04', '2024-03-11 09:48:04'), +(154, 15, 1, 1, 15, NULL, NULL, 0, 1, 195, 52, '2024-03-11 09:56:15', '2024-03-11 09:56:15'), +(155, 15, 1, 1, NULL, 15, NULL, 0, 2, 196, 52, '2024-03-11 09:56:15', '2024-03-11 09:56:15'), +(156, 15, 1, 1, NULL, NULL, 15, 0, 3, 197, 52, '2024-03-11 09:56:15', '2024-03-11 09:56:15'), +(157, 15, 2, 2, 20, NULL, NULL, 0, 4, 198, 53, '2024-03-11 09:57:30', '2024-03-11 09:57:30'), +(158, 15, 2, 2, NULL, 20, NULL, 0, 5, 199, 53, '2024-03-11 09:57:30', '2024-03-11 09:57:30'), +(159, 15, 2, 2, NULL, NULL, 20, 0, 6, 200, 53, '2024-03-11 09:57:30', '2024-03-11 09:57:30'), +(160, 15, 3, 3, 15, NULL, NULL, 0, 7, 201, 54, '2024-03-11 09:59:46', '2024-03-11 09:59:46'), +(161, 15, 3, 3, NULL, 20, NULL, 0, 8, 202, 54, '2024-03-11 09:59:46', '2024-03-11 09:59:46'), +(162, 15, 3, 3, NULL, NULL, 15, 0, 9, 203, 54, '2024-03-11 09:59:46', '2024-03-11 09:59:46'), +(163, 15, 4, 4, 20, NULL, NULL, 0, 10, 204, 55, '2024-03-11 10:01:13', '2024-03-11 10:01:13'), +(164, 15, 4, 4, NULL, 20, NULL, 0, 11, 205, 55, '2024-03-11 10:01:13', '2024-03-11 10:01:13'), +(165, 15, 4, 4, NULL, NULL, 15, 0, 12, 206, 55, '2024-03-11 10:01:13', '2024-03-11 10:01:13'), +(166, 15, 5, 5, 10, NULL, NULL, 0, 13, 207, 56, '2024-03-11 10:02:37', '2024-03-11 10:02:37'), +(167, 15, 5, 5, NULL, 20, NULL, 0, 14, 208, 56, '2024-03-11 10:02:37', '2024-03-11 10:02:37'), +(168, 15, 5, 5, NULL, NULL, 15, 0, 15, 209, 56, '2024-03-11 10:02:37', '2024-03-11 10:02:37'), +(169, 16, 1, 1, 10, NULL, NULL, 0, 1, 210, 57, '2024-03-11 10:15:20', '2024-03-11 10:15:20'), +(170, 16, 1, 1, NULL, 15, NULL, 0, 2, 211, 57, '2024-03-11 10:15:20', '2024-03-11 10:15:20'), +(171, 16, 1, 1, NULL, NULL, 15, 0, 3, 212, 57, '2024-03-11 10:15:20', '2024-03-11 10:15:20'), +(172, 16, 2, 2, 20, NULL, NULL, 0, 4, 213, 58, '2024-03-11 10:16:40', '2024-03-11 10:16:40'), +(173, 16, 2, 2, NULL, 20, NULL, 0, 5, 214, 58, '2024-03-11 10:16:40', '2024-03-11 10:16:40'), +(174, 16, 2, 2, NULL, NULL, 20, 0, 6, 215, 58, '2024-03-11 10:16:40', '2024-03-11 10:16:40'), +(175, 16, 3, 3, 15, NULL, NULL, 0, 7, 216, 59, '2024-03-11 10:18:08', '2024-03-11 10:18:08'), +(176, 16, 3, 3, NULL, 20, NULL, 0, 8, 217, 59, '2024-03-11 10:18:08', '2024-03-11 10:18:08'), +(177, 16, 3, 3, NULL, NULL, 15, 0, 9, 218, 59, '2024-03-11 10:18:08', '2024-03-11 10:18:08'), +(178, 16, 4, 4, 15, NULL, NULL, 0, 10, 219, 60, '2024-03-11 10:19:31', '2024-03-11 10:19:31'), +(179, 16, 4, 4, NULL, 20, NULL, 0, 11, 220, 60, '2024-03-11 10:19:31', '2024-03-11 10:19:31'), +(180, 16, 4, 4, NULL, NULL, 15, 0, 12, 221, 60, '2024-03-11 10:19:31', '2024-03-11 10:19:31'), +(181, 16, 5, 5, 15, NULL, NULL, 0, 13, 222, 61, '2024-03-11 10:20:47', '2024-03-11 10:20:47'), +(182, 16, 5, 5, NULL, 15, NULL, 0, 14, 223, 61, '2024-03-11 10:20:47', '2024-03-11 10:20:47'), +(183, 16, 5, 5, NULL, NULL, 10, 0, 15, 224, 61, '2024-03-11 10:20:47', '2024-03-11 10:20:47'), +(184, 17, 1, 1, 10, NULL, NULL, 0, 1, 225, 62, '2024-03-11 10:24:24', '2024-03-11 10:24:24'), +(185, 17, 1, 1, NULL, 15, NULL, 0, 2, 226, 62, '2024-03-11 10:24:24', '2024-03-11 10:24:24'), +(186, 17, 1, 1, NULL, NULL, 15, 0, 3, 227, 62, '2024-03-11 10:24:24', '2024-03-11 10:24:24'), +(187, 17, 2, 2, 20, NULL, NULL, 0, 4, 228, 63, '2024-03-11 10:25:54', '2024-03-11 10:25:54'), +(188, 17, 2, 2, NULL, 20, NULL, 0, 5, 229, 63, '2024-03-11 10:25:54', '2024-03-11 10:25:54'), +(189, 17, 2, 2, NULL, NULL, 20, 0, 6, 230, 63, '2024-03-11 10:25:54', '2024-03-11 10:25:54'), +(190, 17, 3, 3, 15, NULL, NULL, 0, 7, 231, 64, '2024-03-11 10:27:04', '2024-03-11 10:27:04'), +(191, 17, 3, 3, NULL, 20, NULL, 0, 8, 232, 64, '2024-03-11 10:27:04', '2024-03-11 10:27:04'), +(192, 17, 3, 3, NULL, NULL, 15, 0, 9, 233, 64, '2024-03-11 10:27:04', '2024-03-11 10:27:04'), +(193, 17, 4, 4, 15, NULL, NULL, 0, 10, 234, 65, '2024-03-11 10:28:24', '2024-03-11 10:28:24'), +(194, 17, 4, 4, NULL, 20, NULL, 0, 11, 235, 65, '2024-03-11 10:28:24', '2024-03-11 10:28:24'), +(195, 17, 4, 4, NULL, NULL, 15, 0, 12, 236, 65, '2024-03-11 10:28:24', '2024-03-11 10:28:24'), +(196, 17, 5, 5, 10, NULL, NULL, 0, 13, 237, 66, '2024-03-11 10:30:15', '2024-03-11 10:30:15'), +(197, 17, 5, 5, NULL, 15, NULL, 0, 14, 238, 66, '2024-03-11 10:30:15', '2024-03-11 10:30:15'), +(198, 17, 5, 5, NULL, NULL, 10, 0, 15, 239, 66, '2024-03-11 10:30:15', '2024-03-11 10:30:15'), +(199, 10, 6, 6, 15, NULL, NULL, 0, 16, 240, 67, '2024-03-24 00:15:46', '2024-03-24 00:15:46'), +(200, 10, 6, 6, NULL, 20, NULL, 0, 17, 241, 67, '2024-03-24 00:15:46', '2024-03-24 00:15:46'), +(201, 10, 6, 6, NULL, NULL, 20, 0, 18, 242, 67, '2024-03-24 00:15:46', '2024-03-24 00:15:46'), +(202, 10, 7, 7, 20, NULL, NULL, 0, 19, 243, 68, '2024-03-24 00:18:49', '2024-03-24 00:18:49'), +(203, 10, 7, 7, NULL, 20, NULL, 0, 20, 244, 68, '2024-03-24 00:18:49', '2024-03-24 00:18:49'), +(204, 10, 7, 7, NULL, NULL, 20, 0, 21, 245, 68, '2024-03-24 00:18:49', '2024-03-24 00:18:49'), +(205, 10, 8, 8, 20, NULL, NULL, 0, 22, 246, 69, '2024-03-24 00:22:53', '2024-03-24 00:22:53'), +(206, 10, 8, 8, NULL, 15, NULL, 0, 23, 247, 69, '2024-03-24 00:22:53', '2024-03-24 00:22:53'), +(207, 10, 8, 8, NULL, NULL, 15, 0, 24, 248, 69, '2024-03-24 00:22:53', '2024-03-24 00:22:53'), +(208, 10, 9, 9, 10, NULL, NULL, 0, 25, 249, 70, '2024-03-24 00:25:42', '2024-03-24 00:25:42'), +(209, 10, 9, 9, NULL, 15, NULL, 0, 26, 250, 70, '2024-03-24 00:25:42', '2024-03-24 00:25:42'), +(210, 10, 9, 9, NULL, NULL, 15, 0, 27, 251, 70, '2024-03-24 00:25:42', '2024-03-24 00:25:42'), +(211, 10, 10, 10, 20, NULL, NULL, 0, 28, 252, 71, '2024-03-24 00:28:33', '2024-03-24 00:28:33'), +(212, 10, 10, 10, NULL, 20, NULL, 0, 29, 253, 71, '2024-03-24 00:28:33', '2024-03-24 00:28:33'), +(213, 10, 10, 10, NULL, NULL, 10, 0, 30, 254, 71, '2024-03-24 00:28:33', '2024-03-24 00:28:33'), +(214, 10, 11, 11, 15, NULL, NULL, 0, 31, 255, 72, '2024-03-24 00:33:15', '2024-03-24 00:33:15'), +(215, 10, 11, 11, NULL, 15, NULL, 0, 32, 256, 72, '2024-03-24 00:33:15', '2024-03-24 00:33:15'), +(216, 10, 11, 11, NULL, NULL, 10, 0, 33, 257, 72, '2024-03-24 00:33:15', '2024-03-24 00:33:15'), +(217, 10, 12, 12, 15, NULL, NULL, 0, 34, 258, 73, '2024-03-24 00:35:41', '2024-03-24 00:35:41'), +(218, 10, 12, 12, NULL, 15, NULL, 0, 35, 259, 73, '2024-03-24 00:35:41', '2024-03-24 00:35:41'), +(219, 10, 12, 12, NULL, NULL, 15, 0, 36, 260, 73, '2024-03-24 00:35:41', '2024-03-24 00:35:41'), +(220, 10, 13, 13, 10, NULL, NULL, 0, 37, 261, 74, '2024-03-24 00:40:01', '2024-03-24 00:40:01'), +(221, 10, 13, 13, NULL, 20, NULL, 0, 38, 262, 74, '2024-03-24 00:40:01', '2024-03-24 00:40:01'), +(222, 10, 13, 13, NULL, NULL, 15, 0, 39, 263, 74, '2024-03-24 00:40:01', '2024-03-24 00:40:01'), +(223, 19, 1, 1, 10, NULL, NULL, 0, 1, 264, 75, '2024-03-24 00:54:19', '2024-03-24 00:54:19'), +(224, 19, 1, 1, NULL, 20, NULL, 0, 2, 265, 75, '2024-03-24 00:54:19', '2024-03-24 00:54:19'), +(225, 19, 1, 1, NULL, NULL, 15, 0, 3, 266, 75, '2024-03-24 00:54:19', '2024-03-24 00:54:19'), +(226, 19, 2, 2, 20, NULL, NULL, 0, 4, 267, 76, '2024-03-24 00:55:57', '2024-03-24 00:55:57'), +(227, 19, 2, 2, NULL, 20, NULL, 0, 5, 268, 76, '2024-03-24 00:55:57', '2024-03-24 00:55:57'), +(228, 19, 2, 2, NULL, NULL, 20, 0, 6, 269, 76, '2024-03-24 00:55:57', '2024-03-24 00:55:57'), +(229, 19, 3, 3, 20, NULL, NULL, 0, 7, 270, 77, '2024-03-24 00:57:13', '2024-03-24 00:57:13'), +(230, 19, 3, 3, NULL, 15, NULL, 0, 8, 271, 77, '2024-03-24 00:57:13', '2024-03-24 00:57:13'), +(231, 19, 3, 3, NULL, NULL, 15, 0, 9, 272, 77, '2024-03-24 00:57:13', '2024-03-24 00:57:13'), +(232, 19, 4, 4, 15, NULL, NULL, 0, 10, 273, 78, '2024-03-24 00:58:37', '2024-03-24 00:58:37'), +(233, 19, 4, 4, NULL, 20, NULL, 0, 11, 274, 78, '2024-03-24 00:58:37', '2024-03-24 00:58:37'), +(234, 19, 4, 4, NULL, NULL, 15, 0, 12, 275, 78, '2024-03-24 00:58:37', '2024-03-24 00:58:37'), +(235, 19, 5, 5, 15, NULL, NULL, 0, 13, 276, 79, '2024-03-24 00:59:54', '2024-03-24 00:59:54'), +(236, 19, 5, 5, NULL, 20, NULL, 0, 14, 277, 79, '2024-03-24 00:59:54', '2024-03-24 00:59:54'), +(237, 19, 5, 5, NULL, NULL, 10, 0, 15, 278, 79, '2024-03-24 00:59:54', '2024-03-24 00:59:54'), +(238, 19, 6, 6, 15, NULL, NULL, 0, 16, 279, 80, '2024-03-24 01:02:20', '2024-03-24 01:02:20'), +(239, 19, 6, 6, NULL, 20, NULL, 0, 17, 280, 80, '2024-03-24 01:02:20', '2024-03-24 01:02:20'), +(240, 19, 6, 6, NULL, NULL, 20, 0, 18, 281, 80, '2024-03-24 01:02:20', '2024-03-24 01:02:20'), +(241, 19, 7, 7, 20, NULL, NULL, 0, 19, 282, 81, '2024-03-24 01:04:02', '2024-03-24 01:04:02'), +(242, 19, 7, 7, NULL, 20, NULL, 0, 20, 283, 81, '2024-03-24 01:04:02', '2024-03-24 01:04:02'), +(243, 19, 7, 7, NULL, NULL, 20, 0, 21, 284, 81, '2024-03-24 01:04:02', '2024-03-24 01:04:02'), +(244, 19, 8, 8, 20, NULL, NULL, 0, 22, 285, 82, '2024-03-24 01:05:14', '2024-03-24 01:05:14'), +(245, 19, 8, 8, NULL, 15, NULL, 0, 23, 286, 82, '2024-03-24 01:05:14', '2024-03-24 01:05:14'), +(246, 19, 8, 8, NULL, NULL, 15, 0, 24, 287, 82, '2024-03-24 01:05:14', '2024-03-24 01:05:14'), +(247, 19, 9, 9, 10, NULL, NULL, 0, 25, 288, 83, '2024-03-24 01:06:43', '2024-03-24 01:06:43'), +(248, 19, 9, 9, NULL, 15, NULL, 0, 26, 289, 83, '2024-03-24 01:06:43', '2024-03-24 01:06:43'), +(249, 19, 9, 9, NULL, NULL, 15, 0, 27, 290, 83, '2024-03-24 01:06:43', '2024-03-24 01:06:43'), +(250, 19, 10, 10, 20, NULL, NULL, 0, 28, 291, 84, '2024-03-24 01:08:21', '2024-03-24 01:08:21'), +(251, 19, 10, 10, NULL, 20, NULL, 0, 29, 292, 84, '2024-03-24 01:08:21', '2024-03-24 01:08:21'), +(252, 19, 10, 10, NULL, NULL, 10, 0, 30, 293, 84, '2024-03-24 01:08:21', '2024-03-24 01:08:21'), +(253, 19, 11, 11, 15, NULL, NULL, 0, 31, 294, 85, '2024-03-24 01:10:22', '2024-03-24 01:10:22'), +(254, 19, 11, 11, NULL, 15, NULL, 0, 32, 295, 85, '2024-03-24 01:10:22', '2024-03-24 01:10:22'), +(255, 19, 11, 11, NULL, NULL, 10, 0, 33, 296, 85, '2024-03-24 01:10:22', '2024-03-24 01:10:22'), +(256, 19, 12, 12, 15, NULL, NULL, 0, 34, 297, 86, '2024-03-24 01:11:42', '2024-03-24 01:11:42'), +(257, 19, 12, 12, NULL, 20, NULL, 0, 35, 298, 86, '2024-03-24 01:11:42', '2024-03-24 01:11:42'), +(258, 19, 12, 12, NULL, NULL, 15, 0, 36, 299, 86, '2024-03-24 01:11:42', '2024-03-24 01:11:42'), +(259, 19, 13, 13, 10, NULL, NULL, 0, 37, 300, 87, '2024-03-24 01:13:20', '2024-03-24 01:13:20'), +(260, 19, 13, 13, NULL, 20, NULL, 0, 38, 301, 87, '2024-03-24 01:13:20', '2024-03-24 01:13:20'), +(261, 19, 13, 13, NULL, NULL, 15, 0, 39, 302, 87, '2024-03-24 01:13:20', '2024-03-24 01:13:20'), +(262, 12, 6, 6, 15, NULL, NULL, 0, 16, 303, 88, '2024-03-24 01:17:20', '2024-03-24 01:17:20'), +(263, 12, 6, 6, NULL, 20, NULL, 0, 17, 304, 88, '2024-03-24 01:17:20', '2024-03-24 01:17:20'), +(264, 12, 6, 6, NULL, NULL, 20, 0, 18, 305, 88, '2024-03-24 01:17:20', '2024-03-24 01:17:20'), +(265, 12, 7, 7, 20, NULL, NULL, 0, 19, 306, 89, '2024-03-24 01:18:54', '2024-03-24 01:18:54'), +(266, 12, 7, 7, NULL, 20, NULL, 0, 20, 307, 89, '2024-03-24 01:18:54', '2024-03-24 01:18:54'), +(267, 12, 7, 7, NULL, NULL, 20, 0, 21, 308, 89, '2024-03-24 01:18:54', '2024-03-24 01:18:54'), +(268, 12, 8, 8, 20, NULL, NULL, 0, 22, 309, 90, '2024-03-24 01:22:49', '2024-03-24 01:22:49'), +(269, 12, 8, 8, NULL, 15, NULL, 0, 23, 310, 90, '2024-03-24 01:22:49', '2024-03-24 01:22:49'), +(270, 12, 8, 8, NULL, NULL, 15, 0, 24, 311, 90, '2024-03-24 01:22:49', '2024-03-24 01:22:49'), +(271, 12, 9, 9, 10, NULL, NULL, 0, 25, 312, 91, '2024-03-24 01:24:14', '2024-03-24 01:24:14'), +(272, 12, 9, 9, NULL, 15, NULL, 0, 26, 313, 91, '2024-03-24 01:24:14', '2024-03-24 01:24:14'), +(273, 12, 9, 9, NULL, NULL, 15, 0, 27, 314, 91, '2024-03-24 01:24:14', '2024-03-24 01:24:14'), +(274, 12, 10, 10, 20, NULL, NULL, 0, 28, 315, 92, '2024-03-24 01:25:52', '2024-03-24 01:25:52'), +(275, 12, 10, 10, NULL, 20, NULL, 0, 29, 316, 92, '2024-03-24 01:25:52', '2024-03-24 01:25:52'), +(276, 12, 10, 10, NULL, NULL, 10, 0, 30, 317, 92, '2024-03-24 01:25:52', '2024-03-24 01:25:52'), +(277, 12, 11, 11, 15, NULL, NULL, 0, 31, 318, 93, '2024-03-24 01:27:08', '2024-03-24 01:27:08'), +(278, 12, 11, 11, NULL, 15, NULL, 0, 32, 319, 93, '2024-03-24 01:27:08', '2024-03-24 01:27:08'), +(279, 12, 11, 11, NULL, NULL, 10, 0, 33, 320, 93, '2024-03-24 01:27:08', '2024-03-24 01:27:08'), +(280, 12, 12, 12, 15, NULL, NULL, 0, 34, 321, 94, '2024-03-24 01:28:30', '2024-03-24 01:28:30'), +(281, 12, 12, 12, NULL, 15, NULL, 0, 35, 322, 94, '2024-03-24 01:28:30', '2024-03-24 01:28:30'), +(282, 12, 12, 12, NULL, NULL, 15, 0, 36, 323, 94, '2024-03-24 01:28:30', '2024-03-24 01:28:30'), +(283, 12, 13, 13, 10, NULL, NULL, 0, 37, 324, 95, '2024-03-24 01:30:03', '2024-03-24 01:30:03'), +(284, 12, 13, 13, NULL, 20, NULL, 0, 38, 325, 95, '2024-03-24 01:30:03', '2024-03-24 01:30:03'), +(285, 12, 13, 13, NULL, NULL, 15, 0, 39, 326, 95, '2024-03-24 01:30:03', '2024-03-24 01:30:03'), +(286, 13, 6, 6, 15, NULL, NULL, 0, 16, 327, 96, '2024-03-24 01:32:55', '2024-03-24 01:32:55'), +(287, 13, 6, 6, NULL, 20, NULL, 0, 17, 328, 96, '2024-03-24 01:32:55', '2024-03-24 01:32:55'), +(288, 13, 6, 6, NULL, NULL, 20, 0, 18, 329, 96, '2024-03-24 01:32:55', '2024-03-24 01:32:55'), +(289, 13, 7, 7, 20, NULL, NULL, 0, 19, 330, 97, '2024-03-24 01:34:22', '2024-03-24 01:34:22'), +(290, 13, 7, 7, NULL, 20, NULL, 0, 20, 331, 97, '2024-03-24 01:34:22', '2024-03-24 01:34:22'), +(291, 13, 7, 7, NULL, NULL, 20, 0, 21, 332, 97, '2024-03-24 01:34:22', '2024-03-24 01:34:22'), +(292, 13, 8, 8, 20, NULL, NULL, 0, 22, 333, 98, '2024-03-24 01:35:35', '2024-03-24 01:35:35'), +(293, 13, 8, 8, NULL, 15, NULL, 0, 23, 334, 98, '2024-03-24 01:35:35', '2024-03-24 01:35:35'), +(294, 13, 8, 8, NULL, NULL, 15, 0, 24, 335, 98, '2024-03-24 01:35:35', '2024-03-24 01:35:35'), +(295, 13, 9, 9, 15, NULL, NULL, 0, 25, 336, 99, '2024-03-24 01:36:56', '2024-03-24 01:36:56'), +(296, 13, 9, 9, NULL, 15, NULL, 0, 26, 337, 99, '2024-03-24 01:36:56', '2024-03-24 01:36:56'), +(297, 13, 9, 9, NULL, NULL, 15, 0, 27, 338, 99, '2024-03-24 01:36:56', '2024-03-24 01:36:56'), +(298, 13, 10, 10, 20, NULL, NULL, 0, 28, 339, 100, '2024-03-24 01:38:37', '2024-03-24 01:38:37'), +(299, 13, 10, 10, NULL, 20, NULL, 0, 29, 340, 100, '2024-03-24 01:38:37', '2024-03-24 01:38:37'), +(300, 13, 10, 10, NULL, NULL, 10, 0, 30, 341, 100, '2024-03-24 01:38:37', '2024-03-24 01:38:37'), +(301, 13, 11, 11, 15, NULL, NULL, 0, 31, 342, 101, '2024-03-24 01:39:50', '2024-03-24 01:39:50'), +(302, 13, 11, 11, NULL, 15, NULL, 0, 32, 343, 101, '2024-03-24 01:39:50', '2024-03-24 01:39:50'), +(303, 13, 11, 11, NULL, NULL, 10, 0, 33, 344, 101, '2024-03-24 01:39:50', '2024-03-24 01:39:50'), +(304, 13, 12, 12, 15, NULL, NULL, 0, 34, 345, 102, '2024-03-24 01:40:47', '2024-03-24 01:40:47'), +(305, 13, 12, 12, NULL, 20, NULL, 0, 35, 346, 102, '2024-03-24 01:40:47', '2024-03-24 01:40:47'), +(306, 13, 12, 12, NULL, NULL, 15, 0, 36, 347, 102, '2024-03-24 01:40:47', '2024-03-24 01:40:47'), +(307, 13, 13, 13, 15, NULL, NULL, 0, 37, 348, 103, '2024-03-24 01:41:53', '2024-03-24 01:41:53'), +(308, 13, 13, 13, NULL, 15, NULL, 0, 38, 349, 103, '2024-03-24 01:41:53', '2024-03-24 01:41:53'), +(309, 13, 13, 13, NULL, NULL, 20, 0, 39, 350, 103, '2024-03-24 01:41:53', '2024-03-24 01:41:53'), +(310, 21, 1, 1, 20, NULL, NULL, 0, 1, 351, 104, '2024-03-24 02:56:16', '2024-03-24 02:56:16'), +(311, 21, 1, 1, NULL, 20, NULL, 0, 2, 352, 104, '2024-03-24 02:56:16', '2024-03-24 02:56:16'), +(312, 21, 1, 1, NULL, NULL, 20, 0, 3, 353, 104, '2024-03-24 02:56:16', '2024-03-24 02:56:16'), +(313, 21, 2, 2, 20, NULL, NULL, 0, 4, 357, 105, '2024-03-28 08:33:18', '2024-03-28 08:33:18'), +(314, 21, 2, 2, NULL, 20, NULL, 0, 5, 358, 105, '2024-03-28 08:33:18', '2024-03-28 08:33:18'), +(315, 21, 2, 2, NULL, NULL, 20, 0, 6, 359, 105, '2024-03-28 08:33:18', '2024-03-28 08:33:18'), +(316, 21, 3, 3, 15, NULL, NULL, 0, 7, 360, 106, '2024-03-28 08:34:43', '2024-03-28 08:34:43'), +(317, 21, 3, 3, NULL, 20, NULL, 0, 8, 361, 106, '2024-03-28 08:34:43', '2024-03-28 08:34:43'), +(318, 21, 3, 3, NULL, NULL, 20, 0, 9, 362, 106, '2024-03-28 08:34:43', '2024-03-28 08:34:43'), +(319, 21, 4, 4, 20, NULL, NULL, 0, 10, 363, 107, '2024-03-28 08:36:41', '2024-03-28 08:36:41'), +(320, 21, 4, 4, NULL, 20, NULL, 0, 11, 364, 107, '2024-03-28 08:36:41', '2024-03-28 08:36:41'), +(321, 21, 4, 4, NULL, NULL, 20, 0, 12, 365, 107, '2024-03-28 08:36:41', '2024-03-28 08:36:41'), +(322, 21, 5, 5, 20, NULL, NULL, 0, 13, 366, 108, '2024-03-28 08:37:59', '2024-03-28 08:37:59'), +(323, 21, 5, 5, NULL, 15, NULL, 0, 14, 367, 108, '2024-03-28 08:37:59', '2024-03-28 08:37:59'), +(324, 21, 5, 5, NULL, NULL, 15, 0, 15, 368, 108, '2024-03-28 08:37:59', '2024-03-28 08:37:59'), +(325, 21, 6, 6, 15, NULL, NULL, 0, 16, 369, 109, '2024-03-28 08:39:19', '2024-03-28 08:39:19'), +(326, 21, 6, 6, NULL, 20, NULL, 0, 17, 370, 109, '2024-03-28 08:39:19', '2024-03-28 08:39:19'), +(327, 21, 6, 6, NULL, NULL, 20, 0, 18, 371, 109, '2024-03-28 08:39:19', '2024-03-28 08:39:19'), +(328, 21, 7, 7, 20, NULL, NULL, 0, 19, 372, 110, '2024-03-28 08:40:31', '2024-03-28 08:40:31'), +(329, 21, 7, 7, NULL, 20, NULL, 0, 20, 373, 110, '2024-03-28 08:40:31', '2024-03-28 08:40:31'), +(330, 21, 7, 7, NULL, NULL, 20, 0, 21, 374, 110, '2024-03-28 08:40:31', '2024-03-28 08:40:31'), +(331, 21, 8, 8, 20, NULL, NULL, 0, 22, 375, 111, '2024-03-28 08:41:45', '2024-03-28 08:41:45'), +(332, 21, 8, 8, NULL, 20, NULL, 0, 23, 376, 111, '2024-03-28 08:41:45', '2024-03-28 08:41:45'), +(333, 21, 8, 8, NULL, NULL, 20, 0, 24, 377, 111, '2024-03-28 08:41:45', '2024-03-28 08:41:45'), +(334, 21, 9, 9, 15, NULL, NULL, 0, 25, 378, 112, '2024-03-28 08:42:55', '2024-03-28 08:42:55'), +(335, 21, 9, 9, NULL, 20, NULL, 0, 26, 379, 112, '2024-03-28 08:42:55', '2024-03-28 08:42:55'), +(336, 21, 9, 9, NULL, NULL, 15, 0, 27, 380, 112, '2024-03-28 08:42:55', '2024-03-28 08:42:55'), +(337, 21, 10, 10, 20, NULL, NULL, 0, 28, 381, 113, '2024-03-28 08:44:21', '2024-03-28 08:44:21'), +(338, 21, 10, 10, NULL, 20, NULL, 0, 29, 382, 113, '2024-03-28 08:44:21', '2024-03-28 08:44:21'), +(339, 21, 10, 10, NULL, NULL, 15, 0, 30, 383, 113, '2024-03-28 08:44:21', '2024-03-28 08:44:21'), +(340, 21, 11, 11, 20, NULL, NULL, 0, 31, 384, 114, '2024-03-28 08:45:49', '2024-03-28 08:45:49'), +(341, 21, 11, 11, NULL, 15, NULL, 0, 32, 385, 114, '2024-03-28 08:45:49', '2024-03-28 08:45:49'), +(342, 21, 11, 11, NULL, NULL, 20, 0, 33, 386, 114, '2024-03-28 08:45:49', '2024-03-28 08:45:49'), +(343, 21, 12, 12, 15, NULL, NULL, 0, 34, 387, 115, '2024-03-28 08:46:54', '2024-03-28 08:46:54'), +(344, 21, 12, 12, NULL, 20, NULL, 0, 35, 388, 115, '2024-03-28 08:46:54', '2024-03-28 08:46:54'), +(345, 21, 12, 12, NULL, NULL, 15, 0, 36, 389, 115, '2024-03-28 08:46:54', '2024-03-28 08:46:54'), +(346, 21, 13, 13, 15, NULL, NULL, 0, 37, 390, 116, '2024-03-28 08:48:01', '2024-03-28 08:48:01'), +(347, 21, 13, 13, NULL, 20, NULL, 0, 38, 391, 116, '2024-03-28 08:48:01', '2024-03-28 08:48:01'), +(348, 21, 13, 13, NULL, NULL, 20, 0, 39, 392, 116, '2024-03-28 08:48:01', '2024-03-28 08:48:01'), +(349, 22, 1, 1, 20, NULL, NULL, 0, 1, 393, 117, '2024-03-28 09:00:14', '2024-03-28 09:00:14'), +(350, 22, 1, 1, NULL, 20, NULL, 0, 2, 394, 117, '2024-03-28 09:00:14', '2024-03-28 09:00:14'), +(351, 22, 1, 1, NULL, NULL, 20, 0, 3, 395, 117, '2024-03-28 09:00:14', '2024-03-28 09:00:14'), +(352, 22, 2, 2, 20, NULL, NULL, 0, 4, 396, 118, '2024-03-28 09:04:28', '2024-03-28 09:04:28'), +(353, 22, 2, 2, NULL, 20, NULL, 0, 5, 397, 118, '2024-03-28 09:04:28', '2024-03-28 09:04:28'), +(354, 22, 2, 2, NULL, NULL, 20, 0, 6, 398, 118, '2024-03-28 09:04:28', '2024-03-28 09:04:28'), +(355, 22, 3, 3, 20, NULL, NULL, 0, 7, 399, 119, '2024-03-28 09:05:30', '2024-03-28 09:05:30'), +(356, 22, 3, 3, NULL, 20, NULL, 0, 8, 400, 119, '2024-03-28 09:05:30', '2024-03-28 09:05:30'), +(357, 22, 3, 3, NULL, NULL, 20, 0, 9, 401, 119, '2024-03-28 09:05:30', '2024-03-28 09:05:30'), +(358, 22, 4, 4, 20, NULL, NULL, 0, 10, 402, 120, '2024-03-28 09:06:42', '2024-03-28 09:06:42'), +(359, 22, 4, 4, NULL, 20, NULL, 0, 11, 403, 120, '2024-03-28 09:06:42', '2024-03-28 09:06:42'), +(360, 22, 4, 4, NULL, NULL, 20, 0, 12, 404, 120, '2024-03-28 09:06:42', '2024-03-28 09:06:42'), +(361, 22, 5, 5, 15, NULL, NULL, 0, 13, 405, 121, '2024-03-28 09:08:17', '2024-03-28 09:08:17'), +(362, 22, 5, 5, NULL, 20, NULL, 0, 14, 406, 121, '2024-03-28 09:08:17', '2024-03-28 09:08:17'), +(363, 22, 5, 5, NULL, NULL, 20, 0, 15, 407, 121, '2024-03-28 09:08:17', '2024-03-28 09:08:17'), +(364, 22, 6, 6, 20, NULL, NULL, 0, 16, 408, 122, '2024-03-28 09:13:04', '2024-03-28 09:13:04'), +(365, 22, 6, 6, NULL, 20, NULL, 0, 17, 409, 122, '2024-03-28 09:13:04', '2024-03-28 09:13:04'), +(366, 22, 6, 6, NULL, NULL, 20, 0, 18, 410, 122, '2024-03-28 09:13:04', '2024-03-28 09:13:04'), +(367, 22, 7, 7, 20, NULL, NULL, 0, 19, 411, 123, '2024-03-28 09:14:15', '2024-03-28 09:14:15'), +(368, 22, 7, 7, NULL, 20, NULL, 0, 20, 412, 123, '2024-03-28 09:14:15', '2024-03-28 09:14:15'), +(369, 22, 7, 7, NULL, NULL, 20, 0, 21, 413, 123, '2024-03-28 09:14:15', '2024-03-28 09:14:15'), +(370, 22, 8, 8, 20, NULL, NULL, 0, 22, 414, 124, '2024-03-28 09:15:23', '2024-03-28 09:15:23'), +(371, 22, 8, 8, NULL, 20, NULL, 0, 23, 415, 124, '2024-03-28 09:15:23', '2024-03-28 09:15:23'), +(372, 22, 8, 8, NULL, NULL, 20, 0, 24, 416, 124, '2024-03-28 09:15:23', '2024-03-28 09:15:23'), +(373, 22, 9, 9, 15, NULL, NULL, 0, 25, 417, 125, '2024-03-28 09:16:39', '2024-03-28 09:16:39'), +(374, 22, 9, 9, NULL, 20, NULL, 0, 26, 418, 125, '2024-03-28 09:16:39', '2024-03-28 09:16:39'), +(375, 22, 9, 9, NULL, NULL, 15, 0, 27, 419, 125, '2024-03-28 09:16:39', '2024-03-28 09:16:39'), +(376, 22, 10, 10, 20, NULL, NULL, 0, 28, 420, 126, '2024-03-28 09:17:52', '2024-03-28 09:17:52'), +(377, 22, 10, 10, NULL, 20, NULL, 0, 29, 421, 126, '2024-03-28 09:17:52', '2024-03-28 09:17:52'), +(378, 22, 10, 10, NULL, NULL, 20, 0, 30, 422, 126, '2024-03-28 09:17:52', '2024-03-28 09:17:52'), +(379, 22, 11, 11, 15, NULL, NULL, 0, 31, 423, 127, '2024-03-28 09:18:59', '2024-03-28 09:18:59'), +(380, 22, 11, 11, NULL, 15, NULL, 0, 32, 424, 127, '2024-03-28 09:18:59', '2024-03-28 09:18:59'), +(381, 22, 11, 11, NULL, NULL, 20, 0, 33, 425, 127, '2024-03-28 09:18:59', '2024-03-28 09:18:59'), +(382, 22, 12, 12, 15, NULL, NULL, 0, 34, 426, 128, '2024-03-28 09:20:11', '2024-03-28 09:20:11'), +(383, 22, 12, 12, NULL, 20, NULL, 0, 35, 427, 128, '2024-03-28 09:20:11', '2024-03-28 09:20:11'), +(384, 22, 12, 12, NULL, NULL, 15, 0, 36, 428, 128, '2024-03-28 09:20:11', '2024-03-28 09:20:11'), +(385, 22, 13, 13, 15, NULL, NULL, 0, 37, 429, 129, '2024-03-28 09:21:18', '2024-03-28 09:21:18'), +(386, 22, 13, 13, NULL, 20, NULL, 0, 38, 430, 129, '2024-03-28 09:21:18', '2024-03-28 09:21:18'), +(387, 22, 13, 13, NULL, NULL, 20, 0, 39, 431, 129, '2024-03-28 09:21:18', '2024-03-28 09:21:18'), +(388, 23, 1, 1, 15, NULL, NULL, 0, 1, 432, 130, '2024-04-01 04:02:05', '2024-04-01 04:02:05'), +(389, 23, 1, 1, NULL, 15, NULL, 0, 2, 433, 130, '2024-04-01 04:02:05', '2024-04-01 04:02:05'), +(390, 23, 1, 1, NULL, NULL, 15, 0, 3, 434, 130, '2024-04-01 04:02:05', '2024-04-01 04:02:05'), +(391, 23, 2, 2, 20, NULL, NULL, 0, 4, 435, 131, '2024-04-01 04:03:27', '2024-04-01 04:03:27'), +(392, 23, 2, 2, NULL, 20, NULL, 0, 5, 436, 131, '2024-04-01 04:03:27', '2024-04-01 04:03:27'), +(393, 23, 2, 2, NULL, NULL, 20, 0, 6, 437, 131, '2024-04-01 04:03:27', '2024-04-01 04:03:27'), +(394, 23, 3, 3, 20, NULL, NULL, 0, 7, 438, 132, '2024-04-01 04:04:45', '2024-04-01 04:04:45'), +(395, 23, 3, 3, NULL, 20, NULL, 0, 8, 439, 132, '2024-04-01 04:04:45', '2024-04-01 04:04:45'), +(396, 23, 3, 3, NULL, NULL, 15, 0, 9, 440, 132, '2024-04-01 04:04:45', '2024-04-01 04:04:45'), +(397, 23, 4, 4, 20, NULL, NULL, 0, 10, 441, 133, '2024-04-01 04:06:46', '2024-04-01 04:06:46'), +(398, 23, 4, 4, NULL, 20, NULL, 0, 11, 442, 133, '2024-04-01 04:06:46', '2024-04-01 04:06:46'), +(399, 23, 4, 4, NULL, NULL, 15, 0, 12, 443, 133, '2024-04-01 04:06:46', '2024-04-01 04:06:46'), +(400, 23, 5, 5, 10, NULL, NULL, 0, 13, 444, 134, '2024-04-01 04:09:16', '2024-04-01 04:09:16'), +(401, 23, 5, 5, NULL, 20, NULL, 0, 14, 445, 134, '2024-04-01 04:09:16', '2024-04-01 04:09:16'), +(402, 23, 5, 5, NULL, NULL, 15, 0, 15, 446, 134, '2024-04-01 04:09:16', '2024-04-01 04:09:16'), +(403, 23, 6, 6, 15, NULL, NULL, 0, 16, 447, 135, '2024-04-01 04:10:47', '2024-04-01 04:10:47'), +(404, 23, 6, 6, NULL, 20, NULL, 0, 17, 448, 135, '2024-04-01 04:10:47', '2024-04-01 04:10:47'), +(405, 23, 6, 6, NULL, NULL, 20, 0, 18, 449, 135, '2024-04-01 04:10:47', '2024-04-01 04:10:47'), +(406, 23, 7, 7, 20, NULL, NULL, 0, 19, 450, 136, '2024-04-01 04:12:16', '2024-04-01 04:12:16'), +(407, 23, 7, 7, NULL, 20, NULL, 0, 20, 451, 136, '2024-04-01 04:12:16', '2024-04-01 04:12:16'), +(408, 23, 7, 7, NULL, NULL, 20, 0, 21, 452, 136, '2024-04-01 04:12:16', '2024-04-01 04:12:16'), +(409, 23, 8, 8, 20, NULL, NULL, 0, 22, 453, 137, '2024-04-01 04:13:34', '2024-04-01 04:13:34'), +(410, 23, 8, 8, NULL, 15, NULL, 0, 23, 454, 137, '2024-04-01 04:13:34', '2024-04-01 04:13:34'), +(411, 23, 8, 8, NULL, NULL, 15, 0, 24, 455, 137, '2024-04-01 04:13:34', '2024-04-01 04:13:34'), +(412, 23, 9, 9, 15, NULL, NULL, 0, 25, 456, 138, '2024-04-01 04:17:07', '2024-04-01 04:17:07'), +(413, 23, 9, 9, NULL, 15, NULL, 0, 26, 457, 138, '2024-04-01 04:17:07', '2024-04-01 04:17:07'), +(414, 23, 9, 9, NULL, NULL, 15, 0, 27, 458, 138, '2024-04-01 04:17:07', '2024-04-01 04:17:07'), +(415, 23, 10, 10, 15, NULL, NULL, 0, 28, 459, 139, '2024-04-01 04:18:33', '2024-04-01 04:18:33'), +(416, 23, 10, 10, NULL, 20, NULL, 0, 29, 460, 139, '2024-04-01 04:18:33', '2024-04-01 04:18:33'), +(417, 23, 10, 10, NULL, NULL, 10, 0, 30, 461, 139, '2024-04-01 04:18:33', '2024-04-01 04:18:33'), +(418, 23, 11, 11, 15, NULL, NULL, 0, 31, 462, 140, '2024-04-01 04:20:49', '2024-04-01 04:20:49'), +(419, 23, 11, 11, NULL, 15, NULL, 0, 32, 463, 140, '2024-04-01 04:20:49', '2024-04-01 04:20:49'), +(420, 23, 11, 11, NULL, NULL, 10, 0, 33, 464, 140, '2024-04-01 04:20:49', '2024-04-01 04:20:49'), +(421, 23, 12, 12, 15, NULL, NULL, 0, 34, 465, 141, '2024-04-01 04:23:44', '2024-04-01 04:23:44'), +(422, 23, 12, 12, NULL, 20, NULL, 0, 35, 466, 141, '2024-04-01 04:23:44', '2024-04-01 04:23:44'), +(423, 23, 12, 12, NULL, NULL, 15, 0, 36, 467, 141, '2024-04-01 04:23:44', '2024-04-01 04:23:44'), +(424, 23, 13, 13, 15, NULL, NULL, 0, 37, 468, 142, '2024-04-01 04:26:00', '2024-04-01 04:26:00'), +(425, 23, 13, 13, NULL, 15, NULL, 0, 38, 469, 142, '2024-04-01 04:26:00', '2024-04-01 04:26:00'), +(426, 23, 13, 13, NULL, NULL, 20, 0, 39, 470, 142, '2024-04-01 04:26:00', '2024-04-01 04:26:00'), +(427, 24, 1, 1, 15, NULL, NULL, 0, 1, 471, 143, '2024-04-01 04:39:46', '2024-04-01 04:39:46'), +(428, 24, 1, 1, NULL, 15, NULL, 0, 2, 472, 143, '2024-04-01 04:39:46', '2024-04-01 04:39:46'), +(429, 24, 1, 1, NULL, NULL, 15, 0, 3, 473, 143, '2024-04-01 04:39:46', '2024-04-01 04:39:46'), +(430, 24, 2, 2, 20, NULL, NULL, 0, 4, 474, 144, '2024-04-01 04:41:18', '2024-04-01 04:41:18'), +(431, 24, 2, 2, NULL, 20, NULL, 0, 5, 475, 144, '2024-04-01 04:41:18', '2024-04-01 04:41:18'), +(432, 24, 2, 2, NULL, NULL, 20, 0, 6, 476, 144, '2024-04-01 04:41:18', '2024-04-01 04:41:18'), +(433, 24, 3, 3, 15, NULL, NULL, 0, 7, 477, 145, '2024-04-01 04:42:52', '2024-04-01 04:42:52'), +(434, 24, 3, 3, NULL, 20, NULL, 0, 8, 478, 145, '2024-04-01 04:42:52', '2024-04-01 04:42:52'), +(435, 24, 3, 3, NULL, NULL, 15, 0, 9, 479, 145, '2024-04-01 04:42:52', '2024-04-01 04:42:52'), +(436, 24, 4, 4, 20, NULL, NULL, 0, 10, 480, 146, '2024-04-01 04:44:20', '2024-04-01 04:44:20'), +(437, 24, 4, 4, NULL, 20, NULL, 0, 11, 481, 146, '2024-04-01 04:44:20', '2024-04-01 04:44:20'), +(438, 24, 4, 4, NULL, NULL, 15, 0, 12, 482, 146, '2024-04-01 04:44:20', '2024-04-01 04:44:20'), +(439, 24, 5, 5, 10, NULL, NULL, 0, 13, 483, 147, '2024-04-01 04:45:46', '2024-04-01 04:45:46'), +(440, 24, 5, 5, NULL, 20, NULL, 0, 14, 484, 147, '2024-04-01 04:45:46', '2024-04-01 04:45:46'), +(441, 24, 5, 5, NULL, NULL, 15, 0, 15, 485, 147, '2024-04-01 04:45:46', '2024-04-01 04:45:46'), +(442, 24, 6, 6, 15, NULL, NULL, 0, 16, 486, 148, '2024-04-01 04:47:02', '2024-04-01 04:47:02'), +(443, 24, 6, 6, NULL, 20, NULL, 0, 17, 487, 148, '2024-04-01 04:47:02', '2024-04-01 04:47:02'), +(444, 24, 6, 6, NULL, NULL, 20, 0, 18, 488, 148, '2024-04-01 04:47:02', '2024-04-01 04:47:02'), +(445, 24, 7, 7, 20, NULL, NULL, 0, 19, 489, 149, '2024-04-01 04:48:17', '2024-04-01 04:48:17'), +(446, 24, 7, 7, NULL, 20, NULL, 0, 20, 490, 149, '2024-04-01 04:48:17', '2024-04-01 04:48:17'), +(447, 24, 7, 7, NULL, NULL, 20, 0, 21, 491, 149, '2024-04-01 04:48:17', '2024-04-01 04:48:17'), +(448, 24, 8, 8, 20, NULL, NULL, 0, 22, 492, 150, '2024-04-01 04:51:17', '2024-04-01 04:51:17'), +(449, 24, 8, 8, NULL, 15, NULL, 0, 23, 493, 150, '2024-04-01 04:51:17', '2024-04-01 04:51:17'), +(450, 24, 8, 8, NULL, NULL, 15, 0, 24, 494, 150, '2024-04-01 04:51:17', '2024-04-01 04:51:17'), +(451, 24, 9, 9, 15, NULL, NULL, 0, 25, 495, 151, '2024-04-01 04:53:08', '2024-04-01 04:53:08'), +(452, 24, 9, 9, NULL, 15, NULL, 0, 26, 496, 151, '2024-04-01 04:53:08', '2024-04-01 04:53:08'), +(453, 24, 9, 9, NULL, NULL, 15, 0, 27, 497, 151, '2024-04-01 04:53:08', '2024-04-01 04:53:08'), +(454, 24, 10, 10, 15, NULL, NULL, 0, 28, 498, 152, '2024-04-01 04:54:35', '2024-04-01 04:54:35'), +(455, 24, 10, 10, NULL, 20, NULL, 0, 29, 499, 152, '2024-04-01 04:54:35', '2024-04-01 04:54:35'), +(456, 24, 10, 10, NULL, NULL, 10, 0, 30, 500, 152, '2024-04-01 04:54:35', '2024-04-01 04:54:35'), +(457, 24, 11, 11, 15, NULL, NULL, 0, 31, 501, 153, '2024-04-01 04:57:08', '2024-04-01 04:57:08'), +(458, 24, 11, 11, NULL, 15, NULL, 0, 32, 502, 153, '2024-04-01 04:57:08', '2024-04-01 04:57:08'), +(459, 24, 11, 11, NULL, NULL, 10, 0, 33, 503, 153, '2024-04-01 04:57:08', '2024-04-01 04:57:08'), +(460, 24, 12, 12, 15, NULL, NULL, 0, 34, 504, 154, '2024-04-01 05:00:33', '2024-04-01 05:00:33'), +(461, 24, 12, 12, NULL, 20, NULL, 0, 35, 505, 154, '2024-04-01 05:00:33', '2024-04-01 05:00:33'), +(462, 24, 12, 12, NULL, NULL, 15, 0, 36, 506, 154, '2024-04-01 05:00:33', '2024-04-01 05:00:33'), +(463, 24, 13, 13, 15, NULL, NULL, 0, 37, 507, 155, '2024-04-01 05:01:49', '2024-04-01 05:01:49'), +(464, 24, 13, 13, NULL, 15, NULL, 0, 38, 508, 155, '2024-04-01 05:01:49', '2024-04-01 05:01:49'), +(465, 24, 13, 13, NULL, NULL, 20, 0, 39, 509, 155, '2024-04-01 05:01:49', '2024-04-01 05:01:49'), +(466, 6, 7, 7, 20, NULL, NULL, 0, 19, 510, 156, '2024-04-07 10:38:08', '2024-04-07 10:38:08'), +(467, 6, 7, 7, NULL, 20, NULL, 0, 20, 511, 156, '2024-04-07 10:38:08', '2024-04-07 10:38:08'), +(468, 6, 7, 7, NULL, NULL, 20, 0, 21, 512, 156, '2024-04-07 10:38:08', '2024-04-07 10:38:08'), +(469, 25, 1, 1, 20, NULL, NULL, 0, 1, 513, 157, '2024-04-16 17:16:04', '2024-04-16 17:16:04'), +(470, 25, 1, 1, NULL, 20, NULL, 0, 2, 514, 157, '2024-04-16 17:16:04', '2024-04-16 17:16:04'), +(471, 25, 1, 1, NULL, NULL, 20, 0, 3, 515, 157, '2024-04-16 17:16:04', '2024-04-16 17:16:04'), +(472, 25, 2, 2, 20, NULL, NULL, 0, 4, 516, 158, '2024-04-16 17:17:55', '2024-04-16 17:17:55'), +(473, 25, 2, 2, NULL, 20, NULL, 0, 5, 517, 158, '2024-04-16 17:17:55', '2024-04-16 17:17:55'), +(474, 25, 2, 2, NULL, NULL, 20, 0, 6, 518, 158, '2024-04-16 17:17:55', '2024-04-16 17:17:55'), +(475, 25, 3, 3, 20, NULL, NULL, 0, 7, 519, 159, '2024-04-16 17:47:23', '2024-04-16 17:47:23'), +(476, 25, 3, 3, NULL, 20, NULL, 0, 8, 520, 159, '2024-04-16 17:47:23', '2024-04-16 17:47:23'), +(477, 25, 3, 3, NULL, NULL, 20, 0, 9, 521, 159, '2024-04-16 17:47:23', '2024-04-16 17:47:23'), +(478, 25, 4, 4, 20, NULL, NULL, 0, 10, 522, 160, '2024-04-23 18:55:46', '2024-04-23 18:55:46'), +(479, 25, 4, 4, NULL, 20, NULL, 0, 11, 523, 160, '2024-04-23 18:55:46', '2024-04-23 18:55:46'), +(480, 25, 4, 4, NULL, NULL, 20, 0, 12, 524, 160, '2024-04-23 18:55:46', '2024-04-23 18:55:46'), +(481, 26, 1, 1, 20, NULL, NULL, 1, 1, 525, 161, '2024-04-26 13:28:07', '2024-06-25 05:50:52'), +(482, 26, 1, 1, NULL, 20, NULL, 1, 2, 526, 161, '2024-04-26 13:28:07', '2024-06-25 05:50:52'), +(483, 26, 1, 1, NULL, NULL, 20, 1, 3, 527, 161, '2024-04-26 13:28:07', '2024-06-25 05:50:52'), +(484, 26, 2, 2, 20, NULL, NULL, 0, 4, 528, 162, '2024-04-26 13:49:53', '2024-04-26 13:49:53'), +(485, 26, 2, 2, NULL, 20, NULL, 0, 5, 529, 162, '2024-04-26 13:49:53', '2024-04-26 13:49:53'), +(486, 26, 2, 2, NULL, NULL, 20, 0, 6, 530, 162, '2024-04-26 13:49:53', '2024-04-26 13:49:53'), +(487, 26, 3, 3, 20, NULL, NULL, 0, 7, 531, 163, '2024-04-26 20:45:57', '2024-04-26 20:45:57'), +(488, 26, 3, 3, NULL, 20, NULL, 0, 8, 532, 163, '2024-04-26 20:45:57', '2024-04-26 20:45:57'), +(489, 26, 3, 3, NULL, NULL, 20, 0, 9, 533, 163, '2024-04-26 20:45:57', '2024-04-26 20:45:57'), +(490, 26, 4, 4, 15, NULL, NULL, 0, 10, 534, 164, '2024-04-26 21:05:49', '2024-04-26 21:05:49'), +(491, 26, 4, 4, NULL, 20, NULL, 0, 11, 535, 164, '2024-04-26 21:05:49', '2024-04-26 21:05:49'), +(492, 26, 4, 4, NULL, NULL, 20, 0, 12, 536, 164, '2024-04-26 21:05:49', '2024-04-26 21:05:49'), +(493, 26, 5, 5, 15, NULL, NULL, 0, 13, 537, 165, '2024-04-26 21:19:53', '2024-04-26 21:19:53'), +(494, 26, 5, 5, NULL, 20, NULL, 0, 14, 538, 165, '2024-04-26 21:19:53', '2024-04-26 21:19:53'), +(495, 26, 5, 5, NULL, NULL, 15, 0, 15, 539, 165, '2024-04-26 21:19:53', '2024-04-26 21:19:53'), +(496, 26, 6, 6, 20, NULL, NULL, 0, 16, 540, 166, '2024-04-26 21:35:11', '2024-04-26 21:35:11'), +(497, 26, 6, 6, NULL, 20, NULL, 0, 17, 541, 166, '2024-04-26 21:35:11', '2024-04-26 21:35:11'), +(498, 26, 6, 6, NULL, NULL, 20, 0, 18, 542, 166, '2024-04-26 21:35:11', '2024-04-26 21:35:11'), +(499, 26, 7, 7, 20, NULL, NULL, 0, 19, 543, 167, '2024-04-26 21:49:57', '2024-04-26 21:49:57'), +(500, 26, 7, 7, NULL, 20, NULL, 0, 20, 544, 167, '2024-04-26 21:49:57', '2024-04-26 21:49:57'), +(501, 26, 7, 7, NULL, NULL, 15, 0, 21, 545, 167, '2024-04-26 21:49:57', '2024-04-26 21:49:57'), +(502, 26, 8, 8, 15, NULL, NULL, 0, 22, 546, 168, '2024-04-26 23:32:26', '2024-04-26 23:32:26'), +(503, 26, 8, 8, NULL, 20, NULL, 0, 23, 547, 168, '2024-04-26 23:32:26', '2024-04-26 23:32:26'), +(504, 26, 8, 8, NULL, NULL, 20, 0, 24, 548, 168, '2024-04-26 23:32:26', '2024-04-26 23:32:26'), +(505, 26, 9, 9, 15, NULL, NULL, 0, 25, 549, 169, '2024-04-26 23:53:41', '2024-04-26 23:53:41'), +(506, 26, 9, 9, NULL, 20, NULL, 0, 26, 550, 169, '2024-04-26 23:53:41', '2024-04-26 23:53:41'), +(507, 26, 9, 9, NULL, NULL, 5, 0, 27, 551, 169, '2024-04-26 23:53:41', '2024-04-26 23:53:41'), +(508, 26, 10, 10, 10, NULL, NULL, 0, 28, 552, 170, '2024-04-27 00:25:31', '2024-04-27 00:25:31'), +(509, 26, 10, 10, NULL, 20, NULL, 0, 29, 553, 170, '2024-04-27 00:25:31', '2024-04-27 00:25:31'), +(510, 26, 10, 10, NULL, NULL, 15, 0, 30, 554, 170, '2024-04-27 00:25:31', '2024-04-27 00:25:31'), +(511, 26, 11, 11, 10, NULL, NULL, 0, 31, 555, 171, '2024-04-27 00:41:38', '2024-04-27 00:41:38'), +(512, 26, 11, 11, NULL, 15, NULL, 0, 32, 556, 171, '2024-04-27 00:41:38', '2024-04-27 00:41:38'), +(513, 26, 11, 11, NULL, NULL, 5, 0, 33, 557, 171, '2024-04-27 00:41:38', '2024-04-27 00:41:38'), +(514, 26, 12, 12, 10, NULL, NULL, 0, 34, 558, 172, '2024-04-27 00:59:53', '2024-04-27 00:59:53'), +(515, 26, 12, 12, NULL, 10, NULL, 0, 35, 559, 172, '2024-04-27 00:59:53', '2024-04-27 00:59:53'), +(516, 26, 12, 12, NULL, NULL, 5, 0, 36, 560, 172, '2024-04-27 00:59:53', '2024-04-27 00:59:53'), +(517, 26, 13, 13, 15, NULL, NULL, 0, 37, 561, 173, '2024-04-27 01:18:43', '2024-04-27 01:18:43'), +(518, 26, 13, 13, NULL, 20, NULL, 0, 38, 562, 173, '2024-04-27 01:18:43', '2024-04-27 01:18:43'), +(519, 26, 13, 13, NULL, NULL, 20, 0, 39, 563, 173, '2024-04-27 01:18:43', '2024-04-27 01:18:43'), +(520, 27, 1, 1, 20, NULL, NULL, 0, 1, 564, 174, '2024-04-27 05:50:17', '2024-04-27 05:50:17'), +(521, 27, 1, 1, NULL, 20, NULL, 0, 2, 565, 174, '2024-04-27 05:50:17', '2024-04-27 05:50:17'), +(522, 27, 1, 1, NULL, NULL, 20, 0, 3, 566, 174, '2024-04-27 05:50:17', '2024-04-27 05:50:17'), +(523, 27, 2, 2, 20, NULL, NULL, 0, 4, 567, 175, '2024-04-27 05:59:31', '2024-04-27 05:59:31'), +(524, 27, 2, 2, NULL, 20, NULL, 0, 5, 568, 175, '2024-04-27 05:59:31', '2024-04-27 05:59:31'), +(525, 27, 2, 2, NULL, NULL, 20, 0, 6, 569, 175, '2024-04-27 05:59:31', '2024-04-27 05:59:31'), +(526, 27, 3, 3, 20, NULL, NULL, 0, 7, 570, 176, '2024-04-27 06:08:37', '2024-04-27 06:08:37'), +(527, 27, 3, 3, NULL, 20, NULL, 0, 8, 571, 176, '2024-04-27 06:08:37', '2024-04-27 06:08:37'), +(528, 27, 3, 3, NULL, NULL, 20, 0, 9, 572, 176, '2024-04-27 06:08:37', '2024-04-27 06:08:37'), +(529, 27, 4, 4, 20, NULL, NULL, 0, 10, 573, 177, '2024-04-27 06:19:14', '2024-04-27 06:19:14'), +(530, 27, 4, 4, NULL, 20, NULL, 0, 11, 574, 177, '2024-04-27 06:19:14', '2024-04-27 06:19:14'), +(531, 27, 4, 4, NULL, NULL, 20, 0, 12, 575, 177, '2024-04-27 06:19:14', '2024-04-27 06:19:14'), +(532, 27, 5, 5, 15, NULL, NULL, 0, 13, 576, 178, '2024-04-27 06:28:07', '2024-04-27 06:28:07'), +(533, 27, 5, 5, NULL, 20, NULL, 0, 14, 577, 178, '2024-04-27 06:28:07', '2024-04-27 06:28:07'), +(534, 27, 5, 5, NULL, NULL, 20, 0, 15, 578, 178, '2024-04-27 06:28:07', '2024-04-27 06:28:07'), +(535, 27, 6, 6, 20, NULL, NULL, 0, 16, 579, 179, '2024-04-27 06:36:23', '2024-04-27 06:36:23'), +(536, 27, 6, 6, NULL, 20, NULL, 0, 17, 580, 179, '2024-04-27 06:36:23', '2024-04-27 06:36:23'), +(537, 27, 6, 6, NULL, NULL, 20, 0, 18, 581, 179, '2024-04-27 06:36:23', '2024-04-27 06:36:23'), +(538, 27, 7, 7, 20, NULL, NULL, 0, 19, 582, 180, '2024-04-27 06:47:11', '2024-04-27 06:47:11'); +INSERT INTO `explaining_score` (`id`, `user_id`, `content_id`, `question_id`, `konteks_penjelasan`, `keruntutan`, `kebenaran`, `is_accepted`, `essay_question_id`, `user_answer_id`, `total_score_id`, `created_at`, `updated_at`) VALUES +(539, 27, 7, 7, NULL, 20, NULL, 0, 20, 583, 180, '2024-04-27 06:47:11', '2024-04-27 06:47:11'), +(540, 27, 7, 7, NULL, NULL, 15, 0, 21, 584, 180, '2024-04-27 06:47:11', '2024-04-27 06:47:11'), +(541, 27, 8, 8, 15, NULL, NULL, 0, 22, 585, 181, '2024-04-27 06:59:04', '2024-04-27 06:59:04'), +(542, 27, 8, 8, NULL, 20, NULL, 0, 23, 586, 181, '2024-04-27 06:59:04', '2024-04-27 06:59:04'), +(543, 27, 8, 8, NULL, NULL, 20, 0, 24, 587, 181, '2024-04-27 06:59:04', '2024-04-27 06:59:04'), +(544, 27, 9, 9, 15, NULL, NULL, 0, 25, 588, 182, '2024-04-27 07:08:30', '2024-04-27 07:08:30'), +(545, 27, 9, 9, NULL, 20, NULL, 0, 26, 589, 182, '2024-04-27 07:08:30', '2024-04-27 07:08:30'), +(546, 27, 9, 9, NULL, NULL, 5, 0, 27, 590, 182, '2024-04-27 07:08:30', '2024-04-27 07:08:30'), +(547, 27, 10, 10, 5, NULL, NULL, 0, 28, 591, 183, '2024-04-27 07:20:38', '2024-04-27 07:20:38'), +(548, 27, 10, 10, NULL, 20, NULL, 0, 29, 592, 183, '2024-04-27 07:20:38', '2024-04-27 07:20:38'), +(549, 27, 10, 10, NULL, NULL, 15, 0, 30, 593, 183, '2024-04-27 07:20:38', '2024-04-27 07:20:38'), +(550, 27, 11, 11, 10, NULL, NULL, 0, 31, 594, 184, '2024-04-27 07:29:35', '2024-04-27 07:29:35'), +(551, 27, 11, 11, NULL, 15, NULL, 0, 32, 595, 184, '2024-04-27 07:29:35', '2024-04-27 07:29:35'), +(552, 27, 11, 11, NULL, NULL, 5, 0, 33, 596, 184, '2024-04-27 07:29:35', '2024-04-27 07:29:35'), +(553, 27, 12, 12, 10, NULL, NULL, 0, 34, 597, 185, '2024-04-27 07:39:51', '2024-04-27 07:39:51'), +(554, 27, 12, 12, NULL, 10, NULL, 0, 35, 598, 185, '2024-04-27 07:39:51', '2024-04-27 07:39:51'), +(555, 27, 12, 12, NULL, NULL, 5, 0, 36, 599, 185, '2024-04-27 07:39:51', '2024-04-27 07:39:51'), +(556, 27, 13, 13, 15, NULL, NULL, 0, 37, 600, 186, '2024-04-27 07:47:59', '2024-04-27 07:47:59'), +(557, 27, 13, 13, NULL, 20, NULL, 0, 38, 601, 186, '2024-04-27 07:47:59', '2024-04-27 07:47:59'), +(558, 27, 13, 13, NULL, NULL, 20, 0, 39, 602, 186, '2024-04-27 07:47:59', '2024-04-27 07:47:59'), +(559, 28, 1, 1, 20, NULL, NULL, 0, 1, 603, 187, '2024-04-27 13:40:47', '2024-04-27 13:40:47'), +(560, 28, 1, 1, NULL, 20, NULL, 0, 2, 604, 187, '2024-04-27 13:40:47', '2024-04-27 13:40:47'), +(561, 28, 1, 1, NULL, NULL, 20, 0, 3, 605, 187, '2024-04-27 13:40:47', '2024-04-27 13:40:47'), +(562, 28, 2, 2, 20, NULL, NULL, 0, 4, 606, 188, '2024-04-27 13:49:18', '2024-04-27 13:49:18'), +(563, 28, 2, 2, NULL, 20, NULL, 0, 5, 607, 188, '2024-04-27 13:49:18', '2024-04-27 13:49:18'), +(564, 28, 2, 2, NULL, NULL, 20, 0, 6, 608, 188, '2024-04-27 13:49:18', '2024-04-27 13:49:18'), +(565, 28, 3, 3, 20, NULL, NULL, 0, 7, 609, 189, '2024-04-27 13:57:26', '2024-04-27 13:57:26'), +(566, 28, 3, 3, NULL, 20, NULL, 0, 8, 610, 189, '2024-04-27 13:57:26', '2024-04-27 13:57:26'), +(567, 28, 3, 3, NULL, NULL, 20, 0, 9, 611, 189, '2024-04-27 13:57:26', '2024-04-27 13:57:26'), +(568, 28, 4, 4, 15, NULL, NULL, 0, 10, 612, 190, '2024-04-27 14:05:32', '2024-04-27 14:05:32'), +(569, 28, 4, 4, NULL, 20, NULL, 0, 11, 613, 190, '2024-04-27 14:05:32', '2024-04-27 14:05:32'), +(570, 28, 4, 4, NULL, NULL, 20, 0, 12, 614, 190, '2024-04-27 14:05:32', '2024-04-27 14:05:32'), +(571, 28, 5, 5, 15, NULL, NULL, 0, 13, 615, 191, '2024-04-27 14:13:48', '2024-04-27 14:13:48'), +(572, 28, 5, 5, NULL, 20, NULL, 0, 14, 616, 191, '2024-04-27 14:13:48', '2024-04-27 14:13:48'), +(573, 28, 5, 5, NULL, NULL, 15, 0, 15, 617, 191, '2024-04-27 14:13:48', '2024-04-27 14:13:48'), +(574, 28, 6, 6, 20, NULL, NULL, 0, 16, 618, 192, '2024-04-27 14:21:56', '2024-04-27 14:21:56'), +(575, 28, 6, 6, NULL, 20, NULL, 0, 17, 619, 192, '2024-04-27 14:21:56', '2024-04-27 14:21:56'), +(576, 28, 6, 6, NULL, NULL, 20, 0, 18, 620, 192, '2024-04-27 14:21:56', '2024-04-27 14:21:56'), +(577, 28, 7, 7, 20, NULL, NULL, 0, 19, 621, 193, '2024-04-27 14:30:08', '2024-04-27 14:30:08'), +(578, 28, 7, 7, NULL, 20, NULL, 0, 20, 622, 193, '2024-04-27 14:30:08', '2024-04-27 14:30:08'), +(579, 28, 7, 7, NULL, NULL, 15, 0, 21, 623, 193, '2024-04-27 14:30:08', '2024-04-27 14:30:08'), +(580, 28, 8, 8, 15, NULL, NULL, 0, 22, 624, 194, '2024-04-27 14:37:26', '2024-04-27 14:37:26'), +(581, 28, 8, 8, NULL, 20, NULL, 0, 23, 625, 194, '2024-04-27 14:37:26', '2024-04-27 14:37:26'), +(582, 28, 8, 8, NULL, NULL, 20, 0, 24, 626, 194, '2024-04-27 14:37:26', '2024-04-27 14:37:26'), +(583, 28, 9, 9, 15, NULL, NULL, 0, 25, 627, 195, '2024-04-27 14:46:42', '2024-04-27 14:46:42'), +(584, 28, 9, 9, NULL, 20, NULL, 0, 26, 628, 195, '2024-04-27 14:46:42', '2024-04-27 14:46:42'), +(585, 28, 9, 9, NULL, NULL, 5, 0, 27, 629, 195, '2024-04-27 14:46:42', '2024-04-27 14:46:42'), +(586, 28, 10, 10, 10, NULL, NULL, 0, 28, 630, 196, '2024-04-27 14:54:32', '2024-04-27 14:54:32'), +(587, 28, 10, 10, NULL, 20, NULL, 0, 29, 631, 196, '2024-04-27 14:54:32', '2024-04-27 14:54:32'), +(588, 28, 10, 10, NULL, NULL, 15, 0, 30, 632, 196, '2024-04-27 14:54:32', '2024-04-27 14:54:32'), +(589, 28, 11, 11, 15, NULL, NULL, 0, 31, 633, 197, '2024-04-27 15:02:17', '2024-04-27 15:02:17'), +(590, 28, 11, 11, NULL, 15, NULL, 0, 32, 634, 197, '2024-04-27 15:02:17', '2024-04-27 15:02:17'), +(591, 28, 11, 11, NULL, NULL, 5, 0, 33, 635, 197, '2024-04-27 15:02:17', '2024-04-27 15:02:17'), +(592, 28, 12, 12, 10, NULL, NULL, 0, 34, 636, 198, '2024-04-27 15:09:25', '2024-04-27 15:09:25'), +(593, 28, 12, 12, NULL, 10, NULL, 0, 35, 637, 198, '2024-04-27 15:09:25', '2024-04-27 15:09:25'), +(594, 28, 12, 12, NULL, NULL, 5, 0, 36, 638, 198, '2024-04-27 15:09:26', '2024-04-27 15:09:26'), +(595, 28, 13, 13, 10, NULL, NULL, 0, 37, 639, 199, '2024-04-27 15:16:48', '2024-04-27 15:16:48'), +(596, 28, 13, 13, NULL, 20, NULL, 0, 38, 640, 199, '2024-04-27 15:16:48', '2024-04-27 15:16:48'), +(597, 28, 13, 13, NULL, NULL, 20, 0, 39, 641, 199, '2024-04-27 15:16:48', '2024-04-27 15:16:48'), +(598, 29, 1, 1, 20, NULL, NULL, 0, 1, 642, 200, '2024-04-27 19:24:45', '2024-04-27 19:24:45'), +(599, 29, 1, 1, NULL, 20, NULL, 0, 2, 643, 200, '2024-04-27 19:24:45', '2024-04-27 19:24:45'), +(600, 29, 1, 1, NULL, NULL, 20, 0, 3, 644, 200, '2024-04-27 19:24:45', '2024-04-27 19:24:45'), +(601, 29, 2, 2, 20, NULL, NULL, 0, 4, 645, 201, '2024-04-27 19:36:08', '2024-04-27 19:36:08'), +(602, 29, 2, 2, NULL, 20, NULL, 0, 5, 646, 201, '2024-04-27 19:36:08', '2024-04-27 19:36:08'), +(603, 29, 2, 2, NULL, NULL, 20, 0, 6, 647, 201, '2024-04-27 19:36:08', '2024-04-27 19:36:08'), +(604, 29, 3, 3, 20, NULL, NULL, 0, 7, 648, 202, '2024-04-27 19:46:02', '2024-04-27 19:46:02'), +(605, 29, 3, 3, NULL, 20, NULL, 0, 8, 649, 202, '2024-04-27 19:46:02', '2024-04-27 19:46:02'), +(606, 29, 3, 3, NULL, NULL, 20, 0, 9, 650, 202, '2024-04-27 19:46:02', '2024-04-27 19:46:02'), +(607, 29, 4, 4, 15, NULL, NULL, 0, 10, 651, 203, '2024-04-27 19:53:39', '2024-04-27 19:53:39'), +(608, 29, 4, 4, NULL, 20, NULL, 0, 11, 652, 203, '2024-04-27 19:53:39', '2024-04-27 19:53:39'), +(609, 29, 4, 4, NULL, NULL, 20, 0, 12, 653, 203, '2024-04-27 19:53:39', '2024-04-27 19:53:39'), +(610, 29, 5, 5, 15, NULL, NULL, 0, 13, 654, 204, '2024-04-27 20:01:54', '2024-04-27 20:01:54'), +(611, 29, 5, 5, NULL, 20, NULL, 0, 14, 655, 204, '2024-04-27 20:01:54', '2024-04-27 20:01:54'), +(612, 29, 5, 5, NULL, NULL, 15, 0, 15, 656, 204, '2024-04-27 20:01:54', '2024-04-27 20:01:54'), +(613, 29, 6, 6, 20, NULL, NULL, 0, 16, 657, 205, '2024-04-27 20:10:28', '2024-04-27 20:10:28'), +(614, 29, 6, 6, NULL, 20, NULL, 0, 17, 658, 205, '2024-04-27 20:10:28', '2024-04-27 20:10:28'), +(615, 29, 6, 6, NULL, NULL, 20, 0, 18, 659, 205, '2024-04-27 20:10:28', '2024-04-27 20:10:28'), +(616, 29, 7, 7, 20, NULL, NULL, 0, 19, 660, 206, '2024-04-27 20:19:07', '2024-04-27 20:19:07'), +(617, 29, 7, 7, NULL, 20, NULL, 0, 20, 661, 206, '2024-04-27 20:19:07', '2024-04-27 20:19:07'), +(618, 29, 7, 7, NULL, NULL, 15, 0, 21, 662, 206, '2024-04-27 20:19:07', '2024-04-27 20:19:07'), +(619, 29, 8, 8, 15, NULL, NULL, 0, 22, 663, 207, '2024-04-27 20:27:47', '2024-04-27 20:27:47'), +(620, 29, 8, 8, NULL, 15, NULL, 0, 23, 664, 207, '2024-04-27 20:27:47', '2024-04-27 20:27:47'), +(621, 29, 8, 8, NULL, NULL, 20, 0, 24, 665, 207, '2024-04-27 20:27:47', '2024-04-27 20:27:47'), +(622, 29, 9, 9, 15, NULL, NULL, 0, 25, 666, 208, '2024-04-27 20:37:18', '2024-04-27 20:37:18'), +(623, 29, 9, 9, NULL, 20, NULL, 0, 26, 667, 208, '2024-04-27 20:37:18', '2024-04-27 20:37:18'), +(624, 29, 9, 9, NULL, NULL, 5, 0, 27, 668, 208, '2024-04-27 20:37:18', '2024-04-27 20:37:18'), +(625, 29, 10, 10, 10, NULL, NULL, 0, 28, 669, 209, '2024-04-27 20:45:13', '2024-04-27 20:45:13'), +(626, 29, 10, 10, NULL, 20, NULL, 0, 29, 670, 209, '2024-04-27 20:45:13', '2024-04-27 20:45:13'), +(627, 29, 10, 10, NULL, NULL, 15, 0, 30, 671, 209, '2024-04-27 20:45:13', '2024-04-27 20:45:13'), +(628, 29, 11, 11, 15, NULL, NULL, 0, 31, 672, 210, '2024-04-27 20:55:02', '2024-04-27 20:55:02'), +(629, 29, 11, 11, NULL, 15, NULL, 0, 32, 673, 210, '2024-04-27 20:55:02', '2024-04-27 20:55:02'), +(630, 29, 11, 11, NULL, NULL, 10, 0, 33, 674, 210, '2024-04-27 20:55:02', '2024-04-27 20:55:02'), +(631, 29, 12, 12, 15, NULL, NULL, 0, 34, 680, 211, '2024-04-27 21:08:09', '2024-04-27 21:08:09'), +(632, 29, 12, 12, NULL, 15, NULL, 0, 35, 681, 211, '2024-04-27 21:08:09', '2024-04-27 21:08:09'), +(633, 29, 12, 12, NULL, NULL, 5, 0, 36, 682, 211, '2024-04-27 21:08:09', '2024-04-27 21:08:09'), +(634, 29, 13, 13, 15, NULL, NULL, 0, 37, 683, 212, '2024-04-27 21:16:50', '2024-04-27 21:16:50'), +(635, 29, 13, 13, NULL, 20, NULL, 0, 38, 684, 212, '2024-04-27 21:16:50', '2024-04-27 21:16:50'), +(636, 29, 13, 13, NULL, NULL, 20, 0, 39, 685, 212, '2024-04-27 21:16:50', '2024-04-27 21:16:50'), +(637, 30, 1, 1, 20, NULL, NULL, 0, 1, 686, 213, '2024-04-28 05:54:29', '2024-04-28 05:54:29'), +(638, 30, 1, 1, NULL, 20, NULL, 0, 2, 687, 213, '2024-04-28 05:54:29', '2024-04-28 05:54:29'), +(639, 30, 1, 1, NULL, NULL, 20, 0, 3, 688, 213, '2024-04-28 05:54:29', '2024-04-28 05:54:29'), +(640, 30, 2, 2, 20, NULL, NULL, 0, 4, 689, 214, '2024-04-28 06:08:28', '2024-04-28 06:08:28'), +(641, 30, 2, 2, NULL, 20, NULL, 0, 5, 690, 214, '2024-04-28 06:08:28', '2024-04-28 06:08:28'), +(642, 30, 2, 2, NULL, NULL, 20, 0, 6, 691, 214, '2024-04-28 06:08:28', '2024-04-28 06:08:28'), +(643, 30, 3, 3, 20, NULL, NULL, 0, 7, 692, 215, '2024-04-28 06:16:03', '2024-04-28 06:16:03'), +(644, 30, 3, 3, NULL, 20, NULL, 0, 8, 693, 215, '2024-04-28 06:16:03', '2024-04-28 06:16:03'), +(645, 30, 3, 3, NULL, NULL, 20, 0, 9, 694, 215, '2024-04-28 06:16:03', '2024-04-28 06:16:03'), +(646, 30, 4, 4, 20, NULL, NULL, 0, 10, 695, 216, '2024-04-28 06:24:23', '2024-04-28 06:24:23'), +(647, 30, 4, 4, NULL, 20, NULL, 0, 11, 696, 216, '2024-04-28 06:24:23', '2024-04-28 06:24:23'), +(648, 30, 4, 4, NULL, NULL, 20, 0, 12, 697, 216, '2024-04-28 06:24:23', '2024-04-28 06:24:23'), +(649, 30, 5, 5, 15, NULL, NULL, 0, 13, 698, 217, '2024-04-28 06:32:10', '2024-04-28 06:32:10'), +(650, 30, 5, 5, NULL, 20, NULL, 0, 14, 699, 217, '2024-04-28 06:32:10', '2024-04-28 06:32:10'), +(651, 30, 5, 5, NULL, NULL, 20, 0, 15, 700, 217, '2024-04-28 06:32:10', '2024-04-28 06:32:10'), +(652, 30, 6, 6, 20, NULL, NULL, 0, 16, 701, 218, '2024-04-28 06:42:29', '2024-04-28 06:42:29'), +(653, 30, 6, 6, NULL, 20, NULL, 0, 17, 702, 218, '2024-04-28 06:42:29', '2024-04-28 06:42:29'), +(654, 30, 6, 6, NULL, NULL, 20, 0, 18, 703, 218, '2024-04-28 06:42:29', '2024-04-28 06:42:29'), +(655, 30, 7, 7, 20, NULL, NULL, 0, 19, 704, 219, '2024-04-28 06:50:29', '2024-04-28 06:50:29'), +(656, 30, 7, 7, NULL, 20, NULL, 0, 20, 705, 219, '2024-04-28 06:50:29', '2024-04-28 06:50:29'), +(657, 30, 7, 7, NULL, NULL, 15, 0, 21, 706, 219, '2024-04-28 06:50:29', '2024-04-28 06:50:29'), +(658, 30, 8, 8, 15, NULL, NULL, 0, 22, 707, 220, '2024-04-28 07:02:54', '2024-04-28 07:02:54'), +(659, 30, 8, 8, NULL, 20, NULL, 0, 23, 708, 220, '2024-04-28 07:02:54', '2024-04-28 07:02:54'), +(660, 30, 8, 8, NULL, NULL, 20, 0, 24, 709, 220, '2024-04-28 07:02:54', '2024-04-28 07:02:54'), +(661, 30, 9, 9, 10, NULL, NULL, 0, 25, 710, 221, '2024-04-28 07:11:43', '2024-04-28 07:11:43'), +(662, 30, 9, 9, NULL, 20, NULL, 0, 26, 711, 221, '2024-04-28 07:11:43', '2024-04-28 07:11:43'), +(663, 30, 9, 9, NULL, NULL, 3, 0, 27, 712, 221, '2024-04-28 07:11:43', '2024-04-28 07:11:43'), +(664, 30, 10, 10, 10, NULL, NULL, 0, 28, 713, 222, '2024-04-28 07:23:57', '2024-04-28 07:23:57'), +(665, 30, 10, 10, NULL, 20, NULL, 0, 29, 714, 222, '2024-04-28 07:23:57', '2024-04-28 07:23:57'), +(666, 30, 10, 10, NULL, NULL, 15, 0, 30, 715, 222, '2024-04-28 07:23:57', '2024-04-28 07:23:57'), +(667, 30, 11, 11, 15, NULL, NULL, 0, 31, 716, 223, '2024-04-28 07:34:08', '2024-04-28 07:34:08'), +(668, 30, 11, 11, NULL, 15, NULL, 0, 32, 717, 223, '2024-04-28 07:34:08', '2024-04-28 07:34:08'), +(669, 30, 11, 11, NULL, NULL, 5, 0, 33, 718, 223, '2024-04-28 07:34:08', '2024-04-28 07:34:08'), +(670, 30, 12, 12, 15, NULL, NULL, 0, 34, 719, 224, '2024-04-28 07:42:09', '2024-04-28 07:42:09'), +(671, 30, 12, 12, NULL, 15, NULL, 0, 35, 720, 224, '2024-04-28 07:42:09', '2024-04-28 07:42:09'), +(672, 30, 12, 12, NULL, NULL, 5, 0, 36, 721, 224, '2024-04-28 07:42:09', '2024-04-28 07:42:09'), +(673, 30, 13, 13, 15, NULL, NULL, 0, 37, 722, 225, '2024-04-28 07:52:32', '2024-04-28 07:52:32'), +(674, 30, 13, 13, NULL, 20, NULL, 0, 38, 723, 225, '2024-04-28 07:52:32', '2024-04-28 07:52:32'), +(675, 30, 13, 13, NULL, NULL, 15, 0, 39, 724, 225, '2024-04-28 07:52:32', '2024-04-28 07:52:32'), +(676, 31, 1, 1, 10, NULL, NULL, 0, 1, 725, 226, '2024-04-28 13:56:52', '2024-04-28 13:56:52'), +(677, 31, 1, 1, NULL, 15, NULL, 0, 2, 726, 226, '2024-04-28 13:56:52', '2024-04-28 14:00:14'), +(678, 31, 1, 1, NULL, NULL, 15, 0, 3, 727, 226, '2024-04-28 13:56:52', '2024-04-28 13:56:52'), +(679, 31, 2, 2, 20, NULL, NULL, 0, 4, 728, 227, '2024-04-28 14:03:27', '2024-04-28 14:03:27'), +(680, 31, 2, 2, NULL, 20, NULL, 0, 5, 729, 227, '2024-04-28 14:03:27', '2024-04-28 14:03:27'), +(681, 31, 2, 2, NULL, NULL, 20, 0, 6, 730, 227, '2024-04-28 14:03:27', '2024-04-28 14:03:27'), +(682, 31, 3, 3, 15, NULL, NULL, 0, 7, 731, 228, '2024-04-28 14:07:01', '2024-04-28 14:07:01'), +(683, 31, 3, 3, NULL, 15, NULL, 0, 8, 732, 228, '2024-04-28 14:07:01', '2024-04-28 14:07:01'), +(684, 31, 3, 3, NULL, NULL, 20, 0, 9, 733, 228, '2024-04-28 14:07:01', '2024-04-28 14:07:01'), +(685, 31, 4, 4, 15, NULL, NULL, 0, 10, 734, 229, '2024-04-28 14:11:01', '2024-04-28 14:11:01'), +(686, 31, 4, 4, NULL, 20, NULL, 0, 11, 735, 229, '2024-04-28 14:11:01', '2024-04-28 14:11:01'), +(687, 31, 4, 4, NULL, NULL, 15, 0, 12, 736, 229, '2024-04-28 14:11:01', '2024-04-28 14:11:01'), +(688, 31, 5, 5, 10, NULL, NULL, 0, 13, 737, 230, '2024-04-28 14:14:28', '2024-04-28 14:14:28'), +(689, 31, 5, 5, NULL, 20, NULL, 0, 14, 738, 230, '2024-04-28 14:14:28', '2024-04-28 14:14:28'), +(690, 31, 5, 5, NULL, NULL, 10, 0, 15, 739, 230, '2024-04-28 14:14:28', '2024-04-28 14:14:28'), +(691, 31, 6, 6, 15, NULL, NULL, 0, 16, 740, 231, '2024-04-28 14:17:38', '2024-04-28 14:17:38'), +(692, 31, 6, 6, NULL, 20, NULL, 0, 17, 741, 231, '2024-04-28 14:17:38', '2024-04-28 14:17:38'), +(693, 31, 6, 6, NULL, NULL, 10, 0, 18, 742, 231, '2024-04-28 14:17:38', '2024-04-28 14:17:38'), +(694, 31, 7, 7, 20, NULL, NULL, 0, 19, 743, 232, '2024-04-28 14:20:18', '2024-04-28 14:20:18'), +(695, 31, 7, 7, NULL, 20, NULL, 0, 20, 744, 232, '2024-04-28 14:20:18', '2024-04-28 14:20:18'), +(696, 31, 7, 7, NULL, NULL, 15, 0, 21, 745, 232, '2024-04-28 14:20:18', '2024-04-28 14:20:18'), +(697, 31, 8, 8, 15, NULL, NULL, 0, 22, 746, 233, '2024-04-28 14:23:59', '2024-04-28 14:23:59'), +(698, 31, 8, 8, NULL, 15, NULL, 0, 23, 747, 233, '2024-04-28 14:23:59', '2024-04-28 14:23:59'), +(699, 31, 8, 8, NULL, NULL, 20, 0, 24, 748, 233, '2024-04-28 14:23:59', '2024-04-28 14:23:59'), +(700, 31, 9, 9, 5, NULL, NULL, 0, 25, 749, 234, '2024-04-28 14:27:42', '2024-04-28 14:27:42'), +(701, 31, 9, 9, NULL, 15, NULL, 0, 26, 750, 234, '2024-04-28 14:27:42', '2024-04-28 14:27:42'), +(702, 31, 9, 9, NULL, NULL, 3, 0, 27, 751, 234, '2024-04-28 14:27:42', '2024-04-28 14:27:42'), +(703, 31, 10, 10, 5, NULL, NULL, 0, 28, 752, 235, '2024-04-28 14:30:47', '2024-04-28 14:30:47'), +(704, 31, 10, 10, NULL, 20, NULL, 0, 29, 753, 235, '2024-04-28 14:30:47', '2024-04-28 14:30:47'), +(705, 31, 10, 10, NULL, NULL, 10, 0, 30, 754, 235, '2024-04-28 14:30:47', '2024-04-28 14:30:47'), +(706, 31, 11, 11, 10, NULL, NULL, 0, 31, 755, 236, '2024-04-28 14:33:12', '2024-04-28 14:33:12'), +(707, 31, 11, 11, NULL, 15, NULL, 0, 32, 756, 236, '2024-04-28 14:33:12', '2024-04-28 14:33:12'), +(708, 31, 11, 11, NULL, NULL, 5, 0, 33, 757, 236, '2024-04-28 14:33:12', '2024-04-28 14:33:12'), +(709, 31, 12, 12, 10, NULL, NULL, 0, 34, 758, 237, '2024-04-28 14:36:01', '2024-04-28 14:36:01'), +(710, 31, 12, 12, NULL, 5, NULL, 0, 35, 759, 237, '2024-04-28 14:36:01', '2024-04-28 14:36:01'), +(711, 31, 12, 12, NULL, NULL, 5, 0, 36, 760, 237, '2024-04-28 14:36:01', '2024-04-28 14:36:01'), +(712, 31, 13, 13, 15, NULL, NULL, 0, 37, 761, 238, '2024-04-28 14:38:26', '2024-04-28 14:38:26'), +(713, 31, 13, 13, NULL, 20, NULL, 0, 38, 762, 238, '2024-04-28 14:38:26', '2024-04-28 14:38:26'), +(714, 31, 13, 13, NULL, NULL, 10, 0, 39, 763, 238, '2024-04-28 14:38:26', '2024-04-28 14:38:26'), +(715, 32, 1, 1, 20, NULL, NULL, 0, 1, 764, 239, '2024-05-01 19:22:16', '2024-05-01 19:22:16'), +(716, 32, 1, 1, NULL, 20, NULL, 0, 2, 765, 239, '2024-05-01 19:22:16', '2024-05-01 19:22:16'), +(717, 32, 1, 1, NULL, NULL, 20, 0, 3, 766, 239, '2024-05-01 19:22:16', '2024-05-01 19:22:16'), +(718, 32, 2, 2, 20, NULL, NULL, 0, 4, 767, 240, '2024-05-01 19:43:56', '2024-05-01 19:43:56'), +(719, 32, 2, 2, NULL, 20, NULL, 0, 5, 768, 240, '2024-05-01 19:43:56', '2024-05-01 19:43:56'), +(720, 32, 2, 2, NULL, NULL, 20, 0, 6, 769, 240, '2024-05-01 19:43:56', '2024-05-01 19:43:56'), +(721, 32, 3, 3, 20, NULL, NULL, 0, 7, 770, 241, '2024-05-01 19:56:38', '2024-05-01 19:56:38'), +(722, 32, 3, 3, NULL, 20, NULL, 0, 8, 771, 241, '2024-05-01 19:56:38', '2024-05-01 19:56:38'), +(723, 32, 3, 3, NULL, NULL, 20, 0, 9, 772, 241, '2024-05-01 19:56:38', '2024-05-01 19:56:38'), +(724, 33, 1, 1, 5, NULL, NULL, 0, 1, 773, 242, '2024-05-01 20:41:23', '2024-05-01 20:41:23'), +(725, 33, 1, 1, NULL, 3, NULL, 0, 2, 774, 242, '2024-05-01 20:41:23', '2024-05-01 20:41:23'), +(726, 33, 1, 1, NULL, NULL, 3, 0, 3, 775, 242, '2024-05-01 20:41:23', '2024-05-01 20:41:23'), +(727, 34, 1, 1, 5, NULL, NULL, 0, 1, 776, 243, '2024-05-01 21:31:07', '2024-05-01 21:31:07'), +(728, 34, 1, 1, NULL, 3, NULL, 0, 2, 777, 243, '2024-05-01 21:31:07', '2024-05-01 21:31:07'), +(729, 34, 1, 1, NULL, NULL, 3, 0, 3, 778, 243, '2024-05-01 21:31:07', '2024-05-01 21:31:07'), +(730, 34, 2, 2, 3, NULL, NULL, 0, 4, 779, 244, '2024-05-01 21:42:40', '2024-05-01 21:42:40'), +(731, 34, 2, 2, NULL, 5, NULL, 0, 5, 780, 244, '2024-05-01 21:42:40', '2024-05-01 21:42:40'), +(732, 34, 2, 2, NULL, NULL, 5, 0, 6, 781, 244, '2024-05-01 21:42:40', '2024-05-01 21:42:40'), +(733, 34, 3, 3, 3, NULL, NULL, 0, 7, 782, 245, '2024-05-01 22:36:00', '2024-05-01 22:36:00'), +(734, 34, 3, 3, NULL, 3, NULL, 0, 8, 783, 245, '2024-05-01 22:36:00', '2024-05-01 22:36:00'), +(735, 34, 3, 3, NULL, NULL, 5, 0, 9, 784, 245, '2024-05-01 22:36:00', '2024-05-01 22:36:00'), +(736, 34, 4, 4, 3, NULL, NULL, 0, 10, 785, 246, '2024-05-01 23:28:25', '2024-05-01 23:28:25'), +(737, 34, 4, 4, NULL, 3, NULL, 0, 11, 786, 246, '2024-05-01 23:28:25', '2024-05-01 23:28:25'), +(738, 34, 4, 4, NULL, NULL, 3, 0, 12, 787, 246, '2024-05-01 23:28:25', '2024-05-01 23:28:25'), +(739, 32, 4, 4, 20, NULL, NULL, 0, 10, 788, 247, '2024-05-02 15:11:57', '2024-05-02 15:11:57'), +(740, 32, 4, 4, NULL, 20, NULL, 0, 11, 789, 247, '2024-05-02 15:11:57', '2024-05-02 15:11:57'), +(741, 32, 4, 4, NULL, NULL, 20, 0, 12, 790, 247, '2024-05-02 15:11:57', '2024-05-02 15:11:57'), +(742, 32, 5, 5, 15, NULL, NULL, 0, 13, 791, 248, '2024-05-02 15:20:52', '2024-05-02 15:20:52'), +(743, 32, 5, 5, NULL, 20, NULL, 0, 14, 792, 248, '2024-05-02 15:20:52', '2024-05-02 15:20:52'), +(744, 32, 5, 5, NULL, NULL, 20, 0, 15, 793, 248, '2024-05-02 15:20:52', '2024-05-02 15:20:52'), +(745, 32, 6, 6, 20, NULL, NULL, 0, 16, 794, 249, '2024-05-02 15:30:01', '2024-05-02 15:30:01'), +(746, 32, 6, 6, NULL, 20, NULL, 0, 17, 795, 249, '2024-05-02 15:30:01', '2024-05-02 15:30:01'), +(747, 32, 6, 6, NULL, NULL, 20, 0, 18, 796, 249, '2024-05-02 15:30:01', '2024-05-02 15:30:01'), +(748, 32, 7, 7, 20, NULL, NULL, 0, 19, 797, 250, '2024-05-02 15:39:11', '2024-05-02 15:39:11'), +(749, 32, 7, 7, NULL, 20, NULL, 0, 20, 798, 250, '2024-05-02 15:39:11', '2024-05-02 15:39:11'), +(750, 32, 7, 7, NULL, NULL, 15, 0, 21, 799, 250, '2024-05-02 15:39:11', '2024-05-02 15:39:11'), +(751, 32, 8, 8, 15, NULL, NULL, 0, 22, 800, 251, '2024-05-02 15:47:20', '2024-05-02 15:47:20'), +(752, 32, 8, 8, NULL, 20, NULL, 0, 23, 801, 251, '2024-05-02 15:47:20', '2024-05-02 15:47:20'), +(753, 32, 8, 8, NULL, NULL, 20, 0, 24, 802, 251, '2024-05-02 15:47:20', '2024-05-02 15:47:20'), +(754, 32, 9, 9, 15, NULL, NULL, 0, 25, 803, 252, '2024-05-02 15:56:35', '2024-05-02 15:56:35'), +(755, 32, 9, 9, NULL, 20, NULL, 0, 26, 804, 252, '2024-05-02 15:56:35', '2024-05-02 15:56:35'), +(756, 32, 9, 9, NULL, NULL, 5, 0, 27, 805, 252, '2024-05-02 15:56:35', '2024-05-02 15:56:35'), +(757, 32, 10, 10, 5, NULL, NULL, 0, 28, 806, 253, '2024-05-02 16:04:40', '2024-05-02 16:04:40'), +(758, 32, 10, 10, NULL, 20, NULL, 0, 29, 807, 253, '2024-05-02 16:04:40', '2024-05-02 16:04:40'), +(759, 32, 10, 10, NULL, NULL, 15, 0, 30, 808, 253, '2024-05-02 16:04:40', '2024-05-02 16:04:40'), +(760, 32, 11, 11, 10, NULL, NULL, 0, 31, 809, 254, '2024-05-02 16:13:07', '2024-05-02 16:13:07'), +(761, 32, 11, 11, NULL, 15, NULL, 0, 32, 810, 254, '2024-05-02 16:13:07', '2024-05-02 16:13:07'), +(762, 32, 11, 11, NULL, NULL, 5, 0, 33, 811, 254, '2024-05-02 16:13:07', '2024-05-02 16:13:07'), +(763, 32, 12, 12, 10, NULL, NULL, 0, 34, 812, 255, '2024-05-02 16:21:46', '2024-05-02 16:21:46'), +(764, 32, 12, 12, NULL, 15, NULL, 0, 35, 813, 255, '2024-05-02 16:21:46', '2024-05-02 16:21:46'), +(765, 32, 12, 12, NULL, NULL, 5, 0, 36, 814, 255, '2024-05-02 16:21:47', '2024-05-02 16:21:47'), +(766, 32, 13, 13, 15, NULL, NULL, 0, 37, 815, 256, '2024-05-02 16:30:17', '2024-05-02 16:30:17'), +(767, 32, 13, 13, NULL, 20, NULL, 0, 38, 816, 256, '2024-05-02 16:30:17', '2024-05-02 16:30:17'), +(768, 32, 13, 13, NULL, NULL, 20, 0, 39, 817, 256, '2024-05-02 16:30:17', '2024-05-02 16:30:17'), +(769, 35, 1, 1, 20, NULL, NULL, 0, 1, 818, 257, '2024-05-02 17:21:13', '2024-05-02 17:21:13'), +(770, 35, 1, 1, NULL, 20, NULL, 0, 2, 819, 257, '2024-05-02 17:21:13', '2024-05-02 17:21:13'), +(771, 35, 1, 1, NULL, NULL, 15, 0, 3, 820, 257, '2024-05-02 17:21:13', '2024-05-02 17:21:13'), +(772, 35, 2, 2, 20, NULL, NULL, 0, 4, 821, 258, '2024-05-02 17:30:13', '2024-05-02 17:30:13'), +(773, 35, 2, 2, NULL, 20, NULL, 0, 5, 822, 258, '2024-05-02 17:30:13', '2024-05-02 17:30:13'), +(774, 35, 2, 2, NULL, NULL, 20, 0, 6, 823, 258, '2024-05-02 17:30:13', '2024-05-02 17:30:13'), +(775, 35, 3, 3, 20, NULL, NULL, 0, 7, 824, 259, '2024-05-02 17:38:26', '2024-05-02 17:38:26'), +(776, 35, 3, 3, NULL, 20, NULL, 0, 8, 825, 259, '2024-05-02 17:38:26', '2024-05-02 17:38:26'), +(777, 35, 3, 3, NULL, NULL, 20, 0, 9, 826, 259, '2024-05-02 17:38:26', '2024-05-02 17:38:26'), +(778, 35, 4, 4, 20, NULL, NULL, 0, 10, 827, 260, '2024-05-02 17:46:50', '2024-05-02 17:46:50'), +(779, 35, 4, 4, NULL, 20, NULL, 0, 11, 828, 260, '2024-05-02 17:46:50', '2024-05-02 17:46:50'), +(780, 35, 4, 4, NULL, NULL, 20, 0, 12, 829, 260, '2024-05-02 17:46:50', '2024-05-02 17:46:50'), +(781, 35, 5, 5, 15, NULL, NULL, 0, 13, 830, 261, '2024-05-02 17:56:54', '2024-05-02 17:56:54'), +(782, 35, 5, 5, NULL, 20, NULL, 0, 14, 831, 261, '2024-05-02 17:56:54', '2024-05-02 17:56:54'), +(783, 35, 5, 5, NULL, NULL, 20, 0, 15, 832, 261, '2024-05-02 17:56:54', '2024-05-02 17:56:54'), +(784, 35, 6, 6, 20, NULL, NULL, 0, 16, 833, 262, '2024-05-02 18:04:16', '2024-05-02 18:04:16'), +(785, 35, 6, 6, NULL, 20, NULL, 0, 17, 834, 262, '2024-05-02 18:04:16', '2024-05-02 18:04:16'), +(786, 35, 6, 6, NULL, NULL, 20, 0, 18, 835, 262, '2024-05-02 18:04:16', '2024-05-02 18:04:16'), +(787, 35, 7, 7, 20, NULL, NULL, 0, 19, 836, 263, '2024-05-02 18:20:46', '2024-05-02 18:20:46'), +(788, 35, 7, 7, NULL, 20, NULL, 0, 20, 837, 263, '2024-05-02 18:20:46', '2024-05-02 18:20:46'), +(789, 35, 7, 7, NULL, NULL, 15, 0, 21, 838, 263, '2024-05-02 18:20:46', '2024-05-02 18:20:46'), +(790, 35, 8, 8, 15, NULL, NULL, 0, 22, 839, 264, '2024-05-02 18:43:39', '2024-05-02 18:43:39'), +(791, 35, 8, 8, NULL, 20, NULL, 0, 23, 840, 264, '2024-05-02 18:43:39', '2024-05-02 18:43:39'), +(792, 35, 8, 8, NULL, NULL, 20, 0, 24, 841, 264, '2024-05-02 18:43:39', '2024-05-02 18:43:39'), +(793, 35, 9, 9, 10, NULL, NULL, 0, 25, 842, 265, '2024-05-02 18:55:12', '2024-05-02 18:55:12'), +(794, 35, 9, 9, NULL, 20, NULL, 0, 26, 843, 265, '2024-05-02 18:55:12', '2024-05-02 18:55:12'), +(795, 35, 9, 9, NULL, NULL, 3, 0, 27, 844, 265, '2024-05-02 18:55:12', '2024-05-02 18:55:12'), +(796, 35, 10, 10, 5, NULL, NULL, 0, 28, 845, 266, '2024-05-02 19:17:07', '2024-05-02 19:17:07'), +(797, 35, 10, 10, NULL, 20, NULL, 0, 29, 846, 266, '2024-05-02 19:17:07', '2024-05-02 19:17:07'), +(798, 35, 10, 10, NULL, NULL, 15, 0, 30, 847, 266, '2024-05-02 19:17:07', '2024-05-02 19:17:07'), +(799, 35, 11, 11, 15, NULL, NULL, 0, 31, 848, 267, '2024-05-02 19:27:15', '2024-05-02 19:27:15'), +(800, 35, 11, 11, NULL, 15, NULL, 0, 32, 849, 267, '2024-05-02 19:27:15', '2024-05-02 19:27:15'), +(801, 35, 11, 11, NULL, NULL, 5, 0, 33, 850, 267, '2024-05-02 19:27:15', '2024-05-02 19:27:15'), +(802, 35, 12, 12, 15, NULL, NULL, 0, 34, 851, 268, '2024-05-02 19:41:21', '2024-05-02 19:41:21'), +(803, 35, 12, 12, NULL, 15, NULL, 0, 35, 852, 268, '2024-05-02 19:41:21', '2024-05-02 19:41:21'), +(804, 35, 12, 12, NULL, NULL, 5, 0, 36, 853, 268, '2024-05-02 19:41:21', '2024-05-02 19:41:21'), +(805, 35, 13, 13, 15, NULL, NULL, 0, 37, 854, 269, '2024-05-02 19:50:28', '2024-05-02 19:50:28'), +(806, 35, 13, 13, NULL, 20, NULL, 0, 38, 855, 269, '2024-05-02 19:50:28', '2024-05-02 19:50:28'), +(807, 35, 13, 13, NULL, NULL, 20, 0, 39, 856, 269, '2024-05-02 19:50:28', '2024-05-02 19:50:28'), +(808, 36, 1, 1, 20, NULL, NULL, 0, 1, 857, 270, '2024-05-03 03:21:24', '2024-05-03 03:21:24'), +(809, 36, 1, 1, NULL, 20, NULL, 0, 2, 858, 270, '2024-05-03 03:21:24', '2024-05-03 03:21:24'), +(810, 36, 1, 1, NULL, NULL, 20, 0, 3, 859, 270, '2024-05-03 03:21:24', '2024-05-03 03:21:24'), +(811, 36, 2, 2, 20, NULL, NULL, 0, 4, 860, 271, '2024-05-03 03:29:58', '2024-05-03 03:29:58'), +(812, 36, 2, 2, NULL, 20, NULL, 0, 5, 861, 271, '2024-05-03 03:29:58', '2024-05-03 03:29:58'), +(813, 36, 2, 2, NULL, NULL, 20, 0, 6, 862, 271, '2024-05-03 03:29:58', '2024-05-03 03:29:58'), +(814, 36, 3, 3, 20, NULL, NULL, 0, 7, 863, 272, '2024-05-03 03:39:08', '2024-05-03 03:39:08'), +(815, 36, 3, 3, NULL, 20, NULL, 0, 8, 864, 272, '2024-05-03 03:39:08', '2024-05-03 03:39:08'), +(816, 36, 3, 3, NULL, NULL, 20, 0, 9, 865, 272, '2024-05-03 03:39:08', '2024-05-03 03:39:08'), +(817, 36, 4, 4, 20, NULL, NULL, 0, 10, 866, 273, '2024-05-03 03:55:02', '2024-05-03 03:55:02'), +(818, 36, 4, 4, NULL, 20, NULL, 0, 11, 867, 273, '2024-05-03 03:55:02', '2024-05-03 03:55:02'), +(819, 36, 4, 4, NULL, NULL, 20, 0, 12, 868, 273, '2024-05-03 03:55:02', '2024-05-03 03:55:02'), +(820, 36, 5, 5, 15, NULL, NULL, 0, 13, 869, 274, '2024-05-03 04:04:59', '2024-05-03 04:04:59'), +(821, 36, 5, 5, NULL, 15, NULL, 0, 14, 870, 274, '2024-05-03 04:04:59', '2024-05-03 04:04:59'), +(822, 36, 5, 5, NULL, NULL, 15, 0, 15, 871, 274, '2024-05-03 04:04:59', '2024-05-03 04:04:59'), +(823, 36, 6, 6, 15, NULL, NULL, 0, 16, 872, 275, '2024-05-03 04:13:54', '2024-05-03 04:13:54'), +(824, 36, 6, 6, NULL, 20, NULL, 0, 17, 873, 275, '2024-05-03 04:13:54', '2024-05-03 04:13:54'), +(825, 36, 6, 6, NULL, NULL, 20, 0, 18, 874, 275, '2024-05-03 04:13:54', '2024-05-03 04:13:54'), +(826, 36, 7, 7, 20, NULL, NULL, 0, 19, 875, 276, '2024-05-03 04:31:38', '2024-05-03 04:31:38'), +(827, 36, 7, 7, NULL, 20, NULL, 0, 20, 876, 276, '2024-05-03 04:31:38', '2024-05-03 04:31:38'), +(828, 36, 7, 7, NULL, NULL, 15, 0, 21, 877, 276, '2024-05-03 04:31:38', '2024-05-03 04:31:38'), +(829, 36, 8, 8, 15, NULL, NULL, 0, 22, 878, 277, '2024-05-03 04:51:13', '2024-05-03 04:51:13'), +(830, 36, 8, 8, NULL, 20, NULL, 0, 23, 879, 277, '2024-05-03 04:51:13', '2024-05-03 04:51:13'), +(831, 36, 8, 8, NULL, NULL, 20, 0, 24, 880, 277, '2024-05-03 04:51:13', '2024-05-03 04:51:13'), +(832, 36, 9, 9, 15, NULL, NULL, 0, 25, 881, 278, '2024-05-03 05:01:44', '2024-05-03 05:01:44'), +(833, 36, 9, 9, NULL, 20, NULL, 0, 26, 882, 278, '2024-05-03 05:01:44', '2024-05-03 05:01:44'), +(834, 36, 9, 9, NULL, NULL, 3, 0, 27, 883, 278, '2024-05-03 05:01:44', '2024-05-03 05:01:44'), +(835, 36, 10, 10, 5, NULL, NULL, 0, 28, 884, 279, '2024-05-03 05:24:34', '2024-05-03 05:24:34'), +(836, 36, 10, 10, NULL, 20, NULL, 0, 29, 885, 279, '2024-05-03 05:24:34', '2024-05-03 05:24:34'), +(837, 36, 10, 10, NULL, NULL, 15, 0, 30, 886, 279, '2024-05-03 05:24:34', '2024-05-03 05:24:34'), +(838, 36, 11, 11, 15, NULL, NULL, 0, 31, 887, 280, '2024-05-03 05:43:54', '2024-05-03 05:43:54'), +(839, 36, 11, 11, NULL, 15, NULL, 0, 32, 888, 280, '2024-05-03 05:43:54', '2024-05-03 05:43:54'), +(840, 36, 11, 11, NULL, NULL, 10, 0, 33, 889, 280, '2024-05-03 05:43:54', '2024-05-03 05:43:54'), +(841, 36, 12, 12, 15, NULL, NULL, 0, 34, 890, 281, '2024-05-03 05:55:08', '2024-05-03 05:55:08'), +(842, 36, 12, 12, NULL, 15, NULL, 0, 35, 891, 281, '2024-05-03 05:55:08', '2024-05-03 05:55:08'), +(843, 36, 12, 12, NULL, NULL, 5, 0, 36, 892, 281, '2024-05-03 05:55:08', '2024-05-03 05:55:08'), +(844, 36, 13, 13, 15, NULL, NULL, 0, 37, 893, 282, '2024-05-03 06:05:11', '2024-05-03 06:05:11'), +(845, 36, 13, 13, NULL, 20, NULL, 0, 38, 894, 282, '2024-05-03 06:05:11', '2024-05-03 06:05:11'), +(846, 36, 13, 13, NULL, NULL, 20, 0, 39, 895, 282, '2024-05-03 06:05:11', '2024-05-03 06:05:11'), +(847, 37, 1, 1, 20, NULL, NULL, 0, 1, 896, 283, '2024-06-03 05:10:24', '2024-06-03 05:10:24'), +(848, 37, 1, 1, NULL, 20, NULL, 0, 2, 897, 283, '2024-06-03 05:10:24', '2024-06-03 05:10:24'), +(849, 37, 1, 1, NULL, NULL, 20, 0, 3, 898, 283, '2024-06-03 05:10:24', '2024-06-03 05:10:24'), +(850, 37, 2, 2, 20, NULL, NULL, 0, 4, 899, 284, '2024-06-03 05:31:53', '2024-06-03 05:31:53'), +(851, 37, 2, 2, NULL, 20, NULL, 0, 5, 900, 284, '2024-06-03 05:31:53', '2024-06-03 05:31:53'), +(852, 37, 2, 2, NULL, NULL, 20, 0, 6, 901, 284, '2024-06-03 05:31:53', '2024-06-03 05:31:53'), +(853, 37, 3, 3, 20, NULL, NULL, 0, 7, 902, 285, '2024-06-03 05:41:20', '2024-06-03 05:41:20'), +(854, 37, 3, 3, NULL, 20, NULL, 0, 8, 903, 285, '2024-06-03 05:41:20', '2024-06-03 05:41:20'), +(855, 37, 3, 3, NULL, NULL, 20, 0, 9, 904, 285, '2024-06-03 05:41:20', '2024-06-03 05:41:20'), +(856, 37, 4, 4, 20, NULL, NULL, 0, 10, 905, 286, '2024-06-03 05:50:42', '2024-06-03 05:50:42'), +(857, 37, 4, 4, NULL, 20, NULL, 0, 11, 906, 286, '2024-06-03 05:50:42', '2024-06-03 05:50:42'), +(858, 37, 4, 4, NULL, NULL, 20, 0, 12, 907, 286, '2024-06-03 05:50:42', '2024-06-03 05:50:42'), +(859, 37, 5, 5, 15, NULL, NULL, 0, 13, 908, 287, '2024-06-03 06:06:55', '2024-06-03 06:06:55'), +(860, 37, 5, 5, NULL, 20, NULL, 0, 14, 909, 287, '2024-06-03 06:06:55', '2024-06-03 06:06:55'), +(861, 37, 5, 5, NULL, NULL, 20, 0, 15, 910, 287, '2024-06-03 06:06:55', '2024-06-03 06:06:55'), +(862, 37, 6, 6, 20, NULL, NULL, 0, 16, 911, 288, '2024-06-03 06:24:31', '2024-06-03 06:24:31'), +(863, 37, 6, 6, NULL, 20, NULL, 0, 17, 912, 288, '2024-06-03 06:24:31', '2024-06-03 06:24:31'), +(864, 37, 6, 6, NULL, NULL, 20, 0, 18, 913, 288, '2024-06-03 06:24:31', '2024-06-03 06:24:31'), +(865, 37, 7, 7, 20, NULL, NULL, 0, 19, 914, 289, '2024-06-03 06:39:55', '2024-06-03 06:39:55'), +(866, 37, 7, 7, NULL, 20, NULL, 0, 20, 915, 289, '2024-06-03 06:39:55', '2024-06-03 06:39:55'), +(867, 37, 7, 7, NULL, NULL, 15, 0, 21, 916, 289, '2024-06-03 06:39:55', '2024-06-03 06:39:55'), +(868, 37, 8, 8, 15, NULL, NULL, 0, 22, 917, 290, '2024-06-03 07:01:34', '2024-06-03 07:01:34'), +(869, 37, 8, 8, NULL, 20, NULL, 0, 23, 918, 290, '2024-06-03 07:01:34', '2024-06-03 07:01:34'), +(870, 37, 8, 8, NULL, NULL, 20, 0, 24, 919, 290, '2024-06-03 07:01:34', '2024-06-03 07:01:34'), +(871, 37, 9, 9, 10, NULL, NULL, 0, 25, 920, 291, '2024-06-03 07:09:54', '2024-06-03 07:09:54'), +(872, 37, 9, 9, NULL, 20, NULL, 0, 26, 921, 291, '2024-06-03 07:09:54', '2024-06-03 07:09:54'), +(873, 37, 9, 9, NULL, NULL, 5, 0, 27, 922, 291, '2024-06-03 07:09:54', '2024-06-03 07:09:54'), +(874, 37, 10, 10, 5, NULL, NULL, 0, 28, 923, 292, '2024-06-03 07:25:23', '2024-06-03 07:25:23'), +(875, 37, 10, 10, NULL, 20, NULL, 0, 29, 924, 292, '2024-06-03 07:25:23', '2024-06-03 07:25:23'), +(876, 37, 10, 10, NULL, NULL, 10, 0, 30, 925, 292, '2024-06-03 07:25:23', '2024-06-03 07:25:23'), +(877, 37, 11, 11, 1, NULL, NULL, 1, 31, 926, 293, '2024-06-03 07:33:21', '2024-07-04 20:44:37'), +(878, 37, 11, 11, NULL, 1, NULL, 1, 32, 927, 293, '2024-06-03 07:33:21', '2024-07-04 20:44:37'), +(879, 37, 11, 11, NULL, NULL, 5, 1, 33, 928, 293, '2024-06-03 07:33:21', '2024-07-04 20:44:37'), +(880, 37, 12, 12, 15, NULL, NULL, 0, 34, 929, 294, '2024-06-03 07:41:08', '2024-06-03 07:41:08'), +(881, 37, 12, 12, NULL, 15, NULL, 0, 35, 930, 294, '2024-06-03 07:41:08', '2024-06-03 07:41:08'), +(882, 37, 12, 12, NULL, NULL, 5, 0, 36, 931, 294, '2024-06-03 07:41:08', '2024-06-03 07:41:08'), +(883, 37, 13, 13, 15, NULL, NULL, 0, 37, 932, 295, '2024-06-03 08:05:10', '2024-06-03 08:05:10'), +(884, 37, 13, 13, NULL, 20, NULL, 0, 38, 933, 295, '2024-06-03 08:05:10', '2024-06-03 08:05:10'), +(885, 37, 13, 13, NULL, NULL, 20, 0, 39, 934, 295, '2024-06-03 08:05:10', '2024-06-03 08:05:10'), +(886, 39, 1, 1, 15, NULL, NULL, 0, 1, 935, 296, '2024-06-10 01:56:20', '2024-06-10 01:56:20'), +(887, 39, 1, 1, NULL, 15, NULL, 0, 2, 936, 296, '2024-06-10 01:56:20', '2024-06-10 01:56:20'), +(888, 39, 1, 1, NULL, NULL, 20, 0, 3, 937, 296, '2024-06-10 01:56:20', '2024-06-10 01:56:20'), +(889, 39, 2, 2, 10, NULL, NULL, 0, 4, 938, 297, '2024-06-10 02:01:01', '2024-06-10 02:01:01'), +(890, 39, 2, 2, NULL, 20, NULL, 0, 5, 939, 297, '2024-06-10 02:01:01', '2024-06-10 02:01:01'), +(891, 39, 2, 2, NULL, NULL, 10, 0, 6, 940, 297, '2024-06-10 02:01:01', '2024-06-10 02:01:01'), +(892, 39, 3, 3, 10, NULL, NULL, 0, 7, 941, 298, '2024-06-10 02:06:20', '2024-06-10 02:06:20'), +(893, 39, 3, 3, NULL, 15, NULL, 0, 8, 942, 298, '2024-06-10 02:06:20', '2024-06-10 02:06:20'), +(894, 39, 3, 3, NULL, NULL, 15, 0, 9, 943, 298, '2024-06-10 02:06:20', '2024-06-10 02:06:20'), +(895, 39, 4, 4, 20, NULL, NULL, 0, 10, 944, 299, '2024-06-10 02:16:20', '2024-06-10 02:16:20'), +(896, 39, 4, 4, NULL, 20, NULL, 0, 11, 945, 299, '2024-06-10 02:16:20', '2024-06-10 02:16:20'), +(897, 39, 4, 4, NULL, NULL, 15, 0, 12, 946, 299, '2024-06-10 02:16:20', '2024-06-10 02:16:20'), +(898, 39, 5, 5, 15, NULL, NULL, 0, 13, 947, 300, '2024-06-10 02:27:08', '2024-06-10 02:27:08'), +(899, 39, 5, 5, NULL, 15, NULL, 0, 14, 948, 300, '2024-06-10 02:27:08', '2024-06-10 02:27:08'), +(900, 39, 5, 5, NULL, NULL, 15, 0, 15, 949, 300, '2024-06-10 02:27:08', '2024-06-10 02:27:08'), +(901, 39, 6, 6, 10, NULL, NULL, 0, 16, 950, 301, '2024-06-10 02:33:38', '2024-06-10 02:33:38'), +(902, 39, 6, 6, NULL, 15, NULL, 0, 17, 951, 301, '2024-06-10 02:33:38', '2024-06-10 02:33:38'), +(903, 39, 6, 6, NULL, NULL, 10, 0, 18, 952, 301, '2024-06-10 02:33:38', '2024-06-10 02:33:38'), +(904, 39, 7, 7, 10, NULL, NULL, 0, 19, 953, 302, '2024-06-10 02:37:11', '2024-06-10 02:37:11'), +(905, 39, 7, 7, NULL, 15, NULL, 0, 20, 954, 302, '2024-06-10 02:37:11', '2024-06-10 02:37:11'), +(906, 39, 7, 7, NULL, NULL, 5, 0, 21, 955, 302, '2024-06-10 02:37:11', '2024-06-10 02:37:11'), +(907, 39, 8, 8, 15, NULL, NULL, 0, 22, 956, 303, '2024-06-10 02:45:59', '2024-06-10 02:45:59'), +(908, 39, 8, 8, NULL, 20, NULL, 0, 23, 957, 303, '2024-06-10 02:45:59', '2024-06-10 02:45:59'), +(909, 39, 8, 8, NULL, NULL, 10, 0, 24, 958, 303, '2024-06-10 02:45:59', '2024-06-10 02:45:59'), +(910, 39, 9, 9, 15, NULL, NULL, 0, 25, 959, 304, '2024-06-10 02:53:29', '2024-06-10 02:53:29'), +(911, 39, 9, 9, NULL, 15, NULL, 0, 26, 960, 304, '2024-06-10 02:53:29', '2024-06-10 02:53:29'), +(912, 39, 9, 9, NULL, NULL, 10, 0, 27, 961, 304, '2024-06-10 02:53:29', '2024-06-10 02:53:29'), +(913, 39, 10, 10, 20, NULL, NULL, 0, 28, 962, 305, '2024-06-10 03:07:52', '2024-06-10 03:07:52'), +(914, 39, 10, 10, NULL, 10, NULL, 0, 29, 963, 305, '2024-06-10 03:07:52', '2024-06-10 03:07:52'), +(915, 39, 10, 10, NULL, NULL, 20, 0, 30, 964, 305, '2024-06-10 03:07:52', '2024-06-10 03:07:52'), +(916, 40, 1, 1, 15, NULL, NULL, 0, 1, 965, 306, '2024-06-10 03:14:31', '2024-06-10 03:14:31'), +(917, 40, 1, 1, NULL, 20, NULL, 0, 2, 966, 306, '2024-06-10 03:14:31', '2024-06-10 03:14:31'), +(918, 40, 1, 1, NULL, NULL, 15, 0, 3, 967, 306, '2024-06-10 03:14:31', '2024-06-10 03:14:31'), +(919, 40, 2, 2, 10, NULL, NULL, 0, 4, 968, 307, '2024-06-10 03:22:10', '2024-06-10 03:22:10'), +(920, 40, 2, 2, NULL, 15, NULL, 0, 5, 969, 307, '2024-06-10 03:22:10', '2024-06-10 03:22:10'), +(921, 40, 2, 2, NULL, NULL, 10, 0, 6, 970, 307, '2024-06-10 03:22:10', '2024-06-10 03:22:10'), +(922, 40, 3, 3, 10, NULL, NULL, 0, 7, 971, 308, '2024-06-10 03:29:09', '2024-06-10 03:29:09'), +(923, 40, 3, 3, NULL, 15, NULL, 0, 8, 972, 308, '2024-06-10 03:29:09', '2024-06-10 03:29:09'), +(924, 40, 3, 3, NULL, NULL, 15, 0, 9, 973, 308, '2024-06-10 03:29:09', '2024-06-10 03:29:09'), +(925, 40, 4, 4, 15, NULL, NULL, 0, 10, 974, 309, '2024-06-10 03:35:15', '2024-06-10 03:35:15'), +(926, 40, 4, 4, NULL, 20, NULL, 0, 11, 975, 309, '2024-06-10 03:35:15', '2024-06-10 03:35:15'), +(927, 40, 4, 4, NULL, NULL, 10, 0, 12, 976, 309, '2024-06-10 03:35:15', '2024-06-10 03:35:15'), +(928, 40, 5, 5, 15, NULL, NULL, 0, 13, 977, 310, '2024-06-10 03:42:02', '2024-06-10 03:42:02'), +(929, 40, 5, 5, NULL, 15, NULL, 0, 14, 978, 310, '2024-06-10 03:42:03', '2024-06-10 03:42:03'), +(930, 40, 5, 5, NULL, NULL, 20, 0, 15, 979, 310, '2024-06-10 03:42:03', '2024-06-10 03:42:03'), +(931, 40, 6, 6, 15, NULL, NULL, 0, 16, 980, 311, '2024-06-10 03:50:50', '2024-06-10 03:50:50'), +(932, 40, 6, 6, NULL, 15, NULL, 0, 17, 981, 311, '2024-06-10 03:50:50', '2024-06-10 03:50:50'), +(933, 40, 6, 6, NULL, NULL, 20, 0, 18, 982, 311, '2024-06-10 03:50:50', '2024-06-10 03:50:50'), +(934, 41, 1, 1, 15, NULL, NULL, 0, 1, 983, 312, '2024-06-10 04:00:06', '2024-06-10 04:00:06'), +(935, 41, 1, 1, NULL, 20, NULL, 0, 2, 984, 312, '2024-06-10 04:00:06', '2024-06-10 04:00:06'), +(936, 41, 1, 1, NULL, NULL, 15, 0, 3, 985, 312, '2024-06-10 04:00:06', '2024-06-10 04:00:06'), +(937, 41, 2, 2, 15, NULL, NULL, 0, 4, 986, 313, '2024-06-10 04:05:04', '2024-06-10 04:05:04'), +(938, 41, 2, 2, NULL, 15, NULL, 0, 5, 987, 313, '2024-06-10 04:05:04', '2024-06-10 04:05:04'), +(939, 41, 2, 2, NULL, NULL, 15, 0, 6, 988, 313, '2024-06-10 04:05:04', '2024-06-10 04:05:04'), +(940, 41, 3, 3, 15, NULL, NULL, 0, 7, 989, 314, '2024-06-10 04:12:05', '2024-06-10 04:12:05'), +(941, 41, 3, 3, NULL, 15, NULL, 0, 8, 990, 314, '2024-06-10 04:12:05', '2024-06-10 04:12:05'), +(942, 41, 3, 3, NULL, NULL, 15, 0, 9, 991, 314, '2024-06-10 04:12:05', '2024-06-10 04:12:05'), +(943, 41, 4, 4, 15, NULL, NULL, 0, 10, 992, 315, '2024-06-10 04:18:10', '2024-06-10 04:18:10'), +(944, 41, 4, 4, NULL, 20, NULL, 0, 11, 993, 315, '2024-06-10 04:18:10', '2024-06-10 04:18:10'), +(945, 41, 4, 4, NULL, NULL, 15, 0, 12, 994, 315, '2024-06-10 04:18:10', '2024-06-10 04:18:10'), +(946, 41, 5, 5, 15, NULL, NULL, 0, 13, 995, 316, '2024-06-10 04:28:00', '2024-06-10 04:28:00'), +(947, 41, 5, 5, NULL, 15, NULL, 0, 14, 996, 316, '2024-06-10 04:28:00', '2024-06-10 04:28:00'), +(948, 41, 5, 5, NULL, NULL, 20, 0, 15, 997, 316, '2024-06-10 04:28:00', '2024-06-10 04:28:00'), +(949, 41, 6, 6, 10, NULL, NULL, 0, 16, 998, 317, '2024-06-10 04:31:22', '2024-06-10 04:31:22'), +(950, 41, 6, 6, NULL, 15, NULL, 0, 17, 999, 317, '2024-06-10 04:31:22', '2024-06-10 04:31:22'), +(951, 41, 6, 6, NULL, NULL, 20, 0, 18, 1000, 317, '2024-06-10 04:31:22', '2024-06-10 04:31:22'), +(952, 41, 7, 7, 5, NULL, NULL, 0, 19, 1001, 318, '2024-06-10 04:35:17', '2024-06-10 04:35:17'), +(953, 41, 7, 7, NULL, 15, NULL, 0, 20, 1002, 318, '2024-06-10 04:35:17', '2024-06-10 04:35:17'), +(954, 41, 7, 7, NULL, NULL, 3, 0, 21, 1003, 318, '2024-06-10 04:35:17', '2024-06-10 04:35:17'), +(955, 41, 8, 8, 10, NULL, NULL, 0, 22, 1004, 319, '2024-06-10 04:38:58', '2024-06-10 04:38:58'), +(956, 41, 8, 8, NULL, 15, NULL, 0, 23, 1005, 319, '2024-06-10 04:38:58', '2024-06-10 04:38:58'), +(957, 41, 8, 8, NULL, NULL, 20, 0, 24, 1006, 319, '2024-06-10 04:38:58', '2024-06-10 04:38:58'), +(958, 41, 9, 9, 10, NULL, NULL, 0, 25, 1007, 320, '2024-06-10 04:43:01', '2024-06-10 04:43:01'), +(959, 41, 9, 9, NULL, 15, NULL, 0, 26, 1008, 320, '2024-06-10 04:43:01', '2024-06-10 04:43:01'), +(960, 41, 9, 9, NULL, NULL, 5, 0, 27, 1009, 320, '2024-06-10 04:43:01', '2024-06-10 04:43:01'), +(961, 41, 10, 10, 20, NULL, NULL, 0, 28, 1010, 321, '2024-06-13 03:23:44', '2024-06-13 03:23:44'), +(962, 41, 10, 10, NULL, 15, NULL, 0, 29, 1011, 321, '2024-06-13 03:23:44', '2024-06-13 03:23:44'), +(963, 41, 10, 10, NULL, NULL, 10, 0, 30, 1012, 321, '2024-06-13 03:23:44', '2024-06-13 03:23:44'), +(964, 41, 11, 11, 20, NULL, NULL, 0, 31, 1013, 322, '2024-06-13 03:41:38', '2024-06-13 03:41:38'), +(965, 41, 11, 11, NULL, 15, NULL, 0, 32, 1014, 322, '2024-06-13 03:41:38', '2024-06-13 03:41:38'), +(966, 41, 11, 11, NULL, NULL, 15, 0, 33, 1015, 322, '2024-06-13 03:41:38', '2024-06-13 03:41:38'), +(967, 41, 12, 12, 20, NULL, NULL, 0, 34, 1016, 323, '2024-06-13 03:45:53', '2024-06-13 03:45:53'), +(968, 41, 12, 12, NULL, 15, NULL, 0, 35, 1017, 323, '2024-06-13 03:45:53', '2024-06-13 03:45:53'), +(969, 41, 12, 12, NULL, NULL, 15, 0, 36, 1018, 323, '2024-06-13 03:45:53', '2024-06-13 03:45:53'), +(970, 41, 13, 13, 5, NULL, NULL, 0, 37, 1019, 324, '2024-06-13 03:51:23', '2024-06-13 03:51:23'), +(971, 41, 13, 13, NULL, 10, NULL, 0, 38, 1020, 324, '2024-06-13 03:51:23', '2024-06-13 03:51:23'), +(972, 41, 13, 13, NULL, NULL, 20, 0, 39, 1021, 324, '2024-06-13 03:51:23', '2024-06-13 03:51:23'), +(973, 40, 7, 7, 15, NULL, NULL, 0, 19, 1022, 325, '2024-06-13 05:32:28', '2024-06-13 05:32:28'), +(974, 40, 7, 7, NULL, 20, NULL, 0, 20, 1023, 325, '2024-06-13 05:32:28', '2024-06-13 05:32:28'), +(975, 40, 7, 7, NULL, NULL, 3, 0, 21, 1024, 325, '2024-06-13 05:32:28', '2024-06-13 05:32:28'), +(976, 40, 8, 8, 20, NULL, NULL, 0, 22, 1025, 326, '2024-06-13 05:38:02', '2024-06-13 05:38:02'), +(977, 40, 8, 8, NULL, 20, NULL, 0, 23, 1026, 326, '2024-06-13 05:38:02', '2024-06-13 05:38:02'), +(978, 40, 8, 8, NULL, NULL, 20, 0, 24, 1027, 326, '2024-06-13 05:38:02', '2024-06-13 05:38:02'), +(979, 40, 9, 9, 15, NULL, NULL, 0, 25, 1028, 327, '2024-06-13 05:43:55', '2024-06-13 05:43:55'), +(980, 40, 9, 9, NULL, 20, NULL, 0, 26, 1029, 327, '2024-06-13 05:43:55', '2024-06-13 05:43:55'), +(981, 40, 9, 9, NULL, NULL, 5, 0, 27, 1030, 327, '2024-06-13 05:43:55', '2024-06-13 05:43:55'), +(982, 40, 10, 10, 20, NULL, NULL, 0, 28, 1031, 328, '2024-06-13 05:47:23', '2024-06-13 05:47:23'), +(983, 40, 10, 10, NULL, 15, NULL, 0, 29, 1032, 328, '2024-06-13 05:47:23', '2024-06-13 05:47:23'), +(984, 40, 10, 10, NULL, NULL, 3, 0, 30, 1033, 328, '2024-06-13 05:47:23', '2024-06-13 05:47:23'), +(985, 40, 11, 11, 15, NULL, NULL, 0, 31, 1034, 329, '2024-06-13 05:51:24', '2024-06-13 05:51:24'), +(986, 40, 11, 11, NULL, 20, NULL, 0, 32, 1035, 329, '2024-06-13 05:51:24', '2024-06-13 05:51:24'), +(987, 40, 11, 11, NULL, NULL, 15, 0, 33, 1036, 329, '2024-06-13 05:51:24', '2024-06-13 05:51:24'), +(988, 40, 12, 12, 20, NULL, NULL, 0, 34, 1037, 330, '2024-06-13 05:54:21', '2024-06-13 05:54:21'), +(989, 40, 12, 12, NULL, 20, NULL, 0, 35, 1038, 330, '2024-06-13 05:54:21', '2024-06-13 05:54:21'), +(990, 40, 12, 12, NULL, NULL, 15, 0, 36, 1039, 330, '2024-06-13 05:54:21', '2024-06-13 05:54:21'), +(991, 40, 13, 13, 5, NULL, NULL, 0, 37, 1040, 331, '2024-06-13 05:56:07', '2024-06-13 05:56:07'), +(992, 40, 13, 13, NULL, 10, NULL, 0, 38, 1041, 331, '2024-06-13 05:56:07', '2024-06-13 05:56:07'), +(993, 40, 13, 13, NULL, NULL, 20, 0, 39, 1042, 331, '2024-06-13 05:56:07', '2024-06-13 05:56:07'), +(994, 42, 1, 1, 15, NULL, NULL, 0, 1, 1043, 332, '2024-06-22 05:47:08', '2024-06-22 05:47:08'), +(995, 42, 1, 1, NULL, 20, NULL, 0, 2, 1044, 332, '2024-06-22 05:47:08', '2024-06-22 05:47:08'), +(996, 42, 1, 1, NULL, NULL, 20, 0, 3, 1045, 332, '2024-06-22 05:47:08', '2024-06-22 05:47:08'), +(997, 42, 2, 2, 15, NULL, NULL, 0, 4, 1046, 333, '2024-06-22 06:48:07', '2024-06-22 06:48:07'), +(998, 42, 2, 2, NULL, 15, NULL, 0, 5, 1047, 333, '2024-06-22 06:48:07', '2024-06-22 06:48:07'), +(999, 42, 2, 2, NULL, NULL, 10, 0, 6, 1048, 333, '2024-06-22 06:48:07', '2024-06-22 06:48:07'), +(1000, 43, 1, 1, 19, NULL, NULL, 1, 1, 1049, 334, '2024-06-23 07:50:04', '2024-06-30 10:58:12'), +(1001, 43, 1, 1, NULL, 16, NULL, 1, 2, 1050, 334, '2024-06-23 07:50:04', '2024-06-30 10:58:12'), +(1002, 43, 1, 1, NULL, NULL, 17, 1, 3, 1051, 334, '2024-06-23 07:50:04', '2024-06-30 10:58:12'), +(1003, 43, 2, 2, 15, NULL, NULL, 1, 4, 1052, 335, '2024-06-24 00:51:59', '2024-06-25 07:24:06'), +(1004, 43, 2, 2, NULL, 20, NULL, 1, 5, 1053, 335, '2024-06-24 00:51:59', '2024-06-25 07:24:06'), +(1005, 43, 2, 2, NULL, NULL, 10, 1, 6, 1054, 335, '2024-06-24 00:51:59', '2024-06-25 07:24:06'), +(1006, 44, 1, 1, 18, NULL, NULL, 0, 1, 1055, 336, '2024-06-24 11:40:58', '2024-06-24 11:40:58'), +(1007, 44, 1, 1, NULL, 17, NULL, 0, 2, 1056, 336, '2024-06-24 11:40:58', '2024-06-24 11:40:58'), +(1008, 44, 1, 1, NULL, NULL, 17, 0, 3, 1057, 336, '2024-06-24 11:40:58', '2024-06-24 11:40:58'), +(1009, 44, 2, 2, 18, NULL, NULL, 0, 4, 1058, 337, '2024-06-24 11:44:13', '2024-06-30 20:06:00'), +(1010, 44, 2, 2, NULL, 17, NULL, 0, 5, 1059, 337, '2024-06-24 11:44:13', '2024-06-30 20:06:00'), +(1011, 44, 2, 2, NULL, NULL, 18, 0, 6, 1060, 337, '2024-06-24 11:44:13', '2024-06-30 20:06:00'), +(1012, 43, 3, 3, 16, NULL, NULL, 1, 7, 1063, 338, '2024-06-25 03:25:23', '2024-06-25 08:12:12'), +(1013, 43, 3, 3, NULL, 17, NULL, 1, 8, 1064, 338, '2024-06-25 03:25:23', '2024-06-25 08:12:12'), +(1014, 43, 3, 3, NULL, NULL, 19, 1, 9, 1065, 338, '2024-06-25 03:25:23', '2024-06-25 08:12:12'), +(1015, 43, 4, 4, 20, NULL, NULL, 1, 10, 1066, 339, '2024-06-25 03:26:55', '2024-06-25 08:22:47'), +(1016, 43, 4, 4, NULL, 20, NULL, 1, 11, 1067, 339, '2024-06-25 03:26:55', '2024-06-25 08:22:47'), +(1017, 43, 4, 4, NULL, NULL, 20, 1, 12, 1068, 339, '2024-06-25 03:26:55', '2024-06-25 08:22:47'), +(1018, 43, 5, 5, 20, NULL, NULL, 1, 13, 1096, 340, '2024-06-30 11:19:52', '2024-06-30 11:22:27'), +(1019, 43, 5, 5, NULL, 20, NULL, 1, 14, 1097, 340, '2024-06-30 11:19:52', '2024-06-30 11:22:27'), +(1020, 43, 5, 5, NULL, NULL, 20, 1, 15, 1098, 340, '2024-06-30 11:19:52', '2024-06-30 11:22:27'), +(1021, 43, 6, 6, 18, NULL, NULL, 0, 16, 1099, 341, '2024-06-30 11:21:30', '2024-06-30 11:21:30'), +(1022, 43, 6, 6, NULL, 18, NULL, 0, 17, 1100, 341, '2024-06-30 11:21:30', '2024-06-30 11:21:30'), +(1023, 43, 6, 6, NULL, NULL, 16, 0, 18, 1101, 341, '2024-06-30 11:21:30', '2024-06-30 11:21:30'), +(1024, 45, 1, 1, 20, NULL, NULL, 1, 1, 1102, 342, '2024-06-30 11:24:04', '2024-06-30 20:05:02'), +(1025, 45, 1, 1, NULL, 20, NULL, 1, 2, 1103, 342, '2024-06-30 11:24:04', '2024-06-30 20:05:02'), +(1026, 45, 1, 1, NULL, NULL, 20, 1, 3, 1104, 342, '2024-06-30 11:24:04', '2024-06-30 20:05:02'), +(1027, 45, 2, 2, 18, NULL, NULL, 0, 4, 1105, 343, '2024-07-02 10:29:23', '2024-07-04 20:43:31'), +(1028, 45, 2, 2, NULL, 20, NULL, 0, 5, 1106, 343, '2024-07-02 10:29:23', '2024-07-04 20:43:31'), +(1029, 45, 2, 2, NULL, NULL, 20, 0, 6, 1107, 343, '2024-07-02 10:29:23', '2024-07-04 20:43:31'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `explains` +-- + +CREATE TABLE `explains` ( + `id` bigint UNSIGNED NOT NULL, + `description` text COLLATE utf8mb4_unicode_ci NOT NULL, + `edited_admin` bigint UNSIGNED DEFAULT NULL, + `level_id` int UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `question_id` int DEFAULT NULL, + `code` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `failed_jobs` +-- + +CREATE TABLE `failed_jobs` ( + `id` bigint UNSIGNED NOT NULL, + `uuid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `lessons` +-- + +CREATE TABLE `lessons` ( + `id` int UNSIGNED NOT NULL, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text COLLATE utf8mb4_unicode_ci NOT NULL, + `course_id` int UNSIGNED NOT NULL, + `posisition` int NOT NULL, + `published` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `level_id` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `lessons` +-- + +INSERT INTO `lessons` (`id`, `title`, `description`, `course_id`, `posisition`, `published`, `created_at`, `updated_at`, `level_id`) VALUES +(1, 'Tipe Data, Variabel dan Operator', 'User dapat memahami dan mampu menjelaskan tentang Tipe Data, Variabel, Input-Output, Sequence dan operator ke pemrograman Java', 1, 1, 1, '2023-06-01 04:30:20', '2023-06-01 04:30:20', 1), +(2, 'Sintaks Pemilihan 1', 'User mampu menyelesaikan permasalahan/studi kasus menggunakan sintaks pemilihan 1 dan mengimplementasikannya dalam bahasa pemrograman Java.', 1, 2, 1, '2023-06-01 04:33:08', '2023-06-01 04:33:08', 1), +(3, 'Sintaks Pemilihan 2', 'User memahami tentang operator logika dan mampu menyelesaikan permasalahan dengan menggunakan sintaks pemilihan bersarang', 1, 3, 1, '2023-06-01 04:34:51', '2023-06-01 04:34:51', 1), +(4, 'Sintaks Perulangan 1', 'User memahami serta mampu membuat kode program dalam bahasa Java menggunakan instruksi perulangan.', 1, 4, 1, '2023-06-01 04:35:54', '2023-06-01 04:35:54', 2), +(5, 'Sintaks Perulangan 2', 'User memahami konsep perulangan bersarang dan mampu membuat kode program perulangan bersarang dalam bahasa Java', 1, 5, 1, '2023-06-01 04:38:11', '2023-06-01 04:38:11', 2), +(6, 'Array 1', 'User mampu memahami konsep array satu dimensi, memberikan contoh penggunaan array satu dimensi, membuat kode program menggunakan konsep array satu dimensi', 1, 6, 1, '2023-06-01 04:41:46', '2023-06-01 04:43:34', 2), +(7, 'Array Multidimensi', 'User memahami konsep array 2 dimensi dan membuat kode program dengan menggunakan konsep array multidimensi.', 1, 7, 1, '2023-06-01 04:43:01', '2023-06-01 04:43:01', 3), +(8, 'Fungsi 1', 'User mampu memahami penggunaan fungsi static pada Java dengan parameter dan mengembalikan nilai dan membuat kode program dengan menggunakan fungsi static dan mengeksekusi fungsi tersebut.', 1, 8, 1, '2023-06-01 04:45:03', '2023-06-01 04:45:03', 3), +(9, 'Fungsi 2', 'User memahami konsep fungsi rekursif dan mampu mengimplementasikan fungsi rekursif dalam kode program', 1, 9, 1, '2023-06-01 04:46:33', '2023-06-01 04:46:33', 3); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `levels` +-- + +CREATE TABLE `levels` ( + `id` int UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `course_id` int UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `description` text COLLATE utf8mb4_unicode_ci NOT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `levels` +-- + +INSERT INTO `levels` (`id`, `name`, `course_id`, `created_at`, `updated_at`, `description`, `deleted_at`) VALUES +(1, 'Easy', 1, '2023-02-28 03:27:44', '2023-03-06 02:30:00', 'Start your journey with easiest step', NULL), +(2, 'Medium', 1, '2023-02-28 03:28:42', '2023-02-28 03:28:42', 'Step forward to medium level', NULL), +(3, 'Hard', 1, '2023-02-28 03:28:59', '2023-02-28 03:28:59', 'You did it! push your limit.', NULL), +(5, 'mudah', 1, '2023-03-06 02:00:35', '2023-03-06 02:03:41', 'as', '2023-03-06 02:03:41'), +(6, 'mudah', 1, '2023-03-06 02:01:02', '2023-03-06 02:03:57', 'kjk', '2023-03-06 02:03:57'), +(7, 'advance', 1, '2023-07-02 20:35:39', '2023-07-02 20:36:05', 'advance your programming skill', '2023-07-02 20:36:05'), +(8, 'abca', 1, '2024-03-28 09:55:02', '2024-03-28 09:55:10', 'abc', '2024-03-28 09:55:10'), +(9, 'abc', 1, '2024-03-28 12:29:10', '2024-03-28 12:29:14', 'aa', '2024-03-28 12:29:14'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `migrations` +-- + +CREATE TABLE `migrations` ( + `id` int UNSIGNED NOT NULL, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `migrations` +-- + +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES +(1, '2014_10_12_000000_create_users_table', 1), +(2, '2014_10_12_100000_create_password_resets_table', 1), +(3, '2019_08_19_000000_create_failed_jobs_table', 1), +(4, '2019_12_14_000001_create_personal_access_tokens_table', 1), +(5, '2022_05_30_114700_create_roles_table', 1), +(6, '2022_05_30_115524_create_courses_table', 1), +(7, '2022_05_30_120348_create_lessons_table', 1), +(8, '2022_05_30_141552_create_contents_table', 1), +(9, '2022_05_30_143915_add_role_to_user_column', 1), +(10, '2022_05_30_150023_create_questions_table', 1), +(11, '2022_05_30_180245_create_student_course_table', 1), +(12, '2022_05_31_015033_create_answers_table', 1), +(13, '2022_05_31_023057_add_nullable_to_answers', 1), +(14, '2022_05_31_030846_add_null_to_question', 1), +(15, '2022_05_31_070600_create_user_scores_table', 1), +(16, '2022_05_31_151123_create_badge_settings_table', 2), +(17, '2022_06_02_055725_change_column_in_contents', 3), +(18, '2022_06_13_155450_add_column_is_essay_to_question_table', 4), +(19, '2022_06_16_105917_change_column_question_on_question_table', 4), +(20, '2022_06_20_121634_create_user_code_test_score_table', 5), +(21, '2022_06_20_152419_add_question_id_on_user_scores_table', 5), +(22, '2022_07_19_073038_add_column_timer_to_question_table', 6), +(23, '2022_07_25_112343_add_column_start_time_to_user_scores_table', 7), +(24, '2022_07_25_125721_create_table_code_error_logs', 7), +(25, '2022_07_25_214126_add_column_on_timer_on_code_error_logs', 8), +(26, '2022_07_25_220037_add_column_on_timer_on_user_scores_table', 8), +(27, '2023_02_28_031855_create_levels_table', 9), +(28, '2023_02_28_062544_add_description_to_levels_table', 10), +(29, '2023_03_10_073837_create_table_code_history_logs', 11), +(30, '2023_03_10_074326_create_code_history_logs_table', 12), +(31, '2023_03_17_071601_create_explains_table', 13), +(32, '2023_05_18_144701_create_essay_question_table', 14), +(33, '2023_05_18_145219_create_user_answer_table', 15), +(34, '2023_05_23_060818_create_wondering_score_table', 16), +(35, '2023_05_23_061330_create_explaining_score_table', 17), +(36, '2023_05_28_125135_create_total_score_table', 18), +(37, '2023_06_23_042517_add_class_to_users_table', 19), +(38, '2024_03_22_175814_add_additional_answers_to_essay_question_table', 20), +(39, '2024_03_22_180425_add_additional_answers_to_essay_question_table', 21); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `password_resets` +-- + +CREATE TABLE `password_resets` ( + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `password_resets` +-- + +INSERT INTO `password_resets` (`email`, `token`, `created_at`) VALUES +('fransiskaly@gmail.com', '$2y$10$mio8nnHOnS0FKHjcDkEF0O1d8h7QhKHqRLgUcT/AUcM2e9/BQo2Ce', '2023-02-14 05:51:57'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `personal_access_tokens` +-- + +CREATE TABLE `personal_access_tokens` ( + `id` bigint UNSIGNED NOT NULL, + `tokenable_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `tokenable_id` bigint UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, + `abilities` text COLLATE utf8mb4_unicode_ci, + `last_used_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `questions` +-- + +CREATE TABLE `questions` ( + `id` int UNSIGNED NOT NULL, + `content_id` int UNSIGNED NOT NULL, + `question_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `question` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `image` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `score` int NOT NULL, + `hint` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `is_essay` int NOT NULL DEFAULT '0', + `timer` int DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `questions` +-- + +INSERT INTO `questions` (`id`, `content_id`, `question_name`, `question`, `image`, `score`, `hint`, `created_at`, `updated_at`, `deleted_at`, `is_essay`, `timer`) VALUES +(1, 1, 'Tipe Data, Variabel dan Operator', '

Studi Kasus:

Lengkapilah kode program berdasarkan perintah berikut :

  • Tambahkan tipe data untuk variabel panjang, lebar, tinggi, Vbalok dan Lbalok berdasarkan nilai yang ada.
  • Tambahkan rumus volume balok “panjang * lebar * tinggi” pada variabel Vbalok
  • Tambahkan rumus volume balok “2*(panjang * lebar + panjang * tinggi + lebar * tinggi)” pada variabel Lbalok

 

public class TipeData {\n      public static void main(String args[]) {\n             … panjang, lebar, tinggi, vBalok, lBalok;\n             \n             panjang = 10;\n             lebar = 6;\n             tinggi = 7;\n             \n             // volume balok\n             vBalok = ……;\n             \n             // Luas permukaan balok\n             lBalok = …..;\n             \n             System.out.print(\"Volume balok = \"+ vBalok + \", \");\n             System.out.print(\"Luas permukaan balok = \"+ lBalok);\n             \n      }\n}\n
', NULL, 30, NULL, '2023-06-01 08:11:49', '2024-02-26 23:45:59', NULL, 1, NULL), +(2, 2, 'IF-ELSE Angka', '

Studi Kasus:

Buatlah kondisi dimana apabila variabel nilai lebih dari 70 maka akan menampilkan \"Selamat anda lulus!\"



public class Angka {\r\n      public static void main(String args[]) {\r\n            int nilai = 80;\r\n            \r\n            if(nilai > 70) {\r\n                   System.out.print(\"…\");\r\n            }\r\n      }\r\n \r\n}\r\n
', NULL, 30, NULL, '2023-06-01 08:14:09', '2024-03-23 11:55:29', NULL, 1, NULL), +(3, 3, 'Sintaks IF-ELSE IF-ELSE', '

Studi Kasus:

Buatlah kondisi dimana apabila variabel itemCost lebih dari 24 maka akan menampilkan \"High Value Item!\"

sedangkan apabila dibawah dari nilai variabel tersebut akan menampilkan \"Low Value Item!\"

 

public class Order {\r\n        \r\n        public static void main(String[] args) {\r\n                double itemCost = 30.99;\r\n                String order = \"\";\r\n                if(itemCost > 24.00) {\r\n                         order = \". . .\";\r\n                } else {\r\n                         order = \"...”;\r\n                }\r\n                System.out.print(order);\r\n        }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 08:16:58', '2024-03-23 11:57:25', NULL, 1, NULL), +(4, 4, 'Pemilihan Switch-Case', '

Studi Kasus :

Buatlah program dengan menggunakan pemilihan switch-case, dimana berlaku aturan sebagai berikut :

  • Ketika shipping bernilai \"Regular\"shippingCost harus 0.
  • Ketika shipping bernilai \"Express\"shippingCost harus 1.75.
  • Nilai default harus 0.50 untuk shippingCost.
 \r\npublic class OrderCase {\r\n           \r\n           public static void main(String[] args) {\r\n             \r\n                 String shipping = \"Express\";\r\n                 double shippingCost;\r\n             \r\n               switch (shipping) {\r\n               case \"Regular\": \r\n                 // isi disini\r\n                 break;\r\n               case \"Express\": \r\n                 // isi disini\r\n                 break;\r\n               default:\r\n                  //isi disini\r\n             }\r\n             System.out.print(\"Shipping cost: \" + shippingCost);\r\n             \r\n           }\r\n}\r\n


', NULL, 30, NULL, '2023-06-01 08:18:42', '2024-03-23 11:59:15', NULL, 1, NULL), +(5, 5, 'Pemilihan Bersarang', '

Studi Kasus :

 

Sebuah toko buku sedang mengadakan diskon akhir tahun dengan ketentuan sebagai berikut :

  • Jika pembeli memiliki kartu member, maka pembeli dengan total belanja kurang dari Rp.100.000 mendapatkan diskon 10%, pembeli dengan total belanja Rp.100.000 – Rp.150.000 mendapatkan diskon 15%, sedangkan pembeli dengan total belanja lebih dari Rp.150.000 mendapatkan diskon 20%.
  • Jika pembeli tidak memiliki kartu member, maka pembeli dengan total belanja kurang dari Rp.100.000 mendapatkan diskon 5%, pembeli dengan total belanja Rp.100.000 – Rp.150.000 mendapatkan diskon 10%, sedangkan pembeli dengan total belanja lebih dari Rp.150.000 mendapatkan diskon 15%

Buatlah kode program dari studi kasus tersebut menggunakan pengkondisian bersarang

 

public class BookStore {\r\n \r\n      public static void main(String args[]) {\r\n            boolean isMember = true;\r\n            int total = 200000;\r\n            int diskon =0;\r\n            \r\n            if(isMember == true) {\r\n                   // tulis disini\r\n            } else {\r\n                   //tulis disini\r\n \r\n            }\r\n            System.out.print(\"diskon yang didapatkan adalah \" + diskon + \"%\");\r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 08:21:08', '2024-03-23 12:01:06', NULL, 1, NULL), +(6, 6, 'Perulangan For', '

Studi Kasus:

Buatlah perulangan Loop For sampai memunculkan angka 1-5!


public class LuckyFive {\r\n         \r\n         public static void main(String[] args) {\r\n                 int number = 6;\r\n                 for(int i = 1; i < number; i++) {\r\n                          //print angka\r\n                 }\r\n         }\r\n

}

', NULL, 30, NULL, '2023-06-01 08:22:55', '2024-03-23 12:02:56', NULL, 1, NULL), +(7, 7, 'Perulangan While', '

Studi Kasus:

Buatlah perulangan Loop sampai dengan memunculkan angka 1-5!

public class LuckyFiveSecond {\r\n         \r\n          public static void main(String[] args) {\r\n               int number = 6;\r\n               int i = 1;\r\n               // isikan perulangan while\r\n \r\n          }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:14:49', '2024-03-23 12:04:43', NULL, 1, NULL), +(8, 8, 'Perulangan Do-While', '

Studi Kasus:

Buatlah program menggunakan perulangan do-while untuk menampilkan deret fibonnaci sebanyak 6 dengan angka pertama 0 dan angka kedua 1

 

public class Fibonacci {\r\n      public static void main(String[] args) {\r\n            int n = 6;\r\n            int first = ...;\r\n            int second = ...;\r\n            int i = 1;\r\n            \r\n            System.out.print(\"Deret Fibonacci: \\n\");\r\n            System.out.print(first + \" \" + second + \" \");\r\n            \r\n            do {\r\n                   int next = first + second;\r\n                   System.out.print(next + \" \");\r\n                   first = second ;\r\n                   second = next;\r\n                   i++;\r\n            } while (i <= n);\r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:16:41', '2024-03-23 12:06:51', NULL, 1, NULL), +(9, 9, 'Perulangan bersarang piramid', '

Studi Kasus:

Buatlah program menggunakan perulangan do-while yang dapat menghasilkan keluaran seperti pada gambar berikut!

 

public class SecondPiramid {\r\n      public static void main(String args[]) {\r\n             String output = \"\";\r\n             for([isi iterasi]) {\r\n                    for([isi iterasi]) {\r\n                          output += \"*\";\r\n                    }\r\n                    output += \"\\n\";\r\n             }\r\n             System.out.print(output);\r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:19:46', '2024-03-23 12:08:41', NULL, 1, NULL), +(10, 10, 'Array satu dimensi', '

Studi Kasus:

Buatlah data array dari data berikut!

\"Opinion\", \"Tech\", \"Science\", \"Health\"\r\n

Kemudian tampilkan data tersebut menjadi data String!

Serta tambahkan import java.util.Arrays!

 

import java.util.Arrays;\r\n \r\npublic class NewsFeed {\r\n         \r\n         public static void main(String[] args) {\r\n                 String[] topics = {//isi dengan data array sesuai perintah};\r\n                 String topicArray = Arrays.toString(topics);\r\n                 System.out.print(topicArray);\r\n         }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:21:53', '2024-03-23 12:10:41', NULL, 1, NULL), +(11, 11, 'Array Multidimensi', '

Studi Kasus :

Seorang guru membutuhkan program untuk mengelola nilai-nilai siswanya. Program tersebut mampu untuk menghitung nilai rata-rata dengan memanfaatkan array dua dimensi. Buatlah kode program untuk kebutuhan guru tersebut!

 

public class Average {\r\n      public static void main(String args[]) {\r\n             double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}};\r\n             double total = 0;\r\n             int jumlahData = 0;\r\n             \r\n             for(int i = 0; i < nilai.length; i++) {\r\n                   for([isi iterasi]) {\r\n                          total += nilai[i][j];\r\n                          jumlahData++;\r\n                   }\r\n             }\r\n             double rataRata = total/jumlahData; \r\n             System.out.print(rataRata);\r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:27:43', '2024-03-23 12:12:23', NULL, 1, NULL), +(12, 12, 'Fungsi Static', '

Studi Kasus:

Buatlah sebuah class Lingkaran yang didalamnya terdapat fungsi untuk menghitung luas dan keliling lingkaran!

 

public class Lingkaran {\r\n      public static double luasLingkaran(double phi, int r) {\r\n             double luas = phi * r *r;\r\n             //tulis pengembalian nilai\r\n      }\r\n      \r\n      public static double kelilingLingkaran(double phi, int r) {\r\n            double keliling = ….;\r\n             return keliling;\r\n      }\r\n      \r\n      public static void tampil() {\r\n             double phi = 3.14;\r\n             int r = 14;\r\n             double luas = luasLingkaran([isikan parameter]);\r\n             double keliling = kelilingLingkaran([isikan parameter]);\r\n             System.out.print(\"Luas Lingkaran = \" + luas + \"\\n\" + \"Keliling Lingkaran = \" + keliling);\r\n      }\r\n      \r\n      public static void main(String args[]) {\r\n             //panggil fungsi tampil\r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:31:05', '2024-03-23 12:14:42', NULL, 1, NULL), +(13, 13, 'Fungsi Rekursif', '

Studi Kasus :

Tentukanlah berapa banyak tabungan setelah 5 tahun dengan bunga 6% per tahun jika saldo awal sebesar Rp.1.000.000. Buatlah program dengan memanfaatkan fungsi rekursif

 

public class Bank {\r\n      static double hitungBunga(...) {\r\n             if(tahun == 0) {\r\n                   return saldo;\r\n             } else {\r\n                   double bungaTahunan = ...;\r\n                   double total = saldo + ...;\r\n                   return hitungBunga(total, bunga, tahun - 1);\r\n             }\r\n      }\r\n      \r\n      public static void main(String args[]) {\r\n             double saldoAwal = 1000000;\r\n             int tahun = ...;\r\n             double bunga = ...;\r\n             \r\n             System.out.print(\"Jumlah uang setelah \" + tahun + \" tahun: \" + hitungBunga(saldoAwal,bunga, tahun));\r\n             \r\n      }\r\n}\r\n
', NULL, 30, NULL, '2023-06-01 18:37:39', '2024-03-23 12:16:22', NULL, 1, NULL), +(14, 13, 'Rekursif Bank edit', '

Studi Kasus :

Tentukanlah berapa banyak tabungan setelah 5 tahun dengan bunga 6% per tahun jika saldo awal sebesar Rp.1.000.000. Buatlah program dengan memanfaatkan fungsi rekursif

 

public class Bank {\r\n  static double hitungBunga(...) {\r\n  \r\n               if(tahun == 0) {\r\n  \r\n                     return saldo;\r\n  \r\n               } else {\r\n  \r\n                     double bungaTahunan = ...;\r\n  \r\n                     double total = saldo + ...;\r\n\r\n                   return hitungBunga(total, bunga, tahun - 1);\r\n\r\n             }\r\n\r\n      }\r\n\r\n      \r\n\r\n      public static void main(String args[]) {\r\n\r\n             double saldoAwal = 1000000;\r\n\r\n             int tahun = ...;\r\n\r\n             double bunga = ...;\r\n\r\n             \r\n\r\n             System.out.print(\"Jumlah uang setelah \" + tahun + \" tahun: \" + hitungBunga(saldoAwal,bunga, tahun));\r\n\r\n             \r\n\r\n      }\r\n\r\n}\r\n

      

', NULL, 30, NULL, '2023-07-02 20:41:22', '2023-07-02 20:42:13', '2023-07-02 20:42:13', 1, NULL), +(15, 1, 'Tipe Data, Variabel dan Operator', '


', NULL, 30, NULL, '2024-02-26 07:11:38', '2024-02-26 07:12:27', '2024-02-26 07:12:27', 0, NULL), +(16, 1, 'Tipe Data, Variabel dan Operator', '


', NULL, 30, NULL, '2024-02-26 07:11:45', '2024-02-26 23:48:22', '2024-02-26 23:48:22', 1, NULL), +(17, 2, 'If else', '


', NULL, 30, NULL, '2024-03-22 11:21:16', '2024-03-22 11:29:52', '2024-03-22 11:29:52', 1, NULL), +(18, 2, 'If else', '


', NULL, 30, NULL, '2024-03-22 11:25:00', '2024-03-22 11:29:30', '2024-03-22 11:29:30', 1, NULL), +(19, 2, 'If else', '


', NULL, 30, NULL, '2024-03-22 11:27:08', '2024-03-22 11:29:45', '2024-03-22 11:29:45', 1, NULL), +(20, 1, 'If else', '


', NULL, 30, NULL, '2024-03-22 11:27:39', '2024-03-22 11:29:37', '2024-03-22 11:29:37', 1, NULL), +(21, 1, 'Tipe Data, Variabel dan Operator', '

Studi Kasus:

Lengkapilah kode program berdasarkan perintah berikut :

  • Tambahkan tipe data untuk variabel panjang, lebar, tinggi, Vbalok dan Lbalok berdasarkan nilai yang ada.
  • Tambahkan rumus volume balok “panjang * lebar * tinggi” pada variabel Vbalok
  • Tambahkan rumus volume balok “2*(panjang * lebar + panjang * tinggi + lebar * tinggi)” pada variabel Lbalok

 

public class TipeData {\r\n      public static void main(String args[]) {\r\n             … panjang, lebar, tinggi, vBalok, lBalok;\r\n             \r\n             panjang = 10;\r\n             lebar = 6;\r\n             tinggi = 7;\r\n             \r\n             // volume balok\r\n             vBalok = ……;\r\n             \r\n             // Luas permukaan balok\r\n             lBalok = …..;\r\n             \r\n             System.out.print(\"Volume balok = \"+ vBalok + \", \");\r\n             System.out.print(\"Luas permukaan balok = \"+ lBalok);\r\n             \r\n      }\r\n}\r\n


', NULL, 30, NULL, '2024-03-22 11:31:41', '2024-03-22 11:58:04', '2024-03-22 11:58:04', 1, NULL), +(22, 1, 'Tipe Data, Variabel dan Operator', '

Studi Kasus:

Lengkapilah kode program berdasarkan perintah berikut :

  • Tambahkan tipe data untuk variabel panjang, lebar, tinggi, Vbalok dan Lbalok berdasarkan nilai yang ada.
  • Tambahkan rumus volume balok “panjang * lebar * tinggi” pada variabel Vbalok
  • Tambahkan rumus volume balok “2*(panjang * lebar + panjang * tinggi + lebar * tinggi)” pada variabel Lbalok

 

public class TipeData {\r\n      public static void main(String args[]) {\r\n             … panjang, lebar, tinggi, vBalok, lBalok;\r\n             \r\n             panjang = 10;\r\n             lebar = 6;\r\n             tinggi = 7;\r\n             \r\n             // volume balok\r\n             vBalok = ……;\r\n             \r\n             // Luas permukaan balok\r\n             lBalok = …..;\r\n             \r\n             System.out.print(\"Volume balok = \"+ vBalok + \", \");\r\n             System.out.print(\"Luas permukaan balok = \"+ lBalok);\r\n             \r\n      }\r\n}\r\n


', NULL, 30, NULL, '2024-03-22 11:34:10', '2024-03-22 11:44:23', '2024-03-22 11:44:23', 1, NULL), +(25, 1, 'aaaa', '

aa

', NULL, 30, NULL, '2024-03-22 12:01:04', '2024-03-23 12:17:20', '2024-03-23 12:17:20', 1, NULL), +(26, 1, 'aaaa', '


', NULL, 30, NULL, '2024-03-23 12:23:52', '2024-03-23 12:24:33', '2024-03-23 12:24:33', 1, NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `roles` +-- + +CREATE TABLE `roles` ( + `id` int UNSIGNED NOT NULL, + `role` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `roles` +-- + +INSERT INTO `roles` (`id`, `role`, `created_at`, `updated_at`) VALUES +(1, 'Admin', NULL, NULL), +(2, 'Students', '2022-05-31 04:18:17', '2022-05-31 04:18:17'), +(3, 'Teacher', '2022-05-31 04:19:36', '2022-05-31 04:19:36'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `role_user` +-- + +CREATE TABLE `role_user` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED DEFAULT NULL, + `role_id` bigint UNSIGNED DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `student_courses` +-- + +CREATE TABLE `student_courses` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `course_id` int UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `student_courses` +-- + +INSERT INTO `student_courses` (`id`, `user_id`, `course_id`, `created_at`, `updated_at`) VALUES +(1, 2, 1, '2023-06-01 05:58:57', '2023-06-01 05:58:57'), +(2, 3, 1, '2023-06-07 07:23:38', '2023-06-07 07:23:38'), +(3, 4, 1, '2023-07-06 20:14:36', '2023-07-06 20:14:36'), +(4, 6, 1, '2023-12-18 21:51:17', '2023-12-18 21:51:17'), +(5, 7, 1, '2024-03-08 07:44:11', '2024-03-08 07:44:11'), +(6, 1, 1, '2024-03-09 01:49:29', '2024-03-09 01:49:29'), +(7, 9, 1, '2024-03-11 04:59:04', '2024-03-11 04:59:04'), +(8, 10, 1, '2024-03-11 08:27:59', '2024-03-11 08:27:59'), +(9, 11, 1, '2024-03-11 08:54:12', '2024-03-11 08:54:12'), +(10, 12, 1, '2024-03-11 09:09:11', '2024-03-11 09:09:11'), +(11, 13, 1, '2024-03-11 09:20:15', '2024-03-11 09:20:15'), +(12, 14, 1, '2024-03-11 09:39:10', '2024-03-11 09:39:10'), +(13, 15, 1, '2024-03-11 09:51:06', '2024-03-11 09:51:06'), +(14, 16, 1, '2024-03-11 10:13:33', '2024-03-11 10:13:33'), +(15, 17, 1, '2024-03-11 10:22:46', '2024-03-11 10:22:46'), +(16, 19, 1, '2024-03-24 00:50:16', '2024-03-24 00:50:16'), +(17, 20, 1, '2024-03-24 01:46:07', '2024-03-24 01:46:07'), +(18, 21, 1, '2024-03-24 02:20:20', '2024-03-24 02:20:20'), +(19, 22, 1, '2024-03-28 08:58:46', '2024-03-28 08:58:46'), +(20, 23, 1, '2024-04-01 04:00:08', '2024-04-01 04:00:08'), +(21, 24, 1, '2024-04-01 04:37:18', '2024-04-01 04:37:18'), +(22, 25, 1, '2024-04-16 17:14:25', '2024-04-16 17:14:25'), +(23, 26, 1, '2024-04-26 13:24:54', '2024-04-26 13:24:54'), +(24, 27, 1, '2024-04-27 05:48:48', '2024-04-27 05:48:48'), +(25, 28, 1, '2024-04-27 13:39:07', '2024-04-27 13:39:07'), +(26, 29, 1, '2024-04-27 19:23:06', '2024-04-27 19:23:06'), +(27, 30, 1, '2024-04-28 05:53:09', '2024-04-28 05:53:09'), +(28, 31, 1, '2024-04-28 13:55:08', '2024-04-28 13:55:08'), +(29, 32, 1, '2024-05-01 19:20:12', '2024-05-01 19:20:12'), +(30, 33, 1, '2024-05-01 20:40:36', '2024-05-01 20:40:36'), +(31, 34, 1, '2024-05-01 21:30:07', '2024-05-01 21:30:07'), +(32, 35, 1, '2024-05-02 16:39:42', '2024-05-02 16:39:42'), +(33, 36, 1, '2024-05-03 03:10:42', '2024-05-03 03:10:42'), +(34, 37, 1, '2024-06-03 05:06:15', '2024-06-03 05:06:15'), +(35, 39, 1, '2024-06-10 01:50:12', '2024-06-10 01:50:12'), +(36, 40, 1, '2024-06-10 03:09:11', '2024-06-10 03:09:11'), +(37, 41, 1, '2024-06-10 03:54:01', '2024-06-10 03:54:01'), +(38, 42, 1, '2024-06-22 05:41:36', '2024-06-22 05:41:36'), +(39, 43, 1, '2024-06-23 07:44:15', '2024-06-23 07:44:15'), +(40, 44, 1, '2024-06-24 11:39:38', '2024-06-24 11:39:38'), +(41, 45, 1, '2024-06-30 10:51:13', '2024-06-30 10:51:13'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `total_score` +-- + +CREATE TABLE `total_score` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `content_id` int UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `score` int NOT NULL, + `wondering_score_id` bigint UNSIGNED NOT NULL, + `user_score_id` bigint UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `total_score` +-- + +INSERT INTO `total_score` (`id`, `user_id`, `content_id`, `question_id`, `score`, `wondering_score_id`, `user_score_id`, `created_at`, `updated_at`) VALUES +(1, 2, 1, 1, 75, 1, 1, '2023-06-01 18:49:37', '2023-06-01 18:49:37'), +(2, 2, 2, 2, 70, 3, 2, '2023-06-01 19:35:27', '2023-06-01 19:35:27'), +(3, 2, 3, 3, 50, 4, 3, '2023-06-01 20:01:42', '2023-06-01 20:02:30'), +(4, 2, 4, 4, 68, 5, 4, '2023-06-01 20:48:40', '2023-06-01 20:48:40'), +(5, 2, 5, 5, 49, 6, 5, '2023-06-03 06:00:26', '2023-06-03 06:00:26'), +(6, 2, 6, 6, 49, 7, 6, '2023-06-03 06:40:02', '2023-06-03 06:40:02'), +(7, 2, 11, 11, 73, 13, 11, '2023-06-04 07:32:01', '2023-06-04 07:32:01'), +(8, 2, 7, 7, 58, 8, 7, '2023-06-24 06:25:08', '2023-06-24 06:25:08'), +(9, 3, 1, 1, 70, 16, 16, '2023-07-02 20:44:42', '2023-07-02 20:44:42'), +(10, 4, 1, 1, 90, 18, 18, '2023-07-06 20:23:59', '2023-07-06 20:23:59'), +(11, 6, 2, 2, 100, 19, 20, '2024-01-22 22:57:08', '2024-01-22 22:57:08'), +(12, 6, 1, 1, 80, 20, 19, '2024-01-22 23:48:21', '2024-06-19 08:34:38'), +(13, 6, 3, 3, 100, 21, 21, '2024-01-30 22:01:34', '2024-01-30 22:01:34'), +(14, 6, 4, 4, 100, 28, 22, '2024-02-26 20:33:37', '2024-02-26 20:33:37'), +(15, 6, 5, 5, 100, 29, 23, '2024-02-26 20:34:05', '2024-02-26 20:34:05'), +(16, 7, 1, 1, 85, 41, 25, '2024-03-08 07:52:30', '2024-03-08 07:52:30'), +(18, 7, 2, 2, 100, 43, 30, '2024-03-08 08:37:29', '2024-03-08 08:37:29'), +(19, 7, 3, 3, 100, 44, 31, '2024-03-08 08:40:00', '2024-03-08 08:40:00'), +(20, 7, 4, 4, 90, 45, 32, '2024-03-08 09:20:33', '2024-03-08 09:20:33'), +(21, 9, 1, 1, 80, 46, 33, '2024-03-11 05:01:27', '2024-03-11 05:01:27'), +(22, 9, 2, 2, 100, 47, 34, '2024-03-11 05:05:21', '2024-03-11 05:05:21'), +(23, 9, 3, 3, 100, 48, 35, '2024-03-11 05:07:59', '2024-03-11 05:07:59'), +(24, 9, 4, 4, 90, 49, 36, '2024-03-11 05:10:35', '2024-03-11 05:10:35'), +(25, 9, 5, 5, 90, 50, 37, '2024-03-11 05:15:53', '2024-03-11 05:15:53'), +(26, 7, 5, 5, 80, 51, 38, '2024-03-11 05:19:50', '2024-03-11 05:19:50'), +(27, 10, 1, 1, 100, 52, 39, '2024-03-11 08:35:46', '2024-05-01 20:57:26'), +(28, 10, 2, 2, 100, 53, 40, '2024-03-11 08:38:05', '2024-03-11 08:38:05'), +(29, 10, 3, 3, 90, 54, 41, '2024-03-11 08:42:06', '2024-03-11 08:42:06'), +(30, 10, 4, 4, 90, 55, 42, '2024-03-11 08:45:48', '2024-03-11 08:45:48'), +(31, 10, 5, 5, 85, 56, 43, '2024-03-11 08:49:16', '2024-03-11 08:49:16'), +(32, 11, 1, 1, 85, 57, 44, '2024-03-11 08:56:31', '2024-03-11 08:56:31'), +(33, 11, 2, 2, 100, 58, 45, '2024-03-11 08:58:04', '2024-03-11 08:58:04'), +(34, 11, 3, 3, 90, 59, 46, '2024-03-11 08:59:24', '2024-03-11 08:59:24'), +(35, 11, 4, 4, 90, 60, 47, '2024-03-11 09:00:41', '2024-03-11 09:00:41'), +(36, 11, 5, 5, 90, 61, 48, '2024-03-11 09:02:15', '2024-03-11 09:02:15'), +(37, 12, 1, 1, 85, 62, 49, '2024-03-11 09:11:14', '2024-03-11 09:11:14'), +(38, 12, 2, 2, 100, 63, 50, '2024-03-11 09:12:25', '2024-03-11 09:12:25'), +(39, 12, 3, 3, 85, 64, 51, '2024-03-11 09:14:08', '2024-03-11 09:14:08'), +(40, 12, 4, 4, 90, 65, 52, '2024-03-11 09:16:51', '2024-03-11 09:16:51'), +(41, 12, 5, 5, 80, 66, 53, '2024-03-11 09:18:03', '2024-03-11 09:18:03'), +(42, 13, 1, 1, 85, 67, 54, '2024-03-11 09:22:14', '2024-03-11 09:22:14'), +(43, 13, 2, 2, 100, 68, 55, '2024-03-11 09:24:16', '2024-03-11 09:24:16'), +(44, 13, 3, 3, 95, 69, 56, '2024-03-11 09:25:55', '2024-03-11 09:25:55'), +(45, 13, 4, 4, 95, 70, 57, '2024-03-11 09:29:34', '2024-03-11 09:29:34'), +(46, 13, 5, 5, 85, 71, 58, '2024-03-11 09:31:20', '2024-03-11 09:31:20'), +(47, 14, 1, 1, 80, 72, 59, '2024-03-11 09:41:30', '2024-03-11 09:41:30'), +(48, 14, 2, 2, 95, 73, 60, '2024-03-11 09:43:07', '2024-03-11 09:43:07'), +(49, 14, 3, 3, 85, 74, 61, '2024-03-11 09:44:33', '2024-03-11 09:44:33'), +(50, 14, 4, 4, 90, 75, 62, '2024-03-11 09:46:35', '2024-03-11 09:46:35'), +(51, 14, 5, 5, 85, 76, 63, '2024-03-11 09:48:04', '2024-03-11 09:48:04'), +(52, 15, 1, 1, 85, 77, 64, '2024-03-11 09:56:15', '2024-03-11 09:56:15'), +(53, 15, 2, 2, 100, 78, 65, '2024-03-11 09:57:30', '2024-03-11 09:57:30'), +(54, 15, 3, 3, 90, 79, 66, '2024-03-11 09:59:46', '2024-03-11 09:59:46'), +(55, 15, 4, 4, 95, 80, 67, '2024-03-11 10:01:13', '2024-03-11 10:01:13'), +(56, 15, 5, 5, 85, 81, 68, '2024-03-11 10:02:37', '2024-03-11 10:02:37'), +(57, 16, 1, 1, 80, 82, 69, '2024-03-11 10:15:20', '2024-03-11 10:15:20'), +(58, 16, 2, 2, 100, 83, 70, '2024-03-11 10:16:40', '2024-03-11 10:16:40'), +(59, 16, 3, 3, 90, 84, 71, '2024-03-11 10:18:08', '2024-03-11 10:18:08'), +(60, 16, 4, 4, 90, 85, 72, '2024-03-11 10:19:31', '2024-03-11 10:19:31'), +(61, 16, 5, 5, 80, 86, 73, '2024-03-11 10:20:47', '2024-03-11 10:20:47'), +(62, 17, 1, 1, 80, 87, 74, '2024-03-11 10:24:24', '2024-03-11 10:24:24'), +(63, 17, 2, 2, 100, 88, 75, '2024-03-11 10:25:54', '2024-03-11 10:25:54'), +(64, 17, 3, 3, 90, 89, 76, '2024-03-11 10:27:04', '2024-03-11 10:27:04'), +(65, 17, 4, 4, 90, 90, 77, '2024-03-11 10:28:24', '2024-03-11 10:28:24'), +(66, 17, 5, 5, 75, 91, 78, '2024-03-11 10:30:15', '2024-03-11 10:30:15'), +(67, 10, 6, 6, 95, 92, 79, '2024-03-24 00:15:46', '2024-03-24 00:15:46'), +(68, 10, 7, 7, 100, 93, 80, '2024-03-24 00:18:49', '2024-03-24 00:18:49'), +(69, 10, 8, 8, 90, 94, 81, '2024-03-24 00:22:53', '2024-03-24 00:22:53'), +(70, 10, 9, 9, 80, 95, 82, '2024-03-24 00:25:42', '2024-03-24 00:25:42'), +(71, 10, 10, 10, 90, 96, 83, '2024-03-24 00:28:33', '2024-03-24 00:28:33'), +(72, 10, 11, 11, 80, 97, 84, '2024-03-24 00:33:15', '2024-03-24 00:33:15'), +(73, 10, 12, 12, 85, 98, 85, '2024-03-24 00:35:41', '2024-03-24 00:35:41'), +(74, 10, 13, 13, 85, 99, 86, '2024-03-24 00:40:01', '2024-03-24 00:40:01'), +(75, 19, 1, 1, 85, 100, 87, '2024-03-24 00:54:19', '2024-03-24 00:54:19'), +(76, 19, 2, 2, 100, 101, 88, '2024-03-24 00:55:57', '2024-03-24 00:55:57'), +(77, 19, 3, 3, 90, 102, 89, '2024-03-24 00:57:13', '2024-03-24 00:57:13'), +(78, 19, 4, 4, 90, 103, 90, '2024-03-24 00:58:37', '2024-03-24 00:58:37'), +(79, 19, 5, 5, 85, 104, 91, '2024-03-24 00:59:54', '2024-03-24 00:59:54'), +(80, 19, 6, 6, 95, 105, 92, '2024-03-24 01:02:20', '2024-03-24 01:02:20'), +(81, 19, 7, 7, 100, 106, 93, '2024-03-24 01:04:02', '2024-03-24 01:04:02'), +(82, 19, 8, 8, 90, 107, 94, '2024-03-24 01:05:14', '2024-03-24 01:05:14'), +(83, 19, 9, 9, 80, 108, 95, '2024-03-24 01:06:43', '2024-03-24 01:06:43'), +(84, 19, 10, 10, 90, 109, 96, '2024-03-24 01:08:21', '2024-03-24 01:08:21'), +(85, 19, 11, 11, 80, 110, 97, '2024-03-24 01:10:22', '2024-03-24 01:10:22'), +(86, 19, 12, 12, 90, 111, 98, '2024-03-24 01:11:42', '2024-03-24 01:11:42'), +(87, 19, 13, 13, 85, 112, 99, '2024-03-24 01:13:20', '2024-03-24 01:13:20'), +(88, 12, 6, 6, 95, 113, 100, '2024-03-24 01:17:20', '2024-03-24 01:17:20'), +(89, 12, 7, 7, 100, 114, 101, '2024-03-24 01:18:54', '2024-03-24 01:18:54'), +(90, 12, 8, 8, 90, 115, 102, '2024-03-24 01:22:49', '2024-03-24 01:22:49'), +(91, 12, 9, 9, 80, 116, 103, '2024-03-24 01:24:14', '2024-03-24 01:24:14'), +(92, 12, 10, 10, 90, 117, 104, '2024-03-24 01:25:52', '2024-03-24 01:25:52'), +(93, 12, 11, 11, 80, 118, 105, '2024-03-24 01:27:08', '2024-03-24 01:27:08'), +(94, 12, 12, 12, 85, 119, 106, '2024-03-24 01:28:30', '2024-03-24 01:28:30'), +(95, 12, 13, 13, 85, 120, 107, '2024-03-24 01:30:03', '2024-03-24 01:30:03'), +(96, 13, 6, 6, 95, 121, 108, '2024-03-24 01:32:55', '2024-03-24 01:32:55'), +(97, 13, 7, 7, 100, 122, 109, '2024-03-24 01:34:22', '2024-03-24 01:34:22'), +(98, 13, 8, 8, 90, 123, 110, '2024-03-24 01:35:35', '2024-03-24 01:35:35'), +(99, 13, 9, 9, 85, 124, 111, '2024-03-24 01:36:56', '2024-03-24 01:36:56'), +(100, 13, 10, 10, 90, 125, 112, '2024-03-24 01:38:37', '2024-03-24 01:38:37'), +(101, 13, 11, 11, 80, 126, 113, '2024-03-24 01:39:50', '2024-03-24 01:39:50'), +(102, 13, 12, 12, 90, 127, 114, '2024-03-24 01:40:47', '2024-03-24 01:40:47'), +(103, 13, 13, 13, 90, 128, 115, '2024-03-24 01:41:53', '2024-03-24 01:41:53'), +(104, 21, 1, 1, 100, 129, 116, '2024-03-24 02:56:16', '2024-03-24 02:56:16'), +(105, 21, 2, 2, 100, 130, 120, '2024-03-28 08:33:18', '2024-03-28 08:33:18'), +(106, 21, 3, 3, 95, 131, 121, '2024-03-28 08:34:43', '2024-03-28 08:34:43'), +(107, 21, 4, 4, 100, 132, 122, '2024-03-28 08:36:41', '2024-03-28 08:36:41'), +(108, 21, 5, 5, 90, 133, 123, '2024-03-28 08:37:59', '2024-03-28 08:37:59'), +(109, 21, 6, 6, 95, 134, 124, '2024-03-28 08:39:19', '2024-03-28 08:39:19'), +(110, 21, 7, 7, 100, 135, 125, '2024-03-28 08:40:31', '2024-03-28 08:40:31'), +(111, 21, 8, 8, 100, 136, 126, '2024-03-28 08:41:45', '2024-03-28 08:41:45'), +(112, 21, 9, 9, 90, 137, 127, '2024-03-28 08:42:55', '2024-03-28 08:42:55'), +(113, 21, 10, 10, 95, 138, 128, '2024-03-28 08:44:21', '2024-03-28 08:44:21'), +(114, 21, 11, 11, 95, 139, 129, '2024-03-28 08:45:49', '2024-03-28 08:45:49'), +(115, 21, 12, 12, 90, 140, 130, '2024-03-28 08:46:54', '2024-03-28 08:46:54'), +(116, 21, 13, 13, 95, 141, 131, '2024-03-28 08:48:01', '2024-03-28 08:48:01'), +(117, 22, 1, 1, 100, 142, 132, '2024-03-28 09:00:14', '2024-03-28 09:00:14'), +(118, 22, 2, 2, 100, 143, 133, '2024-03-28 09:04:28', '2024-03-28 09:04:28'), +(119, 22, 3, 3, 100, 144, 134, '2024-03-28 09:05:30', '2024-03-28 09:05:30'), +(120, 22, 4, 4, 100, 145, 135, '2024-03-28 09:06:42', '2024-03-28 09:06:42'), +(121, 22, 5, 5, 95, 146, 136, '2024-03-28 09:08:17', '2024-03-28 09:08:17'), +(122, 22, 6, 6, 100, 147, 137, '2024-03-28 09:13:04', '2024-03-28 09:13:04'), +(123, 22, 7, 7, 100, 148, 138, '2024-03-28 09:14:15', '2024-03-28 09:14:15'), +(124, 22, 8, 8, 100, 149, 139, '2024-03-28 09:15:23', '2024-03-28 09:15:23'), +(125, 22, 9, 9, 90, 150, 140, '2024-03-28 09:16:39', '2024-03-28 09:16:39'), +(126, 22, 10, 10, 100, 151, 141, '2024-03-28 09:17:52', '2024-03-28 09:17:52'), +(127, 22, 11, 11, 90, 152, 142, '2024-03-28 09:18:59', '2024-03-28 09:18:59'), +(128, 22, 12, 12, 90, 153, 143, '2024-03-28 09:20:11', '2024-03-28 09:20:11'), +(129, 22, 13, 13, 95, 154, 144, '2024-03-28 09:21:18', '2024-03-28 09:21:18'), +(130, 23, 1, 1, 85, 155, 145, '2024-04-01 04:02:05', '2024-04-01 04:02:05'), +(131, 23, 2, 2, 100, 156, 146, '2024-04-01 04:03:27', '2024-04-01 04:03:27'), +(132, 23, 3, 3, 95, 157, 147, '2024-04-01 04:04:45', '2024-04-01 04:04:45'), +(133, 23, 4, 4, 95, 158, 148, '2024-04-01 04:06:46', '2024-04-01 04:06:46'), +(134, 23, 5, 5, 85, 159, 149, '2024-04-01 04:09:16', '2024-04-01 04:09:16'), +(135, 23, 6, 6, 95, 160, 150, '2024-04-01 04:10:47', '2024-04-01 04:10:47'), +(136, 23, 7, 7, 100, 161, 151, '2024-04-01 04:12:16', '2024-04-01 04:12:16'), +(137, 23, 8, 8, 90, 162, 152, '2024-04-01 04:13:34', '2024-04-01 04:13:34'), +(138, 23, 9, 9, 85, 163, 153, '2024-04-01 04:17:07', '2024-04-01 04:17:07'), +(139, 23, 10, 10, 85, 164, 154, '2024-04-01 04:18:33', '2024-04-01 04:18:33'), +(140, 23, 11, 11, 80, 165, 155, '2024-04-01 04:20:49', '2024-04-01 04:20:49'), +(141, 23, 12, 12, 90, 166, 156, '2024-04-01 04:23:44', '2024-04-01 04:23:44'), +(142, 23, 13, 13, 90, 167, 157, '2024-04-01 04:26:00', '2024-04-01 04:26:00'), +(143, 24, 1, 1, 85, 168, 158, '2024-04-01 04:39:46', '2024-04-01 04:39:46'), +(144, 24, 2, 2, 100, 169, 159, '2024-04-01 04:41:18', '2024-04-01 04:41:18'), +(145, 24, 3, 3, 90, 170, 160, '2024-04-01 04:42:52', '2024-04-01 04:42:52'), +(146, 24, 4, 4, 95, 171, 161, '2024-04-01 04:44:20', '2024-04-01 04:44:20'), +(147, 24, 5, 5, 85, 172, 162, '2024-04-01 04:45:46', '2024-04-01 04:45:46'), +(148, 24, 6, 6, 95, 173, 163, '2024-04-01 04:47:02', '2024-04-01 04:47:02'), +(149, 24, 7, 7, 100, 174, 164, '2024-04-01 04:48:17', '2024-04-01 04:48:17'), +(150, 24, 8, 8, 90, 175, 165, '2024-04-01 04:51:17', '2024-04-01 04:51:17'), +(151, 24, 9, 9, 85, 176, 166, '2024-04-01 04:53:08', '2024-04-01 04:53:08'), +(152, 24, 10, 10, 85, 177, 167, '2024-04-01 04:54:35', '2024-04-01 04:54:35'), +(153, 24, 11, 11, 80, 178, 168, '2024-04-01 04:57:08', '2024-04-01 04:57:08'), +(154, 24, 12, 12, 90, 179, 169, '2024-04-01 05:00:33', '2024-04-01 05:00:33'), +(155, 24, 13, 13, 90, 180, 170, '2024-04-01 05:01:49', '2024-04-01 05:01:49'), +(156, 6, 7, 7, 100, 181, 171, '2024-04-07 10:38:08', '2024-04-07 10:38:08'), +(157, 25, 1, 1, 100, 182, 172, '2024-04-16 17:16:04', '2024-04-16 17:16:04'), +(158, 25, 2, 2, 100, 183, 173, '2024-04-16 17:17:55', '2024-04-16 17:17:55'), +(159, 25, 3, 3, 100, 184, 174, '2024-04-16 17:47:23', '2024-04-16 17:47:23'), +(160, 25, 4, 4, 100, 185, 175, '2024-04-23 18:55:46', '2024-04-23 18:55:46'), +(161, 26, 1, 1, 100, 186, 176, '2024-04-26 13:28:07', '2024-04-26 13:28:07'), +(162, 26, 2, 2, 100, 187, 177, '2024-04-26 13:49:53', '2024-04-26 13:49:53'), +(163, 26, 3, 3, 100, 188, 178, '2024-04-26 20:45:57', '2024-04-26 20:45:57'), +(164, 26, 4, 4, 95, 189, 179, '2024-04-26 21:05:49', '2024-04-26 21:05:49'), +(165, 26, 5, 5, 90, 190, 180, '2024-04-26 21:19:53', '2024-04-26 21:19:53'), +(166, 26, 6, 6, 100, 191, 181, '2024-04-26 21:35:11', '2024-04-26 21:35:11'), +(167, 26, 7, 7, 95, 192, 182, '2024-04-26 21:49:57', '2024-04-26 21:49:57'), +(168, 26, 8, 8, 95, 193, 183, '2024-04-26 23:32:26', '2024-04-26 23:32:26'), +(169, 26, 9, 9, 80, 194, 184, '2024-04-26 23:53:41', '2024-04-26 23:53:41'), +(170, 26, 10, 10, 85, 195, 185, '2024-04-27 00:25:31', '2024-04-27 00:25:31'), +(171, 26, 11, 11, 70, 196, 186, '2024-04-27 00:41:38', '2024-04-27 00:41:38'), +(172, 26, 12, 12, 65, 197, 187, '2024-04-27 00:59:53', '2024-04-27 00:59:53'), +(173, 26, 13, 13, 95, 198, 188, '2024-04-27 01:18:43', '2024-04-27 01:18:43'), +(174, 27, 1, 1, 100, 199, 189, '2024-04-27 05:50:17', '2024-04-27 05:50:17'), +(175, 27, 2, 2, 100, 200, 190, '2024-04-27 05:59:31', '2024-04-27 05:59:31'), +(176, 27, 3, 3, 100, 201, 191, '2024-04-27 06:08:37', '2024-04-27 06:08:37'), +(177, 27, 4, 4, 100, 202, 192, '2024-04-27 06:19:14', '2024-04-27 06:19:14'), +(178, 27, 5, 5, 95, 203, 193, '2024-04-27 06:28:07', '2024-04-27 06:28:07'), +(179, 27, 6, 6, 100, 204, 194, '2024-04-27 06:36:23', '2024-04-27 06:36:23'), +(180, 27, 7, 7, 95, 205, 195, '2024-04-27 06:47:11', '2024-04-27 06:47:11'), +(181, 27, 8, 8, 95, 206, 196, '2024-04-27 06:59:04', '2024-04-27 06:59:04'), +(182, 27, 9, 9, 80, 207, 197, '2024-04-27 07:08:30', '2024-04-27 07:08:30'), +(183, 27, 10, 10, 80, 208, 198, '2024-04-27 07:20:38', '2024-04-27 07:20:38'), +(184, 27, 11, 11, 70, 209, 199, '2024-04-27 07:29:35', '2024-04-27 07:29:35'), +(185, 27, 12, 12, 65, 210, 200, '2024-04-27 07:39:51', '2024-04-27 07:39:51'), +(186, 27, 13, 13, 95, 211, 201, '2024-04-27 07:47:59', '2024-04-27 07:47:59'), +(187, 28, 1, 1, 100, 212, 202, '2024-04-27 13:40:47', '2024-04-27 13:40:47'), +(188, 28, 2, 2, 100, 213, 203, '2024-04-27 13:49:18', '2024-04-27 13:49:18'), +(189, 28, 3, 3, 100, 214, 204, '2024-04-27 13:57:26', '2024-04-27 13:57:26'), +(190, 28, 4, 4, 95, 215, 205, '2024-04-27 14:05:32', '2024-04-27 14:05:32'), +(191, 28, 5, 5, 90, 216, 206, '2024-04-27 14:13:48', '2024-04-27 14:13:48'), +(192, 28, 6, 6, 100, 217, 207, '2024-04-27 14:21:56', '2024-04-27 14:21:56'), +(193, 28, 7, 7, 95, 218, 208, '2024-04-27 14:30:08', '2024-04-27 14:30:08'), +(194, 28, 8, 8, 95, 219, 209, '2024-04-27 14:37:26', '2024-04-27 14:37:26'), +(195, 28, 9, 9, 80, 220, 210, '2024-04-27 14:46:42', '2024-04-27 14:46:42'), +(196, 28, 10, 10, 85, 221, 211, '2024-04-27 14:54:32', '2024-04-27 14:54:32'), +(197, 28, 11, 11, 75, 222, 212, '2024-04-27 15:02:17', '2024-04-27 15:02:17'), +(198, 28, 12, 12, 65, 223, 213, '2024-04-27 15:09:25', '2024-04-27 15:09:25'), +(199, 28, 13, 13, 90, 224, 214, '2024-04-27 15:16:48', '2024-04-27 15:16:48'), +(200, 29, 1, 1, 100, 225, 215, '2024-04-27 19:24:45', '2024-04-27 19:24:45'), +(201, 29, 2, 2, 100, 226, 216, '2024-04-27 19:36:08', '2024-04-27 19:36:08'), +(202, 29, 3, 3, 100, 227, 217, '2024-04-27 19:46:02', '2024-04-27 19:46:02'), +(203, 29, 4, 4, 95, 228, 218, '2024-04-27 19:53:39', '2024-04-27 19:53:39'), +(204, 29, 5, 5, 90, 229, 219, '2024-04-27 20:01:54', '2024-04-27 20:01:54'), +(205, 29, 6, 6, 100, 230, 220, '2024-04-27 20:10:28', '2024-04-27 20:10:28'), +(206, 29, 7, 7, 95, 231, 221, '2024-04-27 20:19:07', '2024-04-27 20:19:07'), +(207, 29, 8, 8, 90, 232, 222, '2024-04-27 20:27:47', '2024-04-27 20:27:47'), +(208, 29, 9, 9, 80, 233, 223, '2024-04-27 20:37:18', '2024-04-27 20:37:18'), +(209, 29, 10, 10, 85, 234, 224, '2024-04-27 20:45:13', '2024-04-27 20:45:13'), +(210, 29, 11, 11, 80, 235, 225, '2024-04-27 20:55:02', '2024-04-27 20:55:02'), +(211, 29, 12, 12, 75, 236, 229, '2024-04-27 21:08:09', '2024-04-27 21:08:09'), +(212, 29, 13, 13, 95, 237, 230, '2024-04-27 21:16:50', '2024-04-27 21:16:50'), +(213, 30, 1, 1, 100, 238, 231, '2024-04-28 05:54:29', '2024-04-28 05:54:29'), +(214, 30, 2, 2, 100, 239, 232, '2024-04-28 06:08:28', '2024-04-28 06:08:28'), +(215, 30, 3, 3, 100, 240, 233, '2024-04-28 06:16:03', '2024-04-28 06:16:03'), +(216, 30, 4, 4, 100, 241, 234, '2024-04-28 06:24:23', '2024-04-28 06:24:23'), +(217, 30, 5, 5, 95, 242, 235, '2024-04-28 06:32:10', '2024-04-28 06:32:10'), +(218, 30, 6, 6, 100, 243, 236, '2024-04-28 06:42:29', '2024-04-28 06:42:29'), +(219, 30, 7, 7, 95, 244, 237, '2024-04-28 06:50:29', '2024-04-28 06:50:29'), +(220, 30, 8, 8, 95, 245, 238, '2024-04-28 07:02:54', '2024-04-28 07:02:54'), +(221, 30, 9, 9, 73, 246, 239, '2024-04-28 07:11:43', '2024-04-28 07:11:43'), +(222, 30, 10, 10, 85, 247, 240, '2024-04-28 07:23:57', '2024-04-28 07:23:57'), +(223, 30, 11, 11, 75, 248, 241, '2024-04-28 07:34:08', '2024-04-28 07:34:08'), +(224, 30, 12, 12, 75, 249, 242, '2024-04-28 07:42:09', '2024-04-28 07:42:09'), +(225, 30, 13, 13, 90, 250, 243, '2024-04-28 07:52:32', '2024-04-28 07:52:32'), +(226, 31, 1, 1, 80, 251, 244, '2024-04-28 13:56:52', '2024-04-28 14:00:14'), +(227, 31, 2, 2, 100, 252, 245, '2024-04-28 14:03:27', '2024-04-28 14:03:27'), +(228, 31, 3, 3, 90, 253, 246, '2024-04-28 14:07:01', '2024-04-28 14:07:01'), +(229, 31, 4, 4, 90, 254, 247, '2024-04-28 14:11:01', '2024-04-28 14:11:01'), +(230, 31, 5, 5, 80, 255, 248, '2024-04-28 14:14:28', '2024-04-28 14:14:28'), +(231, 31, 6, 6, 85, 256, 249, '2024-04-28 14:17:38', '2024-04-28 14:17:38'), +(232, 31, 7, 7, 95, 257, 250, '2024-04-28 14:20:18', '2024-04-28 14:20:18'), +(233, 31, 8, 8, 90, 258, 251, '2024-04-28 14:23:59', '2024-04-28 14:23:59'), +(234, 31, 9, 9, 63, 259, 252, '2024-04-28 14:27:42', '2024-04-28 14:27:42'), +(235, 31, 10, 10, 75, 260, 253, '2024-04-28 14:30:47', '2024-04-28 14:30:47'), +(236, 31, 11, 11, 70, 261, 254, '2024-04-28 14:33:12', '2024-04-28 14:33:12'), +(237, 31, 12, 12, 60, 262, 255, '2024-04-28 14:36:01', '2024-04-28 14:36:01'), +(238, 31, 13, 13, 85, 263, 256, '2024-04-28 14:38:26', '2024-04-28 14:38:26'), +(239, 32, 1, 1, 100, 264, 257, '2024-05-01 19:22:16', '2024-05-01 19:22:16'), +(240, 32, 2, 2, 100, 265, 258, '2024-05-01 19:43:56', '2024-05-01 19:43:56'), +(241, 32, 3, 3, 100, 266, 259, '2024-05-01 19:56:38', '2024-05-01 19:56:38'), +(242, 33, 1, 1, 51, 267, 260, '2024-05-01 20:41:23', '2024-05-01 20:41:23'), +(243, 34, 1, 1, 51, 268, 261, '2024-05-01 21:31:07', '2024-05-01 21:31:07'), +(244, 34, 2, 2, 53, 269, 262, '2024-05-01 21:42:39', '2024-05-01 21:42:39'), +(245, 34, 3, 3, 51, 270, 263, '2024-05-01 22:36:00', '2024-05-01 22:36:00'), +(246, 34, 4, 4, 49, 271, 264, '2024-05-01 23:28:25', '2024-05-01 23:28:25'), +(247, 32, 4, 4, 100, 272, 265, '2024-05-02 15:11:57', '2024-05-02 15:11:57'), +(248, 32, 5, 5, 95, 273, 266, '2024-05-02 15:20:52', '2024-05-02 15:20:52'), +(249, 32, 6, 6, 100, 274, 267, '2024-05-02 15:30:01', '2024-05-02 15:30:01'), +(250, 32, 7, 7, 95, 275, 268, '2024-05-02 15:39:11', '2024-05-02 15:39:11'), +(251, 32, 8, 8, 95, 276, 269, '2024-05-02 15:47:20', '2024-05-02 15:47:20'), +(252, 32, 9, 9, 80, 277, 270, '2024-05-02 15:56:35', '2024-05-02 15:56:35'), +(253, 32, 10, 10, 80, 278, 271, '2024-05-02 16:04:40', '2024-05-02 16:04:40'), +(254, 32, 11, 11, 70, 279, 272, '2024-05-02 16:13:07', '2024-05-02 16:13:07'), +(255, 32, 12, 12, 70, 280, 273, '2024-05-02 16:21:46', '2024-05-02 16:21:46'), +(256, 32, 13, 13, 95, 281, 274, '2024-05-02 16:30:17', '2024-05-02 16:30:17'), +(257, 35, 1, 1, 95, 282, 275, '2024-05-02 17:21:13', '2024-05-02 17:21:13'), +(258, 35, 2, 2, 100, 283, 276, '2024-05-02 17:30:13', '2024-05-02 17:30:13'), +(259, 35, 3, 3, 100, 284, 277, '2024-05-02 17:38:26', '2024-05-02 17:38:26'), +(260, 35, 4, 4, 100, 285, 278, '2024-05-02 17:46:50', '2024-05-02 17:46:50'), +(261, 35, 5, 5, 95, 286, 279, '2024-05-02 17:56:54', '2024-05-02 17:56:54'), +(262, 35, 6, 6, 100, 287, 280, '2024-05-02 18:04:16', '2024-05-02 18:04:16'), +(263, 35, 7, 7, 95, 288, 281, '2024-05-02 18:20:46', '2024-05-02 18:20:46'), +(264, 35, 8, 8, 95, 289, 282, '2024-05-02 18:43:39', '2024-05-02 18:43:39'), +(265, 35, 9, 9, 73, 290, 283, '2024-05-02 18:55:12', '2024-05-02 18:55:12'), +(266, 35, 10, 10, 80, 291, 284, '2024-05-02 19:17:07', '2024-05-02 19:17:07'), +(267, 35, 11, 11, 75, 292, 285, '2024-05-02 19:27:15', '2024-05-02 19:27:15'), +(268, 35, 12, 12, 75, 293, 286, '2024-05-02 19:41:21', '2024-05-02 19:41:21'), +(269, 35, 13, 13, 95, 294, 287, '2024-05-02 19:50:28', '2024-05-02 19:50:28'), +(270, 36, 1, 1, 100, 295, 288, '2024-05-03 03:21:24', '2024-05-03 03:21:24'), +(271, 36, 2, 2, 100, 296, 289, '2024-05-03 03:29:58', '2024-05-03 03:29:58'), +(272, 36, 3, 3, 100, 297, 290, '2024-05-03 03:39:08', '2024-05-03 03:39:08'), +(273, 36, 4, 4, 100, 298, 291, '2024-05-03 03:55:02', '2024-05-03 03:55:02'), +(274, 36, 5, 5, 85, 299, 292, '2024-05-03 04:04:59', '2024-05-03 04:04:59'), +(275, 36, 6, 6, 95, 300, 293, '2024-05-03 04:13:54', '2024-05-03 04:13:54'), +(276, 36, 7, 7, 95, 301, 294, '2024-05-03 04:31:38', '2024-05-03 04:31:38'), +(277, 36, 8, 8, 95, 302, 295, '2024-05-03 04:51:13', '2024-05-03 04:51:13'), +(278, 36, 9, 9, 78, 303, 296, '2024-05-03 05:01:44', '2024-05-03 05:01:44'), +(279, 36, 10, 10, 80, 304, 297, '2024-05-03 05:24:34', '2024-05-03 05:24:34'), +(280, 36, 11, 11, 80, 305, 298, '2024-05-03 05:43:54', '2024-05-03 05:43:54'), +(281, 36, 12, 12, 75, 306, 299, '2024-05-03 05:55:08', '2024-05-03 05:55:08'), +(282, 36, 13, 13, 95, 307, 300, '2024-05-03 06:05:11', '2024-05-03 06:05:11'), +(283, 37, 1, 1, 100, 308, 301, '2024-06-03 05:10:24', '2024-06-03 05:10:24'), +(284, 37, 2, 2, 100, 309, 302, '2024-06-03 05:31:53', '2024-06-03 05:31:53'), +(285, 37, 3, 3, 100, 310, 303, '2024-06-03 05:41:20', '2024-06-03 05:41:20'), +(286, 37, 4, 4, 100, 311, 304, '2024-06-03 05:50:42', '2024-06-03 05:50:42'), +(287, 37, 5, 5, 95, 312, 305, '2024-06-03 06:06:55', '2024-06-03 06:06:55'), +(288, 37, 6, 6, 100, 313, 306, '2024-06-03 06:24:31', '2024-06-03 06:24:31'), +(289, 37, 7, 7, 95, 314, 307, '2024-06-03 06:39:55', '2024-06-03 06:39:55'), +(290, 37, 8, 8, 95, 315, 308, '2024-06-03 07:01:34', '2024-06-03 07:01:34'), +(291, 37, 9, 9, 75, 316, 309, '2024-06-03 07:09:54', '2024-06-03 07:09:54'), +(292, 37, 10, 10, 75, 317, 310, '2024-06-03 07:25:23', '2024-06-03 07:25:23'), +(293, 37, 11, 11, 47, 318, 311, '2024-06-03 07:33:21', '2024-07-04 20:44:37'), +(294, 37, 12, 12, 75, 319, 312, '2024-06-03 07:41:08', '2024-06-03 07:41:08'), +(295, 37, 13, 13, 95, 320, 313, '2024-06-03 08:05:10', '2024-06-03 08:05:10'), +(296, 39, 1, 1, 90, 321, 314, '2024-06-10 01:56:20', '2024-06-10 01:56:20'), +(297, 39, 2, 2, 80, 322, 315, '2024-06-10 02:01:01', '2024-06-10 02:01:01'), +(298, 39, 3, 3, 80, 323, 316, '2024-06-10 02:06:20', '2024-06-10 02:06:20'), +(299, 39, 4, 4, 95, 324, 317, '2024-06-10 02:16:20', '2024-06-10 02:16:20'), +(300, 39, 5, 5, 85, 325, 318, '2024-06-10 02:27:08', '2024-06-10 02:27:08'), +(301, 39, 6, 6, 75, 326, 319, '2024-06-10 02:33:38', '2024-06-10 02:33:38'), +(302, 39, 7, 7, 70, 327, 320, '2024-06-10 02:37:11', '2024-06-10 02:37:11'), +(303, 39, 8, 8, 85, 328, 321, '2024-06-10 02:45:59', '2024-06-10 02:45:59'), +(304, 39, 9, 9, 80, 329, 322, '2024-06-10 02:53:29', '2024-06-10 02:53:29'), +(305, 39, 10, 10, 90, 330, 323, '2024-06-10 03:07:52', '2024-06-10 03:07:52'), +(306, 40, 1, 1, 90, 331, 324, '2024-06-10 03:14:31', '2024-06-10 03:14:31'), +(307, 40, 2, 2, 75, 332, 325, '2024-06-10 03:22:10', '2024-06-10 03:22:10'), +(308, 40, 3, 3, 80, 333, 326, '2024-06-10 03:29:09', '2024-06-10 03:29:09'), +(309, 40, 4, 4, 85, 334, 327, '2024-06-10 03:35:15', '2024-06-10 03:35:15'), +(310, 40, 5, 5, 90, 335, 328, '2024-06-10 03:42:02', '2024-06-10 03:42:02'), +(311, 40, 6, 6, 90, 336, 329, '2024-06-10 03:50:50', '2024-06-10 03:50:50'), +(312, 41, 1, 1, 90, 338, 330, '2024-06-10 04:00:06', '2024-06-10 04:00:06'), +(313, 41, 2, 2, 85, 339, 331, '2024-06-10 04:05:04', '2024-06-10 04:05:04'), +(314, 41, 3, 3, 85, 340, 332, '2024-06-10 04:12:05', '2024-06-10 04:12:05'), +(315, 41, 4, 4, 90, 341, 333, '2024-06-10 04:18:10', '2024-06-10 04:18:10'), +(316, 41, 5, 5, 90, 342, 334, '2024-06-10 04:28:00', '2024-06-10 04:28:00'), +(317, 41, 6, 6, 85, 343, 335, '2024-06-10 04:31:22', '2024-06-10 04:31:22'), +(318, 41, 7, 7, 63, 344, 336, '2024-06-10 04:35:17', '2024-06-10 04:35:17'), +(319, 41, 8, 8, 85, 345, 337, '2024-06-10 04:38:58', '2024-06-10 04:38:58'), +(320, 41, 9, 9, 70, 346, 338, '2024-06-10 04:43:01', '2024-06-10 04:43:01'), +(321, 41, 10, 10, 85, 347, 339, '2024-06-13 03:23:44', '2024-06-13 03:23:44'), +(322, 41, 11, 11, 90, 348, 340, '2024-06-13 03:41:38', '2024-06-13 03:41:38'), +(323, 41, 12, 12, 90, 349, 341, '2024-06-13 03:45:53', '2024-06-13 03:45:53'), +(324, 41, 13, 13, 75, 350, 342, '2024-06-13 03:51:23', '2024-06-13 03:51:23'), +(325, 40, 7, 7, 78, 337, 343, '2024-06-13 05:32:28', '2024-06-13 05:32:28'), +(326, 40, 8, 8, 100, 351, 344, '2024-06-13 05:38:02', '2024-06-13 05:38:02'), +(327, 40, 9, 9, 80, 352, 345, '2024-06-13 05:43:55', '2024-06-13 05:43:55'), +(328, 40, 10, 10, 78, 353, 346, '2024-06-13 05:47:23', '2024-06-13 05:47:23'), +(329, 40, 11, 11, 90, 354, 347, '2024-06-13 05:51:24', '2024-06-13 05:51:24'), +(330, 40, 12, 12, 95, 355, 348, '2024-06-13 05:54:21', '2024-06-13 05:54:21'), +(331, 40, 13, 13, 75, 356, 349, '2024-06-13 05:56:07', '2024-06-13 05:56:07'), +(332, 42, 1, 1, 95, 357, 350, '2024-06-22 05:47:08', '2024-06-22 05:47:08'), +(333, 42, 2, 2, 80, 358, 351, '2024-06-22 06:48:07', '2024-06-22 06:48:07'), +(334, 43, 1, 1, 92, 359, 352, '2024-06-23 07:50:04', '2024-06-30 10:58:12'), +(335, 43, 2, 2, 85, 360, 353, '2024-06-24 00:51:59', '2024-06-24 00:51:59'), +(336, 44, 1, 1, 92, 361, 354, '2024-06-24 11:40:58', '2024-06-24 11:40:58'), +(337, 44, 2, 2, 93, 362, 355, '2024-06-24 11:44:13', '2024-06-30 20:06:00'), +(338, 43, 3, 3, 92, 363, 358, '2024-06-25 03:25:23', '2024-06-25 03:25:23'), +(339, 43, 4, 4, 100, 364, 359, '2024-06-25 03:26:55', '2024-06-25 03:28:12'), +(340, 43, 5, 5, 100, 366, 369, '2024-06-30 11:19:52', '2024-06-30 11:22:27'), +(341, 43, 6, 6, 92, 367, 370, '2024-06-30 11:21:30', '2024-06-30 11:21:30'), +(342, 45, 1, 1, 100, 365, 371, '2024-06-30 11:24:04', '2024-06-30 19:29:01'), +(343, 45, 2, 2, 98, 368, 372, '2024-07-02 10:29:23', '2024-07-04 20:43:31'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `users` +-- + +CREATE TABLE `users` ( + `id` bigint UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email_verified_at` timestamp NULL DEFAULT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `role_id` int UNSIGNED NOT NULL, + `class` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `users` +-- + +INSERT INTO `users` (`id`, `name`, `email`, `email_verified_at`, `password`, `remember_token`, `created_at`, `updated_at`, `role_id`, `class`) VALUES +(1, 'admin', 'admin@gmail.com', NULL, '$2y$10$9Yu3jveXxD6UxNLoCCF6dOQz3PGZ7t5r6XFgJ5mKjfjNMii1988qm', 'uo1f0f2emkionuMAilZRGVFmir84BT5N4StXyh2q0QUmVmCIR3Zf4XUveVUY', '2023-06-01 11:21:59', '2023-06-01 11:21:59', 1, NULL), +(2, 'test0106', 'test0106@gmail.com', NULL, '$2a$12$yRljj7l8Kmx89U8HUlLbd.Bm3Eg4pgWJN5d/xMspE0X3ibadThNHC', NULL, '2023-06-01 05:58:54', '2023-06-24 22:29:00', 2, 1), +(3, 'test0706', 'test0706@gmail.com', NULL, '$2a$12$0Fp39tbhuKC6xu3AWTIOIeNB8KIKDpBW6fMgao7xJMLRSKh.l9xgC', NULL, '2023-06-07 07:23:31', '2023-06-24 22:29:08', 2, 2), +(4, 'fransiska_test', 'test0707@gmail.com', NULL, '$2y$10$R.vDVcCv5ufOaJFr9rb4Je0DrrIoX.11ooalBbMfKojZnAmicDyL2', NULL, '2023-07-06 18:37:55', '2023-07-06 18:37:55', 2, 2), +(5, 'test0109', 'test0109@gmail.com', NULL, '$2y$10$izw5.r5EwLcTdIDkYbb6HeajEHTkHK6.a8xNAtylIxAz8fCARpSNy', NULL, '2023-09-01 08:14:22', '2023-09-01 08:14:22', 2, 2), +(6, 'rossa akmalia', 'rossaakmalia66@gmail.com', NULL, '$2y$10$oYgZ49oPvibYzdu39A18ReINP4GyXmh7byUB0XyK.uhhJMN6/5kWa', NULL, '2023-12-18 21:04:51', '2023-12-18 21:04:51', 2, 1), +(7, 'Percobaan 1', 'percobaan1@gmail.com', NULL, '$2y$10$pZkSSzb/ZYVPJEaumgsz2.nM106KmW1vrNW2a2B0tzb8Knvpzf2iq', NULL, '2024-03-08 07:41:59', '2024-03-08 07:41:59', 2, 2), +(8, 'Admin2', 'admin2@gmail.com', NULL, '$2y$10$9z58abgbHvj1gqSWNnfmyeuvzEYBM0PJ53OMJcr2UaGSaHJE.owq.', NULL, '2024-03-09 02:39:36', '2024-03-09 02:39:36', 1, 2), +(9, 'Percobaan2', 'percobaan2@gmail.com', NULL, '$2y$10$dub9iNoPWHn9LYqrkPbiY.MFF2v3c.oCUKHjkOvBUTp5xCb33jbJ.', NULL, '2024-03-11 04:54:39', '2024-03-11 04:54:39', 2, 2), +(10, 'Case Folding Lower', 'lower@gmail.com', NULL, '$2y$10$7pEoOwfz1ZhZOGXfN35rhuEGMOmKyvhIMzrMDHy535ZfSQZ2y7BFu', NULL, '2024-03-11 08:27:55', '2024-03-11 08:27:55', 2, 2), +(11, 'Case Folding Lower dan Tanda Baca', 'lowertandabaca@gmail.com', NULL, '$2y$10$CXvEpobtXCeLiAPgyXroLusxgbpcyUQpZ39YgRcBnAwm.dNwpn472', NULL, '2024-03-11 08:54:10', '2024-03-11 08:54:10', 2, 2), +(12, 'Case Folding Lower dan Stopwords', 'lowerstopword@gmail.com', NULL, '$2y$10$z.YuIll2yOdv.IZRrU.yI.oehT9IwXxlzW8CVJ0McgUUtuHd2YtwO', NULL, '2024-03-11 09:07:04', '2024-03-11 09:07:04', 2, 2), +(13, 'Case Folding Lower dan Steeming', 'lowersteeming@gmail.com', NULL, '$2y$10$auZMY7SZZ5PFZgmUxKIdOOkRihOcPb8/b6q0fAB/a59lvenVF48Qu', NULL, '2024-03-11 09:20:13', '2024-03-11 09:20:13', 2, 2), +(14, 'Case Folding Lower Tanda Baca dan Stopword', 'lowertandabacastopword@gmail.com', NULL, '$2y$10$OB8eA7t.0eO0jL6jY5cTme4tDa/hq5yT9dSm16/y7VdI3G2HcUjCG', NULL, '2024-03-11 09:39:08', '2024-03-11 09:39:08', 2, 2), +(15, 'Case Folding Lower Tanda Baca dan Steeming', 'lowertandasteeming@gmail.com', NULL, '$2y$10$nn.yuel00two2Hvo/Cw0/eDDctUVeRdMRfnKcRhrmHYItQU.eaUA2', NULL, '2024-03-11 09:50:59', '2024-03-11 09:50:59', 2, 2), +(16, 'Case Folding Lower Stopword dan Steeming', 'lowerstopwordsteeming@gmail.com', NULL, '$2y$10$v2yAYfo/UnXC03tN6cj4fOGqi/m.qXxvvnHq03X2UVFb954vpwxsG', NULL, '2024-03-11 10:13:31', '2024-03-11 10:13:31', 2, 2), +(17, 'Case Folding Lower Tanda Baca Stopword dan Steeming', 'lowertandastopwordsteeming@gmail.com', NULL, '$2y$10$s4V7CNM12G5W3cvt5YC2EOKKGIWIJb6/FdfIgqfHo9KBAG.jTHon.', NULL, '2024-03-11 10:22:44', '2024-03-11 10:22:44', 2, 2), +(19, 'Case Folding Lower Tanda Baca non Sistematis', 'lowertandabacanonsistematis@gmail.com', NULL, '$2y$10$aOpVIl3u8/4.rymY6qKUvOLKMMGT7Cn0pL.TSropSiDX/l6ElnOji', NULL, '2024-03-24 00:50:14', '2024-03-24 00:51:46', 2, 2), +(20, 'Case Folding Lower Tanda Baca non Sistematis Stopword', 'lowertandasistematisstopword@gmail.com', NULL, '$2y$10$QGcfa26RyvHO9i/qOBWT3Ox5BdM46/mrTm/P.Jz4jz3vc5PUwcofK', NULL, '2024-03-24 01:45:58', '2024-03-24 01:45:58', 2, 2), +(21, '4 Kunci Jawaban', 'kuncijawaban4@gmail.com', NULL, '$2y$10$4Yd1AMuS1EQezGWfxyqM5uaNSlSxLq5R1GK6nzPEgFTl5avvCj2zi', NULL, '2024-03-24 02:20:19', '2024-03-24 02:20:19', 2, 1), +(22, 'Kunci 4 Lower Tanda Baca Non Sistematis Steeming', 'kunci4lowertandanonsistematissteeming@gmail.com', NULL, '$2y$10$uScWr2R3Qk3537fkXOL0SOjmwb7RhLDUDEkzCRGr99s5/NlcOSBQ2', NULL, '2024-03-28 08:58:44', '2024-03-28 08:58:44', 2, 1), +(23, 'Case Folding Lower Tanda Baca non Sistematis Steeming', 'lowertandanonsistematissteeming@gmail.com', NULL, '$2y$10$Jp4Mh/Oof0wFW9x8BiW7Auf1c2ylmnDkxio1ev1n5YZn0NmpbFRDW', NULL, '2024-04-01 04:00:03', '2024-04-01 04:00:03', 2, 1), +(24, 'Case Folding Sinonim', 'sinonim@gmail.com', NULL, '$2y$10$ERwH6SKrzJBhBySgdZC3uObFrLEINNfm5SyBQT/Kf86XaVOcCV0IS', NULL, '2024-04-01 04:37:15', '2024-04-01 04:37:15', 2, 1), +(25, 'User Baru', 'userbaru@gmail.com', NULL, '$2y$10$n65rIKYSWkY9R.Ad0G/IYea0v9jInnQdB2kLlQXBGFAzZPhLHwsO6', NULL, '2024-04-16 17:14:21', '2024-04-16 17:14:21', 2, 1), +(26, 'Jawaban Benar Ori', 'jawabanbenarori@gmail.com', NULL, '$2y$10$hTvv2Aqq5I1eHRrUckIWE.tKnmwXrerwCVYRaf6kym9IqcWawJBm6', NULL, '2024-04-26 13:24:15', '2024-04-26 13:24:15', 2, 1), +(27, 'Jawaban Tanda Baca', 'jawabantandabaca@gmail.com', NULL, '$2y$10$FWZMqgfWPfkOjC1adYonVeaxOwnjfJi/8dbQhQK7u6JhsxTGMy2r.', NULL, '2024-04-27 05:48:46', '2024-04-27 05:48:46', 2, 2), +(28, 'Jawaban Lower', 'jawabanlower@gmail.com', NULL, '$2y$10$Y4eKB0bawA.41ti.AiPI3OiicPkUpGTSQHNj5Mm.zt43h2Kk4jkt6', NULL, '2024-04-27 13:39:01', '2024-04-27 13:39:01', 2, 2), +(29, 'Jawaban Stopword', 'jawavabstopword@gmail.com', NULL, '$2y$10$Qjxavi3Gtx2KK92aK/Nwt.eaFowxQpi5dGMnYlvSmR6kMljR6JT0i', NULL, '2024-04-27 19:22:56', '2024-04-27 19:22:56', 2, 2), +(30, 'Jawaban Steeming', 'jawabansteeming@gmail.com', NULL, '$2y$10$49SDWTyotwnCF8axIYem2.vL9fKZD8kj0bOIUpOqxePtrEwTbdYhm', NULL, '2024-04-28 05:53:05', '2024-04-28 05:53:05', 2, 2), +(31, 'Jawaban Sinonim', 'jawabansinonim@gmail.com', NULL, '$2y$10$aM6tygESjJ2wzeqjoJH96OE92NuT.pOnVYh71wyREpqKAUTxJbcvi', NULL, '2024-04-28 13:55:02', '2024-04-28 13:55:02', 2, 2), +(32, 'Jawaban Tanda Baca Lower', 'jawabantandabacalower@gmail.com', NULL, '$2y$10$704t.mYRLNG4AR8SMZiileeFV6OuyZ0NV/NphYRReRxN4J9lQn7oG', NULL, '2024-05-01 19:20:09', '2024-05-01 19:20:09', 2, 2), +(33, 'abc', 'abc@gmail.com', NULL, '$2y$10$rJfslKPiEYaCSA3RMpHnX.ZDa7YFALUW3yF/Agz75X9R8c1vPafIO', NULL, '2024-05-01 20:40:33', '2024-05-01 20:40:33', 2, 1), +(34, 'baru', 'baru@gmail.com', NULL, '$2y$10$RDVAb1t9jO0FHG9mQhE3OOsOZFfKXdCNohzLepiV2WCcNHx59Flfi', NULL, '2024-05-01 21:30:04', '2024-05-01 21:30:04', 2, 1), +(35, 'Jawaban Tanda Baca Lower Steeming', 'jawabantandalowersteeming@gmail.com', NULL, '$2y$10$vvEa9rUzWjYmYgdFcuW9iOnNOmdvHMzazcJrxw/7.Pjjb8LRMgftK', NULL, '2024-05-02 16:39:40', '2024-05-02 16:39:40', 2, 1), +(36, 'Jawaban Tanda Lower Stop Steem', 'jawabantandalowerstopsteem@gmail.com', NULL, '$2y$10$WO3LfngPWcwBjjkkQHKO0.q33H7Rt5vN9kzJ3j93BAX/KpUl6ejSi', NULL, '2024-05-03 03:10:40', '2024-05-03 03:10:40', 2, 1), +(37, 'SteemingBaru', 'steemingbaru@gmail.com', NULL, '$2y$10$y0jzWd35jGpRTZ3U0egVwefyGNGpFCBUySYqznCrkIvA0VTRNuWHK', NULL, '2024-06-03 05:06:10', '2024-06-03 05:06:10', 2, 1), +(38, 'aaa', 'aaaa@gmail.com', NULL, '$2y$10$2WGpk17g.bNpEDL6N2Zdz.cJkr9jBvnyr2iAmAyDMTvsSoaCecB9G', NULL, '2024-06-09 20:12:38', '2024-06-09 20:12:38', 2, 3), +(39, 'Ifa Indrian', 'ifa@gmail.com', NULL, '$2y$10$0y6eOsEicvzhbFOvfTdbluepHmaMI4bunJZ6G06bgpSNkWHvtcfN6', NULL, '2024-06-10 01:50:09', '2024-06-10 01:50:09', 2, 1), +(40, 'Della Jannata', 'della@gmail.com', NULL, '$2y$10$99RvTjjUO.VkaxPyPzKSKepafxpo74RqaPcBtkdXbulOf5Jwna2zK', NULL, '2024-06-10 03:09:07', '2024-06-10 03:09:07', 2, 1), +(41, 'Lia Puspita', 'lia@gmail.com', NULL, '$2y$10$ObLkI4KvNbSM5N3RW4c5zu1mhF9euiSLoXLo5W6siAUsoCAUn/gGu', NULL, '2024-06-10 03:53:51', '2024-06-10 03:53:51', 2, 1), +(42, 'Rossa', 'rossa@gmail.com', NULL, '$2y$10$1dYp/OskcCPxeC8pqT76Ne3Vds2ULE0XxCj6iqAQMbcbryaOwB682', NULL, '2024-06-22 05:41:34', '2024-06-22 05:41:34', 2, 1), +(43, 'pelajar', 'pelajar@gmail.com', NULL, '$2y$10$JJ4o6TF4pm9yE2L9wBLJSuED5fwczIKf6PVye.y9C0x8Yy2tDf0Dy', NULL, '2024-06-23 07:44:13', '2024-06-23 07:44:13', 2, 1), +(44, 'Normalisasi', 'normalisasi@gmail.com', NULL, '$2y$10$h8SNuFcOOKUhBPwaElGm8uKNR7lANLXgGAhZ5JncIosyQ2c4FC2MW', NULL, '2024-06-24 11:39:34', '2024-06-24 11:39:34', 2, 1), +(45, 'revisi', 'revisi@gmail.com', NULL, '$2y$10$EwdW/pqRIjfx8.CGkrWkp..111VmhrfMeKMXDZFz5drvHNkLmGEMG', NULL, '2024-06-30 10:50:56', '2024-06-30 10:50:56', 2, 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_answer` +-- + +CREATE TABLE `user_answer` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `essay_question_id` bigint UNSIGNED NOT NULL, + `answer` text COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `user_answer` +-- + +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 2, 1, 'Karena nilai dari variabel tersebut berbentuk bilangan bulat', '2023-06-01 18:47:46', '2023-06-01 18:47:46', NULL), +(2, 2, 2, 'Langkah-langkah perhitungan volume balok adalah mengalikan panjang, lebar, dan tinggi balok. Sedangkan langkah-langkah perhitungan luas permukaan balok adalah menghitung jumlah sisi-sisi balok (2 sisi panjang * lebar, 2 sisi panjang * tinggi, dan 2 sisi lebar * tinggi) kemudian menjumlahkannya.', '2023-06-01 18:47:46', '2023-06-01 18:47:46', NULL), +(3, 2, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, Anda dapat mengganti nilai pada bagian panjang = 10, lebar = 6, dan tinggi = 7 dengan nilai yang diinginkan', '2023-06-01 18:47:46', '2023-06-01 18:47:46', NULL), +(4, 2, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', '2023-06-01 19:32:48', '2023-06-01 19:32:48', NULL), +(5, 2, 5, 'Alur program dari kode di atas adalah sebagai berikut:\n\n• Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java.\n• Kemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80.\n• Program akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70.\n• Jika kondisi dalam blok if (nilai > 70) bernilai true, program akan mengeksekusi pernyataan yang ada di dalam blok if, yaitu mencetak string \"Selamat anda lulus!\" menggunakan System.out.print().\n• Jika kondisi dalam blok if bernilai false, program akan melanjutkan ke pernyataan setelah blok if dan program akan selesai.', '2023-06-01 19:32:49', '2023-06-01 19:32:49', NULL), +(6, 2, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2023-06-01 19:32:49', '2023-06-01 19:32:49', NULL), +(7, 2, 7, 'If-else digunakan untuk membagi kondisi menjadi dua kemungkinan. Dalam studi kasus diatas, IF digunakan untuk melakukan pengecekan apakah nilai itemCost lebih besar dari 24. Jika kondisi tersebut terpenuhi, maka variabel order bernilai \"High Value Item!\" akan dicetak. Sedangkan jika nilai itemCost tidak lebih dari 24, maka variabel order bernilai “Low Order Value!”', '2023-06-01 19:45:23', '2023-06-01 19:45:23', NULL), +(8, 2, 8, '• Mendeklarasikan kelas Order.\n• Mendeklarasikan method main sebagai method utama yang akan dieksekusi saat program dijalankan.\n• Mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99.\n• Mendeklarasikan variabel order dengan tipe data String dan memberikannya nilai awal berupa string kosong (\"\").\n• Melakukan pengecekan kondisi menggunakan pernyataan if. Kondisi yang dievaluasi adalah itemCost > 24.00.\n• Jika kondisi tersebut benar (nilai itemCost lebih besar dari 24.00), maka blok kode di dalam if akan dieksekusi.\n• Dalam blok if, nilai variabel order diubah menjadi \"High Value Item!\".\n• Jika kondisi dalam if tidak terpenuhi (nilai itemCost tidak lebih besar dari 24.00), maka blok kode di dalam else akan dieksekusi.\n• Dalam blok else, nilai variabel order diubah menjadi \"Low Value Item!\".\n• Setelah blok if-else selesai dieksekusi, pesan yang ada dalam variabel order akan dicetak menggunakan System.out.print.\n• Output yang ditampilkan akan bergantung pada nilai itemCost. Jika itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan dicetak. Jika tidak, maka pesan \"Low Value Item!\" akan dicetak.', '2023-06-01 19:45:23', '2023-06-01 19:45:23', NULL), +(9, 2, 9, 'Program akan menampilkan output “Low Value Item”', '2023-06-01 19:45:23', '2023-06-01 19:45:23', NULL), +(10, 2, 10, 'Dengan menggunakan default, program akan menangani situasi di mana nilai shipping tidak cocok dengan case-case yang didefinisikan sebelumnya. Default berfungsi sebagai pilihan terakhir yang akan dieksekusi jika tidak ada case yang cocok dengan nilai yang dievaluasi.', '2023-06-01 20:47:17', '2023-06-01 20:47:17', NULL), +(11, 2, 11, 'Alur program dari baris kode switch-case di atas adalah sebagai berikut:\n\nProgram dimulai dengan mendeklarasikan variabel shipping dengan nilai \"Express\" dan variabel shippingCost tanpa nilai awal. Kemudian, program melanjutkan ke switch statement dengan mengevaluasi nilai dari variabel shipping. \n\nProgram akan membandingkan nilai shipping dengan setiap case yang ada. Jika nilai shipping cocok dengan salah satu case, program akan melompat ke blok kode yang sesuai dengan case tersebut.\nJika nilai shipping adalah \"Regular\", maka variabel shippingCost akan diatur menjadi 0.\nJika nilai shipping adalah \"Express\", maka variabel shippingCost akan diatur menjadi 1.75.\nJika nilai shipping tidak cocok dengan case-case di atas, program akan melompat ke blok kode dalam default.\nPada blok kode default, variabel shippingCost akan diatur menjadi 0.50.\n\nSetelah switch statement selesai dieksekusi, program akan mencetak nilai shippingCost dengan menggunakan pernyataan System.out.print(\"Shipping cost: \" + shippingCost);.\nDengan demikian, alur program akan menentukan nilai shippingCost berdasarkan nilai shipping yang dievaluasi menggunakan switch-case.', '2023-06-01 20:47:17', '2023-06-01 20:47:17', NULL), +(12, 2, 12, 'Pada saat nilai shipping tidak bernilai regular maupun express, sehingga mengeluarkan nilai default, yaitu 0.05', '2023-06-01 20:47:17', '2023-06-01 20:47:17', NULL), +(13, 2, 13, 'Karena variabel isMember di rancang untuk menampung nilai salah saja', '2023-06-03 05:19:09', '2023-06-03 05:55:47', NULL), +(14, 2, 14, '• Jika nilai isMember adalah false, maka program akan masuk kedalam pemilihan else.\n• Program akan melakukan pengecekan total. Diketahui total adalah 200000, sehingga masuk kedalam blok pemilihan ketiga dengan diskon 15 %\n• Sehingga, output dari program tersebut adalah “diskon yang didapatkan adalah 10%”', '2023-06-03 05:19:09', '2023-06-03 05:55:47', NULL), +(15, 2, 15, 'program akan mengeluarkan output “diskon yang didapatkan adalah 90%”', '2023-06-03 05:19:09', '2023-06-03 05:34:08', NULL), +(16, 2, 16, 'd', '2023-06-03 06:38:15', '2023-06-03 06:39:41', NULL), +(17, 2, 17, 'b', '2023-06-03 06:38:15', '2023-06-03 06:38:15', NULL), +(18, 2, 18, 'c', '2023-06-03 06:38:15', '2023-06-03 06:38:15', NULL), +(19, 2, 19, 'Pada kode program tersebut, i++ digunakan sebagai operator penambahan (increment) pada variabel i.\n\nKegunaan dari i++ adalah untuk menambahkan nilai 1 pada variabel i setiap kali perulangan dilakukan. Dalam konteks kode program yang diberikan, setiap iterasi perulangan akan mencetak nilai i dan kemudian nilai i akan ditambah 1 menggunakan i++.\n\nSehingga, i++ berguna untuk mengatur aliran perulangan dan menghindari terjadinya perulangan tak terbatas (infinite loop) dengan memastikan bahwa kondisi perulangan pada while-loop (i < number) akan berhenti pada suatu titik saat nilai i mencapai nilai number yang ditentukan.', '2023-06-04 06:27:46', '2023-06-04 06:27:46', NULL), +(20, 2, 20, 'Variabel number diinisialisasi dengan nilai 6, dan variabel i diinisialisasi dengan nilai 1. Kondisi i < number dievaluasi. Jika kondisi tersebut terpenuhi (nilai i kurang dari number), maka blok kode di dalam while loop akan dieksekusi. Jika kondisi tidak terpenuhi, maka program akan keluar dari loop. Di dalam loop, perintah System.out.print(i) akan mencetak nilai i ke layar. \n\nPada iterasi pertama, nilai i adalah 1, sehingga angka 1 akan dicetak. Selanjutnya, perintah i++ akan menambahkan nilai i sebesar 1. Proses di atas akan diulang terus menerus selama kondisi i < number masih terpenuhi. Pada setiap iterasi, nilai i akan bertambah 1 dan angka tersebut akan dicetak ke layar. \n\nLoop akan berhenti saat nilai i sama dengan atau melebihi nilai number, yaitu saat i bernilai 6. Setelah loop selesai, program akan keluar dari blok while dan program akan berakhir.', '2023-06-04 06:27:46', '2023-06-04 06:27:46', NULL), +(21, 2, 21, 'Output dari kode program di atas adalah tidak ada. Hal ini dikarenakan kondisi pada while loop, yaitu i > number, tidak terpenuhi pada awalnya. Karena nilai awal i adalah 1 dan number adalah 6, maka kondisi 1 > 6 akan bernilai false. Oleh karena itu, blok kode dalam while loop tidak akan dieksekusi, sehingga tidak ada output yang dicetak ke layar.', '2023-06-04 06:27:46', '2023-06-04 06:27:46', NULL), +(22, 2, 22, 'Pada program Fibonacci, fungsi dari kode “int next = first + second;” adalah untuk menghitung nilai angka selanjutnya dalam deret Fibonacci.\n\nPada setiap iterasi perulangan, nilai next dihitung dengan menjumlahkan nilai first dan second. Kemudian, nilai next akan menjadi angka baru dalam deret Fibonacci.\n\nMisalnya, pada awalnya first memiliki nilai 0 dan second memiliki nilai 1. Pada iterasi pertama, next akan dihitung sebagai 0 + 1 = 1. Setelah itu, nilai first akan diperbarui menjadi 1 dan nilai second akan diperbarui menjadi 1.\n\nPada iterasi berikutnya, next akan dihitung sebagai 1 + 1 = 2. Proses ini akan terus berlanjut sampai mencapai jumlah angka Fibonacci yang diinginkan.\n\nDengan mengupdate nilai first dan second setiap kali perulangan dilakukan, kita dapat menghasilkan deret Fibonacci dengan benar.', '2023-06-04 06:48:55', '2023-06-04 06:48:55', NULL), +(23, 2, 23, 'Variabel next diinisialisasi dengan hasil penjumlahan first dan second.\nNilai next dicetak menggunakan perintah System.out.print(next + \" \"), sehingga akan mencetak nilai next diikuti dengan spasi. Nilai first diperbarui dengan nilai second. Nilai second diperbarui dengan nilai next. \n\nVariabel i (yang merupakan counter) ditambahkan dengan 1 menggunakan perintah i++. Kondisi i <= n dievaluasi. Jika kondisi tersebut terpenuhi, maka program akan kembali ke langkah 1 dan melanjutkan iterasi berikutnya. Jika kondisi tidak terpenuhi, maka program akan keluar dari loop.\n\nLangkah-langkah 1-6 akan terus diulang sampai kondisi i <= n tidak terpenuhi.', '2023-06-04 06:48:55', '2023-06-04 06:48:55', NULL), +(24, 2, 24, 'Deret Fibonnaci: \n0 1 1 2 3 5 8 13 21', '2023-06-04 06:48:55', '2023-06-04 06:48:55', NULL), +(25, 2, 25, 'Kode program tersebut berfungsi untuk menentukan jumlah baris piramida bintang. Jika 5 diganti menjadi 7, maka baris piramida menjadi 7 baris', '2023-06-04 06:58:24', '2023-06-04 06:58:24', NULL), +(26, 2, 26, 'Perulangan akan dimulai dari nilai 1 dan berakhir pada saat nilai “j” sama dengan atau kurang dari nilai “i”. Saat kondisi terpenuhi, satu bintang akan ditambahkan ke variabel “output”, jumlah bintang akan terus bertambah seiring dengan nilai “i” yang meningkat.', '2023-06-04 06:58:24', '2023-06-04 06:58:24', NULL), +(27, 2, 27, 'Jumlah baris piramida akan bertambah 1 baris, sehingga menjadi 6 baris, dengan baris terakhir memiliki 6 bintang.', '2023-06-04 06:58:24', '2023-06-04 06:58:24', NULL), +(28, 2, 28, 'Yang merubah array menjadi data string adalah baris kode Arrays.toString(topics)', '2023-06-04 07:00:54', '2023-06-04 07:00:54', NULL), +(29, 2, 29, 'Array topics berisi empat elemen yang mewakili topik-topik berita, yaitu \"Opinion\", \"Tech\", \"Science\", dan \"Health\". Variabel topicArray diinisialisasi dengan hasil pemanggilan Arrays.toString(topics). Fungsi Arrays.toString() digunakan untuk mengonversi array topics menjadi string dengan format yang sesuai.\n\nSelanjutnya, perintah System.out.print(topicArray) digunakan untuk mencetak isi dari variabel topicArray, yaitu string yang berisi daftar topik-topik berita yang diubah dari array topics.\nKetika program dijalankan, string yang berisi daftar topik-topik berita akan ditampilkan sebagai output.', '2023-06-04 07:00:54', '2023-06-04 07:00:54', NULL), +(30, 2, 30, 'Error. Karena elemen array berisi bilangan bulat, sedangkan tipe data array adalah String', '2023-06-04 07:00:54', '2023-06-04 07:00:54', NULL), +(31, 2, 31, 'Fungsi dari kode tersebut adalah untuk membatasi jumlah perulangan sebanyak jumlah panjang data dari array nilai.', '2023-06-04 07:05:09', '2023-06-04 07:05:09', NULL), +(34, 2, 32, 'Perulangan akan dimulai dari nilai 0 dan berakhir pada saat nilai “j” kurang dari jumlah panjang array nilai. Saat kondisi terpenuhi, satu nilai akan ditambahkan ke variabel “total', '2023-06-04 07:05:09', '2023-06-04 07:05:09', NULL), +(37, 2, 33, 'Rata-rata yang didapatkan adalah 82', '2023-06-04 07:05:09', '2023-06-04 07:05:09', NULL), +(40, 2, 34, 'untuk memanggil fungsi tampil()', '2023-06-04 07:15:40', '2023-06-04 07:15:40', NULL), +(41, 2, 35, 'mengeluarkan output', '2023-06-04 07:15:40', '2023-06-04 07:15:40', NULL), +(42, 2, 36, 'program tidak akan mengeluarkan output apapun', '2023-06-04 07:15:40', '2023-06-04 07:15:40', NULL), +(43, 2, 37, 'ya, terletak pada fungsi hitungBunga, dengan memanggil dirinya sendiri', '2023-06-04 07:19:22', '2023-06-04 07:19:22', NULL), +(44, 2, 38, 'jhkk', '2023-06-04 07:19:22', '2023-06-04 07:28:54', NULL), +(45, 2, 39, '1402551.73', '2023-06-04 07:19:22', '2023-06-04 07:27:28', NULL), +(46, 3, 1, 'variabel panjang, lebar, tinggi, vBalok dan lBalok b', '2023-06-07 07:34:36', '2023-06-07 07:34:36', NULL), +(47, 3, 2, 'langkah-langkah perhitungan volume dan luas permukaan balok', '2023-06-07 07:34:36', '2023-06-07 07:34:36', NULL), +(48, 3, 3, 'engubah nilai panjang, lebar, dan tinggi', '2023-06-07 07:34:36', '2023-06-07 07:34:36', NULL), +(49, 3, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi,', '2023-07-06 19:31:59', '2023-07-06 19:31:59', NULL), +(50, 3, 5, 'Alur program dari kode di atas adalah sebagai berikut:\n\n• Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java.\n• Kemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80.\n• Program akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70.', '2023-07-06 19:31:59', '2023-07-06 19:31:59', NULL), +(51, 3, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2023-07-06 19:31:59', '2023-07-06 19:31:59', NULL), +(52, 4, 1, 'Karena nilai dari variabel tersebut berbentuk bilangan bulat', '2023-07-06 20:23:08', '2023-07-06 20:23:08', NULL), +(53, 4, 2, 'A', '2023-07-06 20:23:08', '2023-07-06 20:23:08', NULL), +(54, 4, 3, 'S', '2023-07-06 20:23:08', '2023-07-06 20:23:08', NULL), +(55, 6, 1, 'Karena nilai dari variabel tersebut berbentuk bilangan bulat', '2024-01-22 22:07:25', '2024-01-22 22:07:25', NULL), +(56, 6, 2, 'Langkah-langkah perhitungan volume balok adalah mengalikan panjang, lebar, dan tinggi balok. Sedangkan langkah-langkah perhitungan luas permukaan balok adalah menghitung jumlah sisi-sisi balok (2 sisi panjang * lebar, 2 sisi panjang * tinggi, dan 2 sisi lebar * tinggi) kemudian menjumlahkannya.', '2024-01-22 22:07:25', '2024-01-22 22:07:25', NULL), +(57, 6, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, Anda dapat mengganti nilai pada bagian panjang = 10, lebar = 6, dan tinggi = 7 dengan nilai yang diinginkan.', '2024-01-22 22:07:25', '2024-01-22 22:07:25', NULL), +(58, 6, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', '2024-01-22 22:49:43', '2024-01-22 22:49:43', NULL), +(59, 6, 5, 'Alur program dari kode di atas adalah sebagai berikut:\n\n• Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java.\n• Kemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80.\n• Program akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70.\n• Jika kondisi dalam blok if (nilai > 70) bernilai true, program akan mengeksekusi pernyataan yang ada di dalam blok if, yaitu mencetak string \"Selamat anda lulus!\" menggunakan System.out.print().\n• Jika kondisi dalam blok if bernilai false, program akan melanjutkan ke pernyataan setelah blok if dan program akan selesai.', '2024-01-22 22:49:43', '2024-01-22 22:49:43', NULL), +(60, 6, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2024-01-22 22:49:44', '2024-01-22 22:49:44', NULL), +(61, 6, 7, 'If-else digunakan untuk membagi kondisi menjadi dua kemungkinan. Dalam studi kasus diatas, IF digunakan untuk melakukan pengecekan apakah nilai itemCost lebih besar dari 24. Jika kondisi tersebut terpenuhi, maka variabel order bernilai \"High Value Item!\" akan dicetak. Sedangkan jika nilai itemCost tidak lebih dari 24, maka variabel order bernilai “Low Order Value!”', '2024-01-30 21:58:48', '2024-01-30 21:58:48', NULL), +(62, 6, 8, '• Mendeklarasikan kelas Order.\n• Mendeklarasikan method main sebagai method utama yang akan dieksekusi saat program dijalankan.\n• Mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99.\n• Mendeklarasikan variabel order dengan tipe data String dan memberikannya nilai awal berupa string kosong (\"\").\n• Melakukan pengecekan kondisi menggunakan pernyataan if. Kondisi yang dievaluasi adalah itemCost > 24.00.\n• Jika kondisi tersebut benar (nilai itemCost lebih besar dari 24.00), maka blok kode di dalam if akan dieksekusi.\n• Dalam blok if, nilai variabel order diubah menjadi \"High Value Item!\".\n• Jika kondisi dalam if tidak terpenuhi (nilai itemCost tidak lebih besar dari 24.00), maka blok kode di dalam else akan dieksekusi.\n• Dalam blok else, nilai variabel order diubah menjadi \"Low Value Item!\".\n• Setelah blok if-else selesai dieksekusi, pesan yang ada dalam variabel order akan dicetak menggunakan System.out.print.\n• Output yang ditampilkan akan bergantung pada nilai itemCost. Jika itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan dicetak. Jika tidak, maka pesan \"Low Value Item!\" akan dicetak.', '2024-01-30 21:58:48', '2024-01-30 21:58:48', NULL), +(63, 6, 9, 'Program akan menampilkan output “Low Value Item”', '2024-01-30 21:58:48', '2024-01-30 21:58:48', NULL), +(64, 6, 10, 'Dengan menggunakan default, program akan menangani situasi di mana nilai shipping tidak cocok dengan case-case yang didefinisikan sebelumnya. Default berfungsi sebagai pilihan terakhir yang akan dieksekusi jika tidak ada case yang cocok dengan nilai yang dievaluasi.', '2024-02-26 20:23:20', '2024-02-26 20:23:20', NULL), +(65, 6, 11, 'Program dimulai dengan mendeklarasikan variabel shipping dengan nilai \"Express\" dan variabel shippingCost tanpa nilai awal. Kemudian, program melanjutkan ke switch statement dengan mengevaluasi nilai dari variabel shipping. \n\nProgram akan membandingkan nilai shipping dengan setiap case yang ada. Jika nilai shipping cocok dengan salah satu case, program akan melompat ke blok kode yang sesuai dengan case tersebut.\nJika nilai shipping adalah \"Regular\", maka variabel shippingCost akan diatur menjadi 0.\nJika nilai shipping adalah \"Express\", maka variabel shippingCost akan diatur menjadi 1.75.\nJika nilai shipping tidak cocok dengan case-case di atas, program akan melompat ke blok kode dalam default.\nPada blok kode default, variabel shippingCost akan diatur menjadi 0.50.', '2024-02-26 20:23:20', '2024-02-26 20:23:20', NULL), +(66, 6, 12, 'Pada saat nilai shipping tidak bernilai regular maupun express, sehingga mengeluarkan nilai default, yaitu 0.05', '2024-02-26 20:23:20', '2024-02-26 20:23:20', NULL), +(67, 6, 13, 'Karena variabel isMember di rancang untuk menampung nilai salah atau benar', '2024-02-26 20:26:17', '2024-02-26 20:26:17', NULL), +(68, 6, 14, '• Jika nilai isMember adalah false, maka program akan masuk kedalam pemilihan else.\n• Program akan melakukan pengecekan total. Diketahui total adalah 200000, sehingga masuk kedalam blok pemilihan ketiga dengan diskon 15 %\n• Sehingga, output dari program tersebut adalah “diskon yang didapatkan adalah 15%”', '2024-02-26 20:26:17', '2024-02-26 20:26:17', NULL), +(69, 6, 15, 'program akan mengeluarkan output “diskon yang didapatkan adalah 10%”', '2024-02-26 20:26:17', '2024-02-26 20:26:17', NULL), +(71, 6, 16, 'aa', '2024-03-03 10:12:59', '2024-03-03 10:12:59', NULL), +(72, 6, 17, 'aaa', '2024-03-03 10:31:04', '2024-03-03 10:31:04', NULL), +(73, 6, 18, 'aa', '2024-03-03 10:31:08', '2024-03-03 10:31:08', NULL), +(74, 7, 1, 'Digunakan untuk menyimpan ukuran-ukuran geometris dan perhitungan matematika terkait dengan balok. Tipe data int cocok digunakan karena ukuran-ukuran tersebut umumnya diukur dalam bilangan bulat seperti sentimeter atau meter.', '2024-03-08 07:52:02', '2024-03-08 07:52:02', NULL), +(75, 7, 2, 'Program tersebut menghitung volume dan luas permukaan balok dengan mengalikan panjang, lebar, dan tinggi, kemudian menggunakan rumus yang sesuai. Volume dihitung dengan panjang * lebar * tinggi, sedangkan luas permukaan dihitung dengan rumus 2 * (panjang * lebar + panjang * tinggi + lebar * tinggi). Hasilnya dicetak sebagai output program.', '2024-03-08 07:52:13', '2024-03-08 07:52:13', NULL), +(76, 7, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok dalam kode program, cukup ubah nilai-nilai tersebut langsung pada bagian inisialisasi variabel panjang, lebar, dan tinggi. Setelah perubahan dilakukan, jalankan kembali program untuk mendapatkan hasil perhitungan dengan nilai yang baru.', '2024-03-08 07:52:20', '2024-03-08 07:52:20', NULL), +(93, 7, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', '2024-03-08 08:37:07', '2024-03-08 08:37:07', NULL), +(94, 7, 5, 'Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java.\nKemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80.\nProgram akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70.\nJika kondisi dalam blok if (nilai > 70) bernilai true, program akan mengeksekusi pernyataan yang ada di dalam blok if, yaitu mencetak string \"Selamat anda lulus!\" menggunakan System.out.print().\n• Jika kondisi dalam blok if bernilai false, program akan melanjutkan ke pernyataan setelah blok if dan program akan selesai.', '2024-03-08 08:37:12', '2024-03-08 08:37:12', NULL), +(95, 7, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2024-03-08 08:37:17', '2024-03-08 08:37:17', NULL), +(96, 7, 7, 'If-else digunakan untuk membagi kondisi menjadi dua kemungkinan. Dalam studi kasus diatas, IF digunakan untuk melakukan pengecekan apakah nilai itemCost lebih besar dari 24. Jika kondisi tersebut terpenuhi, maka variabel order bernilai \"High Value Item!\" akan dicetak. Sedangkan jika nilai itemCost tidak lebih dari 24, maka variabel order bernilai “Low Order Value!”', '2024-03-08 08:39:34', '2024-03-08 08:39:34', NULL), +(97, 7, 8, '• Mendeklarasikan kelas Order.\n• Mendeklarasikan method main sebagai method utama yang akan dieksekusi saat program dijalankan.\n• Mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99.\n• Mendeklarasikan variabel order dengan tipe data String dan memberikannya nilai awal berupa string kosong (\"\").\n• Melakukan pengecekan kondisi menggunakan pernyataan if. Kondisi yang dievaluasi adalah itemCost > 24.00.\n• Jika kondisi tersebut benar (nilai itemCost lebih besar dari 24.00), maka blok kode di dalam if akan dieksekusi.\n• Dalam blok if, nilai variabel order diubah menjadi \"High Value Item!\".\n• Jika kondisi dalam if tidak terpenuhi (nilai itemCost tidak lebih besar dari 24.00), maka blok kode di dalam else akan dieksekusi.\n• Dalam blok else, nilai variabel order diubah menjadi \"Low Value Item!\".\n• Setelah blok if-else selesai dieksekusi, pesan yang ada dalam variabel order akan dicetak menggunakan System.out.print.\n• Output yang ditampilkan akan bergantung pada nilai itemCost. Jika itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan dicetak. Jika tidak, maka pesan \"Low Value Item!\" akan dicetak.', '2024-03-08 08:39:50', '2024-03-08 08:39:50', NULL), +(98, 7, 9, 'Program akan menampilkan output “Low Value Item”', '2024-03-08 08:39:56', '2024-03-08 08:39:56', NULL), +(99, 7, 10, 'Baris program default dalam switch statement menentukan tindakan yang akan diambil jika tidak ada case yang cocok dengan nilai yang dievaluasi oleh switch statement tersebut. Dalam kasus tersebut, jika nilai shipping tidak cocok dengan \"Regular\" atau \"Express\", maka nilai shippingCost akan diatur menjadi 0.50.', '2024-03-08 09:20:18', '2024-03-08 09:20:18', NULL), +(100, 7, 11, 'Alur program dari baris kode switch-case di atas adalah sebagai berikut:\n\n1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\".\nSwitch statement digunakan untuk mengevaluasi nilai dari variabel shipping.\nNilai dari variabel shipping dibandingkan dengan setiap case dalam switch statement.\n2. Jika nilai shipping cocok dengan nilai pada case \"Regular\", maka blok kode di bawah case \"Regular\" akan dieksekusi, yaitu shippingCost akan diatur menjadi 0.\n3. Jika nilai shipping cocok dengan nilai pada case \"Express\", maka blok kode di bawah case \"Express\" akan dieksekusi, yaitu shippingCost akan diatur menjadi 1.75.\n4. Jika nilai shipping tidak cocok dengan nilai pada case \"Regular\" atau \"Express\", maka blok kode di bawah default akan dieksekusi, yaitu shippingCost akan diatur menjadi 0.50.\n5. Setelah switch statement dieksekusi, nilai shippingCost akan dicetak sebagai hasil akhir.', '2024-03-08 09:20:26', '2024-03-08 09:20:26', NULL), +(101, 7, 12, 'Dalam kode yang diberikan, tidak ada case atau kondisi yang mengatur shippingCost menjadi 0.05. Oleh karena itu, shippingCost tidak akan bernilai 0.05 dalam program tersebut.\n\nDalam switch-case yang diberikan, ada tiga kemungkinan nilai yang akan membuat shippingCost memiliki nilai tertentu:\n\nJika nilai shipping adalah \"Regular\", maka shippingCost akan menjadi 0.\nJika nilai shipping adalah \"Express\", maka shippingCost akan menjadi 1.75.\nJika nilai shipping tidak cocok dengan \"Regular\" atau \"Express\", maka shippingCost akan menjadi 0.50 melalui blok default.\nSehingga, tidak ada kondisi dalam program tersebut yang akan membuat shippingCost menjadi 0.05.', '2024-03-08 09:20:29', '2024-03-08 09:20:29', NULL), +(102, 9, 1, 'Digunakan untuk menyimpan ukuran-ukuran geometris dan perhitungan matematika terkait dengan balok. Tipe data int cocok digunakan karena ukuran-ukuran tersebut umumnya diukur dalam bilangan bulat seperti sentimeter atau meter.', '2024-03-11 05:00:58', '2024-03-11 05:00:58', NULL), +(103, 9, 2, 'Program tersebut menghitung volume dan luas permukaan balok dengan mengalikan panjang, lebar, dan tinggi, kemudian menggunakan rumus yang sesuai. Volume dihitung dengan panjang * lebar * tinggi, sedangkan luas permukaan dihitung dengan rumus 2 * (panjang * lebar + panjang * tinggi + lebar * tinggi). Hasilnya dicetak sebagai output program.', '2024-03-11 05:01:16', '2024-03-11 05:01:16', NULL), +(104, 9, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok dalam kode program, cukup ubah nilai-nilai tersebut langsung pada bagian inisialisasi variabel panjang, lebar, dan tinggi. Setelah perubahan dilakukan, jalankan kembali program untuk mendapatkan hasil perhitungan dengan nilai yang baru.', '2024-03-11 05:01:21', '2024-03-11 05:01:21', NULL), +(105, 9, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', '2024-03-11 05:05:06', '2024-03-11 05:05:06', NULL), +(106, 9, 5, 'Pertama, program akan menjalankan fungsi main yang merupakan titik masuk utama dalam program Java. Kemudian, sebuah variabel nilai dengan tipe data integer dideklarasikan dan diinisialisasi dengan nilai 80. Program akan melanjutkan ke blok if, yang akan mengevaluasi apakah nilai lebih besar dari 70. Jika kondisi dalam blok if (nilai > 70) bernilai true, program akan mengeksekusi pernyataan yang ada di dalam blok if, yaitu mencetak string \"Selamat anda lulus!\" menggunakan System.out.print(). • Jika kondisi dalam blok if bernilai false, program akan melanjutkan ke pernyataan setelah blok if dan program akan selesai.', '2024-03-11 05:05:11', '2024-03-11 05:05:11', NULL), +(107, 9, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2024-03-11 05:05:17', '2024-03-11 05:05:17', NULL), +(108, 9, 7, 'If-else digunakan untuk membagi kondisi menjadi dua kemungkinan. Dalam studi kasus diatas, IF digunakan untuk melakukan pengecekan apakah nilai itemCost lebih besar dari 24. Jika kondisi tersebut terpenuhi, maka variabel order bernilai \"High Value Item!\" akan dicetak. Sedangkan jika nilai itemCost tidak lebih dari 24, maka variabel order bernilai “Low Order Value!”', '2024-03-11 05:07:42', '2024-03-11 05:07:42', NULL), +(109, 9, 8, '• Mendeklarasikan kelas Order. • Mendeklarasikan method main sebagai method utama yang akan dieksekusi saat program dijalankan. • Mendeklarasikan variabel itemCost dengan tipe data double dan memberikannya nilai 30.99. • Mendeklarasikan variabel order dengan tipe data String dan memberikannya nilai awal berupa string kosong (\"\"). • Melakukan pengecekan kondisi menggunakan pernyataan if. Kondisi yang dievaluasi adalah itemCost > 24.00. • Jika kondisi tersebut benar (nilai itemCost lebih besar dari 24.00), maka blok kode di dalam if akan dieksekusi. • Dalam blok if, nilai variabel order diubah menjadi \"High Value Item!\". • Jika kondisi dalam if tidak terpenuhi (nilai itemCost tidak lebih besar dari 24.00), maka blok kode di dalam else akan dieksekusi. • Dalam blok else, nilai variabel order diubah menjadi \"Low Value Item!\". • Setelah blok if-else selesai dieksekusi, pesan yang ada dalam variabel order akan dicetak menggunakan System.out.print. • Output yang ditampilkan akan bergantung pada nilai itemCost. Jika itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan dicetak. Jika tidak, maka pesan \"Low Value Item!\" akan dicetak.', '2024-03-11 05:07:48', '2024-03-11 05:07:48', NULL), +(110, 9, 9, 'Program akan menampilkan output “Low Value Item”', '2024-03-11 05:07:54', '2024-03-11 05:07:54', NULL), +(111, 9, 10, 'Baris program default dalam switch statement menentukan tindakan yang akan diambil jika tidak ada case yang cocok dengan nilai yang dievaluasi oleh switch statement tersebut. Dalam kasus tersebut, jika nilai shipping tidak cocok dengan \"Regular\" atau \"Express\", maka nilai shippingCost akan diatur menjadi 0.50.', '2024-03-11 05:10:20', '2024-03-11 05:10:20', NULL), +(112, 9, 11, 'Alur program dari baris kode switch-case di atas adalah sebagai berikut: 1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". Switch statement digunakan untuk mengevaluasi nilai dari variabel shipping. Nilai dari variabel shipping dibandingkan dengan setiap case dalam switch statement. 2. Jika nilai shipping cocok dengan nilai pada case \"Regular\", maka blok kode di bawah case \"Regular\" akan dieksekusi, yaitu shippingCost akan diatur menjadi 0. 3. Jika nilai shipping cocok dengan nilai pada case \"Express\", maka blok kode di bawah case \"Express\" akan dieksekusi, yaitu shippingCost akan diatur menjadi 1.75. 4. Jika nilai shipping tidak cocok dengan nilai pada case \"Regular\" atau \"Express\", maka blok kode di bawah default akan dieksekusi, yaitu shippingCost akan diatur menjadi 0.50. 5. Setelah switch statement dieksekusi, nilai shippingCost akan dicetak sebagai hasil akhir.', '2024-03-11 05:10:24', '2024-03-11 05:10:24', NULL), +(113, 9, 12, 'Dalam kode yang diberikan, tidak ada case atau kondisi yang mengatur shippingCost menjadi 0.05. Oleh karena itu, shippingCost tidak akan bernilai 0.05 dalam program tersebut. Dalam switch-case yang diberikan, ada tiga kemungkinan nilai yang akan membuat shippingCost memiliki nilai tertentu: Jika nilai shipping adalah \"Regular\", maka shippingCost akan menjadi 0. Jika nilai shipping adalah \"Express\", maka shippingCost akan menjadi 1.75. Jika nilai shipping tidak cocok dengan \"Regular\" atau \"Express\", maka shippingCost akan menjadi 0.50 melalui blok default. Sehingga, tidak ada kondisi dalam program tersebut yang akan membuat shippingCost menjadi 0.05.', '2024-03-11 05:10:30', '2024-03-11 05:10:30', NULL), +(114, 9, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan konsep dari tipe data boolean. Dalam program ini, isMember digunakan untuk membedakan apakah pelanggan adalah anggota (true) atau bukan (false), sehingga pemberian diskon dapat ditentukan berdasarkan keanggotaan pelanggan.', '2024-03-11 05:15:38', '2024-03-11 05:15:38', NULL), +(115, 9, 14, 'Jika nilai isMember adalah false, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan mengevaluasi nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota.\n\nBerikut adalah alur program jika isMember bernilai false:\n\nProgram memeriksa kondisi if(isMember == true), tetapi karena isMember bernilai false, maka program akan melanjutkan ke blok else.\n\nDi dalam blok else, program memeriksa nilai total:\n\nJika total kurang dari 100.000, diskon yang diberikan adalah 5%.\nJika total antara 100.000 dan 150.000 (inklusif), diskon yang diberikan adalah 10%.\nJika total lebih dari 150.000, diskon yang diberikan adalah 15%.\nSetelah nilai diskon dihitung berdasarkan kondisi di atas, program akan mencetak hasil diskon yang didapatkan oleh pelanggan non-anggota.', '2024-03-11 05:15:43', '2024-03-11 05:15:43', NULL), +(116, 9, 15, 'Jika nilai variabel total adalah Rp. 30.000, dan isMember adalah false, maka program akan memberikan diskon 5% kepada pelanggan non-anggota karena total pembelian kurang dari Rp. 100.000.\n\nJadi, output program akan menjadi: 5%', '2024-03-11 05:15:49', '2024-03-11 05:15:49', NULL), +(117, 7, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan konsep dari tipe data boolean. Dalam program ini, isMember digunakan untuk membedakan apakah pelanggan adalah anggota (true) atau bukan (false), sehingga pemberian diskon dapat ditentukan berdasarkan keanggotaan pelanggan.', '2024-03-11 05:19:33', '2024-03-11 05:19:33', NULL), +(118, 7, 14, 'Jika nilai isMember adalah false, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan mengevaluasi nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota. Berikut adalah alur program jika isMember bernilai false: Program memeriksa kondisi if(isMember == true), tetapi karena isMember bernilai false, maka program akan melanjutkan ke blok else. Di dalam blok else, program memeriksa nilai total: Jika total kurang dari 100.000, diskon yang diberikan adalah 5%. Jika total antara 100.000 dan 150.000 (inklusif), diskon yang diberikan adalah 10%. Jika total lebih dari 150.000, diskon yang diberikan adalah 15%. Setelah nilai diskon dihitung berdasarkan kondisi di atas, program akan mencetak hasil diskon yang didapatkan oleh pelanggan non-anggota.', '2024-03-11 05:19:41', '2024-03-11 05:19:41', NULL), +(119, 7, 15, 'Jika nilai variabel total adalah Rp. 30.000, dan isMember adalah false, maka program akan memberikan diskon 5% kepada pelanggan non-anggota karena total pembelian kurang dari Rp. 100.000. Jadi, output program akan menjadi: 5%', '2024-03-11 05:19:46', '2024-03-11 05:19:46', NULL), +(120, 10, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 08:35:27', '2024-03-11 08:35:27', NULL), +(121, 10, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas:\n\n1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing.\n2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok.\n3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok.\n4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 08:35:37', '2024-03-11 08:35:37', NULL), +(122, 10, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 08:35:42', '2024-03-11 08:35:42', NULL), +(123, 10, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 08:37:52', '2024-03-11 08:37:52', NULL), +(124, 10, 5, 'Berikut adalah alur program dari kode yang diberikan:\n\n1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80.\n2. Dilakukan pengecekan kondisi menggunakan pernyataan if.\n3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi.\n4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan.\n5. Program selesai dieksekusi.', '2024-03-11 08:37:56', '2024-03-11 08:37:56', NULL), +(125, 10, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 08:38:02', '2024-03-11 08:38:02', NULL), +(126, 10, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 08:41:56', '2024-03-11 08:41:56', NULL), +(127, 10, 8, 'Berikut adalah alur program dari baris kode yang diberikan:\n\n1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99.\n2. Variabel order dideklarasikan sebagai string kosong.\n3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan.\n4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order.\n5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order.\n6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print.\n7. Program selesai dieksekusi.', '2024-03-11 08:41:59', '2024-03-11 08:41:59', NULL), +(128, 10, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 08:42:03', '2024-03-11 08:42:03', NULL), +(129, 10, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 08:45:39', '2024-03-11 08:45:39', NULL), +(130, 10, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\".\n2. Variabel shippingCost dideklarasikan tanpa diinisialisasi.\n3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case.\n4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0.\n5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75.\n6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50.\n8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print.\nProgram selesai dieksekusi.', '2024-03-11 08:45:42', '2024-03-11 08:45:42', NULL), +(131, 10, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 08:45:46', '2024-03-11 08:45:46', NULL), +(132, 10, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 08:49:06', '2024-03-11 08:49:06', NULL), +(133, 10, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 08:49:10', '2024-03-11 08:49:10', NULL), +(134, 10, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 08:49:13', '2024-03-11 08:49:13', NULL), +(135, 11, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 08:56:19', '2024-03-11 08:56:19', NULL), +(136, 11, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 08:56:23', '2024-03-11 08:56:23', NULL), +(137, 11, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 08:56:27', '2024-03-11 08:56:27', NULL), +(138, 11, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 08:57:56', '2024-03-11 08:57:56', NULL), +(139, 11, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 08:57:59', '2024-03-11 08:57:59', NULL), +(140, 11, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 08:58:02', '2024-03-11 08:58:02', NULL), +(141, 11, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 08:59:14', '2024-03-11 08:59:14', NULL), +(142, 11, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 08:59:17', '2024-03-11 08:59:17', NULL), +(143, 11, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 08:59:21', '2024-03-11 08:59:21', NULL), +(144, 11, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 09:00:32', '2024-03-11 09:00:32', NULL), +(145, 11, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 09:00:36', '2024-03-11 09:00:36', NULL), +(146, 11, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 09:00:38', '2024-03-11 09:00:38', NULL), +(147, 11, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 09:02:06', '2024-03-11 09:02:06', NULL), +(148, 11, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 09:02:09', '2024-03-11 09:02:09', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(149, 11, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 09:02:12', '2024-03-11 09:02:12', NULL), +(150, 12, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 09:10:58', '2024-03-11 09:10:58', NULL), +(151, 12, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 09:11:04', '2024-03-11 09:11:04', NULL), +(152, 12, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 09:11:09', '2024-03-11 09:11:09', NULL), +(153, 12, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 09:12:14', '2024-03-11 09:12:14', NULL), +(154, 12, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 09:12:18', '2024-03-11 09:12:18', NULL), +(155, 12, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 09:12:22', '2024-03-11 09:12:22', NULL), +(156, 12, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 09:13:58', '2024-03-11 09:13:58', NULL), +(157, 12, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 09:14:01', '2024-03-11 09:14:01', NULL), +(158, 12, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 09:14:05', '2024-03-11 09:14:05', NULL), +(159, 12, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 09:16:40', '2024-03-11 09:16:40', NULL), +(160, 12, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 09:16:43', '2024-03-11 09:16:43', NULL), +(161, 12, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 09:16:47', '2024-03-11 09:16:47', NULL), +(162, 12, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 09:17:53', '2024-03-11 09:17:53', NULL), +(163, 12, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 09:17:55', '2024-03-11 09:17:55', NULL), +(164, 12, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 09:17:59', '2024-03-11 09:17:59', NULL), +(165, 13, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 09:21:58', '2024-03-11 09:21:58', NULL), +(166, 13, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 09:22:06', '2024-03-11 09:22:06', NULL), +(167, 13, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 09:22:10', '2024-03-11 09:22:10', NULL), +(168, 13, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 09:24:03', '2024-03-11 09:24:03', NULL), +(169, 13, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 09:24:08', '2024-03-11 09:24:08', NULL), +(170, 13, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 09:24:12', '2024-03-11 09:24:12', NULL), +(171, 13, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 09:25:40', '2024-03-11 09:25:40', NULL), +(172, 13, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 09:25:45', '2024-03-11 09:25:45', NULL), +(173, 13, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 09:25:50', '2024-03-11 09:25:50', NULL), +(174, 13, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 09:29:23', '2024-03-11 09:29:23', NULL), +(175, 13, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 09:29:27', '2024-03-11 09:29:27', NULL), +(176, 13, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 09:29:30', '2024-03-11 09:29:30', NULL), +(177, 13, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 09:31:11', '2024-03-11 09:31:11', NULL), +(178, 13, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 09:31:14', '2024-03-11 09:31:14', NULL), +(179, 13, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 09:31:18', '2024-03-11 09:31:18', NULL), +(180, 14, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 09:41:17', '2024-03-11 09:41:17', NULL), +(181, 14, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 09:41:23', '2024-03-11 09:41:23', NULL), +(182, 14, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 09:41:27', '2024-03-11 09:41:27', NULL), +(183, 14, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 09:42:57', '2024-03-11 09:42:57', NULL), +(184, 14, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 09:43:01', '2024-03-11 09:43:01', NULL), +(185, 14, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 09:43:04', '2024-03-11 09:43:04', NULL), +(186, 14, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 09:44:21', '2024-03-11 09:44:21', NULL), +(187, 14, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 09:44:24', '2024-03-11 09:44:24', NULL), +(188, 14, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 09:44:29', '2024-03-11 09:44:29', NULL), +(189, 14, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 09:46:24', '2024-03-11 09:46:24', NULL), +(190, 14, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 09:46:28', '2024-03-11 09:46:28', NULL), +(191, 14, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 09:46:32', '2024-03-11 09:46:32', NULL), +(192, 14, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 09:47:53', '2024-03-11 09:47:53', NULL), +(193, 14, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 09:47:57', '2024-03-11 09:47:57', NULL), +(194, 14, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 09:48:00', '2024-03-11 09:48:00', NULL), +(195, 15, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 09:56:03', '2024-03-11 09:56:03', NULL), +(196, 15, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 09:56:08', '2024-03-11 09:56:08', NULL), +(197, 15, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 09:56:12', '2024-03-11 09:56:12', NULL), +(198, 15, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 09:57:19', '2024-03-11 09:57:19', NULL), +(199, 15, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 09:57:23', '2024-03-11 09:57:23', NULL), +(200, 15, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 09:57:26', '2024-03-11 09:57:26', NULL), +(201, 15, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 09:59:36', '2024-03-11 09:59:36', NULL), +(202, 15, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 09:59:40', '2024-03-11 09:59:40', NULL), +(203, 15, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 09:59:43', '2024-03-11 09:59:43', NULL), +(204, 15, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 10:01:02', '2024-03-11 10:01:02', NULL), +(205, 15, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 10:01:07', '2024-03-11 10:01:07', NULL), +(206, 15, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 10:01:10', '2024-03-11 10:01:10', NULL), +(207, 15, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 10:02:27', '2024-03-11 10:02:27', NULL), +(208, 15, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 10:02:30', '2024-03-11 10:02:30', NULL), +(209, 15, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 10:02:34', '2024-03-11 10:02:34', NULL), +(210, 16, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 10:15:01', '2024-03-11 10:15:01', NULL), +(211, 16, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 10:15:10', '2024-03-11 10:15:10', NULL), +(212, 16, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 10:15:16', '2024-03-11 10:15:16', NULL), +(213, 16, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 10:16:28', '2024-03-11 10:16:28', NULL), +(214, 16, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 10:16:31', '2024-03-11 10:16:31', NULL), +(215, 16, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 10:16:36', '2024-03-11 10:16:36', NULL), +(216, 16, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 10:17:54', '2024-03-11 10:17:54', NULL), +(217, 16, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 10:17:59', '2024-03-11 10:17:59', NULL), +(218, 16, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 10:18:04', '2024-03-11 10:18:04', NULL), +(219, 16, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 10:19:20', '2024-03-11 10:19:20', NULL), +(220, 16, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 10:19:23', '2024-03-11 10:19:23', NULL), +(221, 16, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 10:19:27', '2024-03-11 10:19:27', NULL), +(222, 16, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 10:20:37', '2024-03-11 10:20:37', NULL), +(223, 16, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 10:20:41', '2024-03-11 10:20:41', NULL), +(224, 16, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 10:20:44', '2024-03-11 10:20:44', NULL), +(225, 17, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-11 10:24:14', '2024-03-11 10:24:14', NULL), +(226, 17, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-11 10:24:18', '2024-03-11 10:24:18', NULL), +(227, 17, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-11 10:24:21', '2024-03-11 10:24:21', NULL), +(228, 17, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-11 10:25:43', '2024-03-11 10:25:43', NULL), +(229, 17, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-11 10:25:46', '2024-03-11 10:25:46', NULL), +(230, 17, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-11 10:25:50', '2024-03-11 10:25:50', NULL), +(231, 17, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-11 10:26:52', '2024-03-11 10:26:52', NULL), +(232, 17, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-11 10:26:56', '2024-03-11 10:26:56', NULL), +(233, 17, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-11 10:27:00', '2024-03-11 10:27:00', NULL), +(234, 17, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-11 10:28:13', '2024-03-11 10:28:13', NULL), +(235, 17, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-11 10:28:16', '2024-03-11 10:28:16', NULL), +(236, 17, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-11 10:28:21', '2024-03-11 10:28:21', NULL), +(237, 17, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-11 10:30:06', '2024-03-11 10:30:06', NULL), +(238, 17, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-11 10:30:10', '2024-03-11 10:30:10', NULL), +(239, 17, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-11 10:30:13', '2024-03-11 10:30:13', NULL), +(240, 10, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan.\n\nDalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number.\n\nJadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-24 00:15:22', '2024-03-24 00:15:22', NULL), +(241, 10, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;.\nKemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;.\nPada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi.\nDi dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi).\nSetelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i.\nProses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi.\nKetika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi.\nProgram selesai dieksekusi.', '2024-03-24 00:15:37', '2024-03-24 00:15:37', NULL), +(242, 10, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-24 00:15:42', '2024-03-24 00:15:42', NULL), +(243, 10, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for.\n\nDi dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi.\n\nDengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-24 00:18:32', '2024-03-24 00:18:32', NULL), +(244, 10, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;.\nSelanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;.\nProgram memasuki loop while, di mana kondisi i < number dievaluasi.\nJika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi.\nDi dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);.\nSetelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++.\nKontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi.\nProses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi.\nKetika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while.\nProgram selesai dieksekusi.', '2024-03-24 00:18:39', '2024-03-24 00:18:39', NULL), +(245, 10, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali.\n\nSehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-24 00:18:45', '2024-03-24 00:18:45', NULL), +(246, 10, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first).\n\nDengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-24 00:22:38', '2024-03-24 00:22:38', NULL), +(247, 10, 23, 'Program memasuki blok kode do-while.\nPertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6.\nVariabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci.\nVariabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan.\nString \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak.\nAngka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol.\nProgram masuk ke dalam blok pernyataan do-while.\nDi dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next.\nNilai next dicetak ke konsol.\nNilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini.\nNilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci.\nVariabel i (penghitung iterasi) ditambah 1.\nProgram mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci.\nProses ini berlanjut sampai nilai i melebihi nilai n.\nSetelah itu, program keluar dari blok perulangan do-while.\nProgram selesai dieksekusi.', '2024-03-24 00:22:43', '2024-03-24 00:22:43', NULL), +(248, 10, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-24 00:22:49', '2024-03-24 00:22:49', NULL), +(249, 10, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5.\n\nJadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-24 00:25:24', '2024-03-24 00:25:24', NULL), +(250, 10, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5.\n\nDi dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi.\n\nPada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1.\n\nKondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu.\n\nPada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1).\nPada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2).\nHal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5).\nDi dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi.\n\nSetelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida.\n\nProses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol.\n\nDengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-24 00:25:30', '2024-03-24 00:25:30', NULL), +(251, 10, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-24 00:25:37', '2024-03-24 00:25:37', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(252, 10, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-24 00:28:14', '2024-03-24 00:28:14', NULL), +(253, 10, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}.\nKemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string.\nHasil dari konversi tersebut disimpan dalam variabel topicArray.\nTerakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut.\nString yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-24 00:28:20', '2024-03-24 00:28:20', NULL), +(254, 10, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string.\n\nKode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi.\n\nJadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-24 00:28:27', '2024-03-24 00:28:27', NULL), +(255, 10, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai.\n\nDalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai.\n\nJadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-24 00:32:59', '2024-03-24 00:32:59', NULL), +(256, 10, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0.\nKemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai.\nJika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi.\nDi dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total.\nSelanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung.\nSetelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama.\nProses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi.\nSetelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai.\nProses ini berlanjut hingga semua baris dari matriks nilai telah diproses.\nSetelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung.\nRata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData.\nNilai rata-rata tersebut kemudian dicetak ke konsol.\nProgram selesai dieksekusi.', '2024-03-24 00:33:04', '2024-03-24 00:33:04', NULL), +(257, 10, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-24 00:33:10', '2024-03-24 00:33:10', NULL), +(258, 10, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-24 00:35:21', '2024-03-24 00:35:21', NULL), +(259, 10, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran.\nSelanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran.\nKemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran.\nHasil perhitungan luas lingkaran disimpan dalam variabel lokal luas.\nSelanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran.\nHasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling.\nSetelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya.\nJadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-24 00:35:27', '2024-03-24 00:35:27', NULL), +(260, 10, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan.\n\nTanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran.\n\nJadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-24 00:35:35', '2024-03-24 00:35:35', NULL), +(261, 10, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-24 00:39:44', '2024-03-24 00:39:44', NULL), +(262, 10, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun).\n\nPengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas.\n\nPerhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal.\n\nPerhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan.\n\nPanggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi.\n\nPengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-24 00:39:50', '2024-03-24 00:39:50', NULL), +(263, 10, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-24 00:39:56', '2024-03-24 00:39:56', NULL), +(264, 19, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-24 00:53:54', '2024-03-24 00:53:54', NULL), +(265, 19, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-24 00:54:05', '2024-03-24 00:54:05', NULL), +(266, 19, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-24 00:54:13', '2024-03-24 00:54:13', NULL), +(267, 19, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-24 00:55:38', '2024-03-24 00:55:38', NULL), +(268, 19, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-24 00:55:46', '2024-03-24 00:55:46', NULL), +(269, 19, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-24 00:55:52', '2024-03-24 00:55:52', NULL), +(270, 19, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-24 00:56:57', '2024-03-24 00:56:57', NULL), +(271, 19, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-24 00:57:02', '2024-03-24 00:57:02', NULL), +(272, 19, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-24 00:57:08', '2024-03-24 00:57:08', NULL), +(273, 19, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-24 00:58:22', '2024-03-24 00:58:22', NULL), +(274, 19, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-24 00:58:27', '2024-03-24 00:58:27', NULL), +(275, 19, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-24 00:58:32', '2024-03-24 00:58:32', NULL), +(276, 19, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-24 00:59:38', '2024-03-24 00:59:38', NULL), +(277, 19, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-24 00:59:44', '2024-03-24 00:59:44', NULL), +(278, 19, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-24 00:59:49', '2024-03-24 00:59:49', NULL), +(279, 19, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-24 01:02:05', '2024-03-24 01:02:05', NULL), +(280, 19, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-03-24 01:02:10', '2024-03-24 01:02:10', NULL), +(281, 19, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-24 01:02:15', '2024-03-24 01:02:15', NULL), +(282, 19, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-24 01:03:46', '2024-03-24 01:03:46', NULL), +(283, 19, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-03-24 01:03:51', '2024-03-24 01:03:51', NULL), +(284, 19, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-24 01:03:57', '2024-03-24 01:03:57', NULL), +(285, 19, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-24 01:04:58', '2024-03-24 01:04:58', NULL), +(286, 19, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-03-24 01:05:03', '2024-03-24 01:05:03', NULL), +(287, 19, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-24 01:05:10', '2024-03-24 01:05:10', NULL), +(288, 19, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-24 01:06:27', '2024-03-24 01:06:27', NULL), +(289, 19, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-24 01:06:32', '2024-03-24 01:06:32', NULL), +(290, 19, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-24 01:06:39', '2024-03-24 01:06:39', NULL), +(291, 19, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-24 01:08:03', '2024-03-24 01:08:03', NULL), +(292, 19, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-24 01:08:09', '2024-03-24 01:08:09', NULL), +(293, 19, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-24 01:08:16', '2024-03-24 01:08:16', NULL), +(294, 19, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-24 01:10:03', '2024-03-24 01:10:03', NULL), +(295, 19, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-03-24 01:10:11', '2024-03-24 01:10:11', NULL), +(296, 19, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-24 01:10:18', '2024-03-24 01:10:18', NULL), +(297, 19, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-24 01:11:28', '2024-03-24 01:11:28', NULL), +(298, 19, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-24 01:11:32', '2024-03-24 01:11:32', NULL), +(299, 19, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-24 01:11:37', '2024-03-24 01:11:37', NULL), +(300, 19, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-24 01:13:03', '2024-03-24 01:13:03', NULL), +(301, 19, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-24 01:13:08', '2024-03-24 01:13:08', NULL), +(302, 19, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-24 01:13:15', '2024-03-24 01:13:15', NULL), +(303, 12, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-24 01:17:06', '2024-03-24 01:17:06', NULL), +(304, 12, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-03-24 01:17:11', '2024-03-24 01:17:11', NULL), +(305, 12, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-24 01:17:16', '2024-03-24 01:17:16', NULL), +(306, 12, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-24 01:18:39', '2024-03-24 01:18:39', NULL), +(307, 12, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-03-24 01:18:44', '2024-03-24 01:18:44', NULL), +(308, 12, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-24 01:18:49', '2024-03-24 01:18:49', NULL), +(309, 12, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-24 01:22:33', '2024-03-24 01:22:33', NULL), +(310, 12, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-03-24 01:22:39', '2024-03-24 01:22:39', NULL), +(311, 12, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-24 01:22:45', '2024-03-24 01:22:45', NULL), +(312, 12, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-24 01:23:59', '2024-03-24 01:23:59', NULL), +(313, 12, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-24 01:24:03', '2024-03-24 01:24:03', NULL), +(314, 12, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-24 01:24:09', '2024-03-24 01:24:09', NULL), +(315, 12, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-24 01:25:37', '2024-03-24 01:25:37', NULL), +(316, 12, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-24 01:25:42', '2024-03-24 01:25:42', NULL), +(317, 12, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-24 01:25:47', '2024-03-24 01:25:47', NULL), +(318, 12, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-24 01:26:52', '2024-03-24 01:26:52', NULL), +(319, 12, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-03-24 01:26:57', '2024-03-24 01:26:57', NULL), +(320, 12, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-24 01:27:03', '2024-03-24 01:27:03', NULL), +(321, 12, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-24 01:28:15', '2024-03-24 01:28:15', NULL), +(322, 12, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-24 01:28:20', '2024-03-24 01:28:20', NULL), +(323, 12, 36, 'ika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-24 01:28:25', '2024-03-24 01:28:25', NULL), +(324, 12, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-24 01:29:45', '2024-03-24 01:29:45', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(325, 12, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-24 01:29:50', '2024-03-24 01:29:50', NULL), +(326, 12, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-24 01:29:58', '2024-03-24 01:29:58', NULL), +(327, 13, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-24 01:32:37', '2024-03-24 01:32:37', NULL), +(328, 13, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-03-24 01:32:45', '2024-03-24 01:32:45', NULL), +(329, 13, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-24 01:32:50', '2024-03-24 01:32:50', NULL), +(330, 13, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-24 01:34:07', '2024-03-24 01:34:07', NULL), +(331, 13, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-03-24 01:34:12', '2024-03-24 01:34:12', NULL), +(332, 13, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-24 01:34:17', '2024-03-24 01:34:17', NULL), +(333, 13, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-24 01:35:19', '2024-03-24 01:35:19', NULL), +(334, 13, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-03-24 01:35:24', '2024-03-24 01:35:24', NULL), +(335, 13, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-24 01:35:30', '2024-03-24 01:35:30', NULL), +(336, 13, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-24 01:36:41', '2024-03-24 01:36:41', NULL), +(337, 13, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-24 01:36:47', '2024-03-24 01:36:47', NULL), +(338, 13, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-24 01:36:52', '2024-03-24 01:36:52', NULL), +(339, 13, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-24 01:38:28', '2024-03-24 01:38:28', NULL), +(340, 13, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-24 01:38:30', '2024-03-24 01:38:30', NULL), +(341, 13, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-24 01:38:34', '2024-03-24 01:38:34', NULL), +(342, 13, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-24 01:39:38', '2024-03-24 01:39:38', NULL), +(343, 13, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-03-24 01:39:43', '2024-03-24 01:39:43', NULL), +(344, 13, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-24 01:39:46', '2024-03-24 01:39:46', NULL), +(345, 13, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-24 01:40:38', '2024-03-24 01:40:38', NULL), +(346, 13, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-24 01:40:41', '2024-03-24 01:40:41', NULL), +(347, 13, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-24 01:40:44', '2024-03-24 01:40:44', NULL), +(348, 13, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-24 01:41:42', '2024-03-24 01:41:42', NULL), +(349, 13, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-24 01:41:46', '2024-03-24 01:41:46', NULL), +(350, 13, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-24 01:41:49', '2024-03-24 01:41:49', NULL), +(351, 21, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-24 02:56:05', '2024-03-24 02:56:05', NULL), +(352, 21, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-24 02:56:09', '2024-03-24 02:56:09', NULL), +(353, 21, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-24 02:56:13', '2024-03-24 02:56:13', NULL), +(357, 21, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-28 08:33:06', '2024-03-28 08:33:06', NULL), +(358, 21, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-28 08:33:10', '2024-03-28 08:33:10', NULL), +(359, 21, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-28 08:33:14', '2024-03-28 08:33:14', NULL), +(360, 21, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-28 08:34:30', '2024-03-28 08:34:30', NULL), +(361, 21, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-28 08:34:34', '2024-03-28 08:34:34', NULL), +(362, 21, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-28 08:34:39', '2024-03-28 08:34:39', NULL), +(363, 21, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-28 08:36:26', '2024-03-28 08:36:26', NULL), +(364, 21, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-28 08:36:30', '2024-03-28 08:36:30', NULL), +(365, 21, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-28 08:36:36', '2024-03-28 08:36:36', NULL), +(366, 21, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-28 08:37:46', '2024-03-28 08:37:46', NULL), +(367, 21, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-28 08:37:51', '2024-03-28 08:37:51', NULL), +(368, 21, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-28 08:37:56', '2024-03-28 08:37:56', NULL), +(369, 21, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-28 08:39:07', '2024-03-28 08:39:07', NULL), +(370, 21, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-03-28 08:39:11', '2024-03-28 08:39:11', NULL), +(371, 21, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-28 08:39:16', '2024-03-28 08:39:16', NULL), +(372, 21, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-28 08:40:18', '2024-03-28 08:40:18', NULL), +(373, 21, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-03-28 08:40:22', '2024-03-28 08:40:22', NULL), +(374, 21, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-28 08:40:26', '2024-03-28 08:40:26', NULL), +(375, 21, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-28 08:41:32', '2024-03-28 08:41:32', NULL), +(376, 21, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-03-28 08:41:37', '2024-03-28 08:41:37', NULL), +(377, 21, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-28 08:41:42', '2024-03-28 08:41:42', NULL), +(378, 21, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-28 08:42:42', '2024-03-28 08:42:42', NULL), +(379, 21, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-28 08:42:47', '2024-03-28 08:42:47', NULL), +(380, 21, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-28 08:42:51', '2024-03-28 08:42:51', NULL), +(381, 21, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-28 08:44:08', '2024-03-28 08:44:08', NULL), +(382, 21, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-28 08:44:12', '2024-03-28 08:44:12', NULL), +(383, 21, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-28 08:44:17', '2024-03-28 08:44:17', NULL), +(384, 21, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-28 08:45:35', '2024-03-28 08:45:35', NULL), +(385, 21, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-03-28 08:45:39', '2024-03-28 08:45:39', NULL), +(386, 21, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-28 08:45:45', '2024-03-28 08:45:45', NULL), +(387, 21, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-28 08:46:44', '2024-03-28 08:46:44', NULL), +(388, 21, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-28 08:46:47', '2024-03-28 08:46:47', NULL), +(389, 21, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-28 08:46:51', '2024-03-28 08:46:51', NULL), +(390, 21, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-28 08:47:46', '2024-03-28 08:47:46', NULL), +(391, 21, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-28 08:47:51', '2024-03-28 08:47:51', NULL), +(392, 21, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-28 08:47:57', '2024-03-28 08:47:57', NULL), +(393, 22, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-03-28 08:59:54', '2024-03-28 08:59:54', NULL), +(394, 22, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-03-28 09:00:03', '2024-03-28 09:00:03', NULL), +(395, 22, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-03-28 09:00:10', '2024-03-28 09:00:10', NULL), +(396, 22, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-03-28 09:04:15', '2024-03-28 09:04:15', NULL), +(397, 22, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-03-28 09:04:21', '2024-03-28 09:04:21', NULL), +(398, 22, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-03-28 09:04:24', '2024-03-28 09:04:24', NULL), +(399, 22, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-03-28 09:05:14', '2024-03-28 09:05:14', NULL), +(400, 22, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-03-28 09:05:19', '2024-03-28 09:05:19', NULL), +(401, 22, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-03-28 09:05:26', '2024-03-28 09:05:26', NULL), +(402, 22, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-03-28 09:06:26', '2024-03-28 09:06:26', NULL), +(403, 22, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-03-28 09:06:31', '2024-03-28 09:06:31', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(404, 22, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-03-28 09:06:39', '2024-03-28 09:06:39', NULL), +(405, 22, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-03-28 09:08:03', '2024-03-28 09:08:03', NULL), +(406, 22, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-03-28 09:08:08', '2024-03-28 09:08:08', NULL), +(407, 22, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-03-28 09:08:12', '2024-03-28 09:08:12', NULL), +(408, 22, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-03-28 09:12:51', '2024-03-28 09:12:51', NULL), +(409, 22, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-03-28 09:12:57', '2024-03-28 09:12:57', NULL), +(410, 22, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-03-28 09:13:00', '2024-03-28 09:13:00', NULL), +(411, 22, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-03-28 09:14:01', '2024-03-28 09:14:01', NULL), +(412, 22, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-03-28 09:14:07', '2024-03-28 09:14:07', NULL), +(413, 22, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-03-28 09:14:11', '2024-03-28 09:14:11', NULL), +(414, 22, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-03-28 09:15:06', '2024-03-28 09:15:06', NULL), +(415, 22, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-03-28 09:15:12', '2024-03-28 09:15:12', NULL), +(416, 22, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-03-28 09:15:19', '2024-03-28 09:15:19', NULL), +(417, 22, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-03-28 09:16:23', '2024-03-28 09:16:23', NULL), +(418, 22, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-03-28 09:16:28', '2024-03-28 09:16:28', NULL), +(419, 22, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-03-28 09:16:34', '2024-03-28 09:16:34', NULL), +(420, 22, 28, 'String topicArray = Arrays.toString(topics);', '2024-03-28 09:17:39', '2024-03-28 09:17:39', NULL), +(421, 22, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-03-28 09:17:43', '2024-03-28 09:17:43', NULL), +(422, 22, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-03-28 09:17:48', '2024-03-28 09:17:48', NULL), +(423, 22, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-03-28 09:18:44', '2024-03-28 09:18:44', NULL), +(424, 22, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-03-28 09:18:48', '2024-03-28 09:18:48', NULL), +(425, 22, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-03-28 09:18:55', '2024-03-28 09:18:55', NULL), +(426, 22, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-03-28 09:19:58', '2024-03-28 09:19:58', NULL), +(427, 22, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-03-28 09:20:02', '2024-03-28 09:20:02', NULL), +(428, 22, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-03-28 09:20:07', '2024-03-28 09:20:07', NULL), +(429, 22, 37, 'Ya, program ini menggunakan rekursi.', '2024-03-28 09:21:05', '2024-03-28 09:21:05', NULL), +(430, 22, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-03-28 09:21:09', '2024-03-28 09:21:09', NULL), +(431, 22, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-03-28 09:21:15', '2024-03-28 09:21:15', NULL), +(432, 23, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-01 04:01:45', '2024-04-01 04:01:45', NULL), +(433, 23, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-01 04:01:52', '2024-04-01 04:01:52', NULL), +(434, 23, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-01 04:01:59', '2024-04-01 04:01:59', NULL), +(435, 23, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-01 04:03:04', '2024-04-01 04:03:04', NULL), +(436, 23, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-01 04:03:11', '2024-04-01 04:03:11', NULL), +(437, 23, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-01 04:03:19', '2024-04-01 04:03:19', NULL), +(438, 23, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-01 04:04:21', '2024-04-01 04:04:21', NULL), +(439, 23, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-04-01 04:04:30', '2024-04-01 04:04:30', NULL), +(440, 23, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-04-01 04:04:39', '2024-04-01 04:04:39', NULL), +(441, 23, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-01 04:06:28', '2024-04-01 04:06:28', NULL), +(442, 23, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-04-01 04:06:34', '2024-04-01 04:06:34', NULL), +(443, 23, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-04-01 04:06:40', '2024-04-01 04:06:40', NULL), +(444, 23, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-01 04:08:59', '2024-04-01 04:08:59', NULL), +(445, 23, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-01 04:09:05', '2024-04-01 04:09:05', NULL), +(446, 23, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-01 04:09:11', '2024-04-01 04:09:11', NULL), +(447, 23, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-01 04:10:29', '2024-04-01 04:10:29', NULL), +(448, 23, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-01 04:10:35', '2024-04-01 04:10:35', NULL), +(449, 23, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-04-01 04:10:41', '2024-04-01 04:10:41', NULL), +(450, 23, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-01 04:11:58', '2024-04-01 04:11:58', NULL), +(451, 23, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-01 04:12:04', '2024-04-01 04:12:04', NULL), +(452, 23, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-04-01 04:12:10', '2024-04-01 04:12:10', NULL), +(453, 23, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-04-01 04:13:15', '2024-04-01 04:13:15', NULL), +(454, 23, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-04-01 04:13:22', '2024-04-01 04:13:22', NULL), +(455, 23, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-04-01 04:13:28', '2024-04-01 04:13:28', NULL), +(456, 23, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-04-01 04:16:45', '2024-04-01 04:16:45', NULL), +(457, 23, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-04-01 04:16:51', '2024-04-01 04:16:51', NULL), +(458, 23, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-04-01 04:17:00', '2024-04-01 04:17:00', NULL), +(459, 23, 28, 'String topicArray = Arrays.toString(topics);', '2024-04-01 04:18:15', '2024-04-01 04:18:15', NULL), +(460, 23, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-04-01 04:18:20', '2024-04-01 04:18:20', NULL), +(461, 23, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-04-01 04:18:27', '2024-04-01 04:18:27', NULL), +(462, 23, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-04-01 04:20:31', '2024-04-01 04:20:31', NULL), +(463, 23, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-04-01 04:20:38', '2024-04-01 04:20:38', NULL), +(464, 23, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-04-01 04:20:44', '2024-04-01 04:20:44', NULL), +(465, 23, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-04-01 04:23:28', '2024-04-01 04:23:28', NULL), +(466, 23, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-04-01 04:23:33', '2024-04-01 04:23:33', NULL), +(467, 23, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-04-01 04:23:39', '2024-04-01 04:23:39', NULL), +(468, 23, 37, 'Ya, program ini menggunakan rekursi.', '2024-04-01 04:25:42', '2024-04-01 04:25:42', NULL), +(469, 23, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-04-01 04:25:48', '2024-04-01 04:25:48', NULL), +(470, 23, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-04-01 04:25:55', '2024-04-01 04:25:55', NULL), +(471, 24, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-01 04:39:19', '2024-04-01 04:39:19', NULL), +(472, 24, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-01 04:39:32', '2024-04-01 04:39:32', NULL), +(473, 24, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-01 04:39:39', '2024-04-01 04:39:39', NULL), +(474, 24, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-01 04:41:02', '2024-04-01 04:41:02', NULL), +(475, 24, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-01 04:41:08', '2024-04-01 04:41:08', NULL), +(476, 24, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-01 04:41:13', '2024-04-01 04:41:13', NULL), +(477, 24, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-01 04:42:32', '2024-04-01 04:42:32', NULL), +(478, 24, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi.', '2024-04-01 04:42:38', '2024-04-01 04:42:38', NULL), +(479, 24, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-04-01 04:42:46', '2024-04-01 04:42:46', NULL), +(480, 24, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-01 04:44:02', '2024-04-01 04:44:02', NULL), +(481, 24, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi.', '2024-04-01 04:44:07', '2024-04-01 04:44:07', NULL), +(482, 24, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-04-01 04:44:15', '2024-04-01 04:44:15', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(483, 24, 13, 'Variabel isMember bertipe data boolean karena nilainya hanya bisa berupa true atau false, yang sesuai dengan kondisi apakah pelanggan adalah anggota (member) atau bukan. Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-01 04:45:29', '2024-04-01 04:45:29', NULL), +(484, 24, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-01 04:45:35', '2024-04-01 04:45:35', NULL), +(485, 24, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-01 04:45:40', '2024-04-01 04:45:40', NULL), +(486, 24, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. Lebih tepatnya, itu adalah ekspresi increment yang bertugas untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-01 04:46:41', '2024-04-01 04:46:41', NULL), +(487, 24, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-01 04:46:47', '2024-04-01 04:46:47', NULL), +(488, 24, 18, 'Jika nilai dari variabel number adalah 8, maka program akan mencetak angka dari 1 hingga 7. Ini disebabkan oleh kondisi perulangan for, di mana i akan mulai dari 1 dan berakhir pada 7 (karena 7 kurang dari 8), sementara perulangan akan berhenti sebelum mencapai 8. Jadi, output dari program akan menjadi 1234567', '2024-04-01 04:46:54', '2024-04-01 04:46:54', NULL), +(489, 24, 19, 'Pada kode program di atas, i++ memiliki kegunaan yang sama dengan pada contoh sebelumnya yang menggunakan perulangan for. Di dalam perulangan while, i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-01 04:47:59', '2024-04-01 04:47:59', NULL), +(490, 24, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-01 04:48:05', '2024-04-01 04:48:05', NULL), +(491, 24, 21, 'Jika kondisi dalam while diganti menjadi while(i > number), maka loop while tidak akan pernah dieksekusi. Hal ini karena pada saat inisialisasi variabel i memiliki nilai 1, sedangkan nilai variabel number adalah 6. Kondisi i > number (1 > 6) tidak terpenuhi, sehingga blok pernyataan di dalam while tidak akan dieksekusi sama sekali. Sehingga, tidak ada output yang akan dikeluarkan oleh program dalam kasus ini. Program akan selesai tanpa mencetak apa pun ke konsol.', '2024-04-01 04:48:11', '2024-04-01 04:48:11', NULL), +(492, 24, 22, 'Baris kode int next = first + second; berfungsi untuk menghitung nilai selanjutnya dalam deret Fibonacci. Dalam deret Fibonacci, setiap angka adalah hasil penjumlahan dari dua angka sebelumnya. Oleh karena itu, next dihitung dengan menambahkan nilai first (angka sebelumnya dalam deret) dengan nilai second (angka sebelumnya dari first). Dengan melakukan operasi first + second, nilai next akan menjadi angka berikutnya dalam deret Fibonacci setelah first dan second. Kemudian, nilai-nilai variabel first dan second akan diperbarui untuk mempersiapkan perhitungan angka berikutnya dalam deret Fibonacci.', '2024-04-01 04:50:58', '2024-04-01 04:50:58', NULL), +(493, 24, 23, 'Program memasuki blok kode do-while. Pertama-tama, variabel n diinisialisasi dengan nilai 6, yang menunjukkan bahwa kita akan mencetak deret Fibonacci hingga indeks ke-6. Variabel first diinisialisasi dengan nilai 0, dan second diinisialisasi dengan nilai 1. Ini adalah dua angka awal dalam deret Fibonacci. Variabel i diinisialisasi dengan nilai 1, yang akan digunakan untuk menghitung jumlah iterasi dalam perulangan. String \"Deret Fibonacci: \\n\" dicetak ke konsol untuk memberikan label pada deret Fibonacci yang akan dicetak. Angka pertama dan kedua dalam deret Fibonacci (0 dan 1) dicetak ke konsol. Program masuk ke dalam blok pernyataan do-while. Di dalam blok do-while, angka berikutnya dalam deret Fibonacci dihitung dengan menjumlahkan nilai first dan second, dan hasilnya disimpan dalam variabel next. Nilai next dicetak ke konsol. Nilai variabel first diperbarui dengan nilai variabel second, yang berarti angka sebelumnya dalam deret Fibonacci menjadi nilai second saat ini. Nilai variabel second diperbarui dengan nilai next, yang merupakan angka berikutnya dalam deret Fibonacci. Variabel i (penghitung iterasi) ditambah 1. Program mengevaluasi kondisi i <= n. Jika kondisi terpenuhi, program akan kembali ke langkah 8 untuk menghitung dan mencetak angka berikutnya dalam deret Fibonacci. Proses ini berlanjut sampai nilai i melebihi nilai n. Setelah itu, program keluar dari blok perulangan do-while. Program selesai dieksekusi.', '2024-04-01 04:51:05', '2024-04-01 04:51:05', NULL), +(494, 24, 24, 'Jika nilai variabel n diganti menjadi 7, maka program akan mencetak deret Fibonacci hingga indeks ke-7 sehingga hasilnya 0 1 1 2 3 5 8', '2024-04-01 04:51:12', '2024-04-01 04:51:12', NULL), +(495, 24, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) menentukan berapa kali perulangan akan dieksekusi. Dalam kasus ini, kondisi tersebut berarti perulangan akan dieksekusi ketika nilai i kurang dari atau sama dengan 5. Jadi, fungsi dari kondisi i <= 5 adalah untuk mengontrol jumlah baris dalam pola bintang yang dibuat oleh piramid. Dengan kondisi tersebut, perulangan akan dieksekusi sebanyak lima kali, menghasilkan lima baris pada pola bintang. Pada setiap iterasi, jumlah bintang yang dicetak pada setiap baris akan sesuai dengan nilai i pada saat itu. Sehingga, pada iterasi pertama, hanya satu bintang yang dicetak, pada iterasi kedua dua bintang, dan seterusnya hingga iterasi kelima.', '2024-04-01 04:52:34', '2024-04-01 04:52:34', NULL), +(496, 24, 26, 'Setiap kali iterasi dari perulangan pertama (outer loop) dieksekusi, variabel i akan bertambah satu dari nilai awal 1 hingga mencapai 5, sesuai dengan kondisi i <= 5. Di dalam setiap iterasi dari perulangan pertama, perulangan kedua (inner loop) akan dieksekusi. Pada awal iterasi dari perulangan kedua, variabel j akan diinisialisasi dengan nilai awal 1. Kondisi perulangan kedua, j <= i, menentukan berapa kali perulangan ini akan dieksekusi. Pada setiap iterasi, jumlah bintang yang dicetak akan sesuai dengan nilai i pada saat itu. Pada iterasi pertama dari perulangan pertama (ketika i adalah 1), perulangan kedua akan dieksekusi satu kali (karena j kurang dari atau sama dengan 1). Pada iterasi kedua dari perulangan pertama (ketika i adalah 2), perulangan kedua akan dieksekusi dua kali (karena j kurang dari atau sama dengan 2). Hal ini berlanjut hingga iterasi kelima dari perulangan pertama, di mana perulangan kedua akan dieksekusi sebanyak lima kali (karena j kurang dari atau sama dengan 5). Di dalam blok perulangan kedua, bintang (*) akan ditambahkan ke variabel output pada setiap iterasi. Setelah perulangan kedua selesai dieksekusi untuk nilai i tertentu, baris baru (\\n) akan ditambahkan ke variabel output, sehingga bintang-bintang yang tercetak membentuk pola piramida. Proses ini akan terus berlanjut hingga iterasi dari perulangan pertama selesai, dan hasil akhirnya, output akan dicetak ke konsol. Dengan demikian, alur program dari perulangan kedua menggunakan variabel j adalah untuk menambahkan bintang ke dalam variabel output sesuai dengan jumlah iterasi yang sesuai dengan nilai i pada saat itu, yang menghasilkan pola piramida dari bintang', '2024-04-01 04:52:52', '2024-04-01 04:52:52', NULL), +(497, 24, 27, 'Jika kondisi i <= 5 pada perulangan pertama (outer loop) diganti menjadi i <= 6, maka perulangan akan dieksekusi lebih dari sebelumnya, yaitu sebanyak enam kali. Ini berarti akan ada enam baris dalam pola bintang yang dihasilkan.', '2024-04-01 04:53:00', '2024-04-01 04:53:00', NULL), +(498, 24, 28, 'String topicArray = Arrays.toString(topics);', '2024-04-01 04:54:11', '2024-04-01 04:54:11', NULL), +(499, 24, 29, 'Sebuah array topics yang berisi beberapa topik (dalam bentuk string) dideklarasikan dan diinisialisasi dengan nilai: {\"Opinion\", \"Tech\", \"Science\", \"Health\"}. Kemudian, dilakukan pemanggilan metode Arrays.toString() untuk mengonversi array topics menjadi sebuah string. Hasil dari konversi tersebut disimpan dalam variabel topicArray. Terakhir, string yang berisi representasi dari array topics disimpan dalam variabel topicArray tersebut. String yang berisi representasi dari array topics, yang sekarang disimpan dalam variabel topicArray, dicetak ke konsol menggunakan System.out.print(topicArray)', '2024-04-01 04:54:20', '2024-04-01 04:54:20', NULL), +(500, 24, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1, 2, 3, 4};, maka kode program akan menghasilkan kesalahan pada saat kompilasi. Hal ini disebabkan oleh perbedaan tipe data antara elemen-elemen array dengan tipe data yang diharapkan, yaitu string. Kode String[] topics = {1, 2, 3, 4}; mencoba untuk membuat array topics yang berisi nilai-nilai bertipe int, namun karena kita mendeklarasikan tipe array sebagai String[], maka ini akan menyebabkan kesalahan kompilasi. Jadi, output program tidak akan dihasilkan karena kesalahan kompilasi yang terjadi. Sebelum kita dapat mencetak array tersebut, kita perlu memastikan bahwa elemen-elemen array memiliki tipe data yang sesuai dengan deklarasi array. Dalam kasus ini, kita harus mengubah elemen-elemen array menjadi string, misalnya String[] topics = {\"1\", \"2\", \"3\", \"4\"};.', '2024-04-01 04:54:27', '2024-04-01 04:54:27', NULL), +(501, 24, 31, 'Pada kode i < nilai.length; pada perulangan pertama, nilai.length mengembalikan panjang (jumlah elemen) dari array dua dimensi nilai dalam dimensi pertama, yaitu jumlah baris dari matriks nilai. Jadi, fungsi dari kondisi i < nilai.length; adalah untuk memastikan bahwa iterasi dalam perulangan pertama akan terjadi sebanyak jumlah baris dalam matriks nilai. Dalam konteks ini, i digunakan sebagai indeks baris dari matriks nilai. Jadi, perulangan akan berlangsung dari baris pertama hingga baris terakhir dari matriks nilai. Pada setiap iterasi, blok pernyataan dalam perulangan akan dieksekusi untuk setiap baris dalam matriks nilai. Jadi, i < nilai.length; memastikan bahwa perulangan pertama akan berjalan sesuai dengan jumlah baris dalam matriks nilai, yang memungkinkan program untuk melakukan operasi pada setiap elemen dari matriks tersebut.', '2024-04-01 04:56:49', '2024-04-01 04:56:49', NULL), +(502, 24, 32, 'Perulangan kedua dimulai dengan inisialisasi variabel j dengan nilai 0. Kemudian, dilakukan pengecekan kondisi j < nilai[i].length, di mana nilai[i].length mengembalikan panjang (jumlah elemen) dari array yang berada pada baris ke-i dalam matriks nilai. Dalam konteks ini, ini mengacu pada jumlah elemen (atau jumlah kolom) dari baris ke-i dari matriks nilai. Jika kondisi j < nilai[i].length benar (true), blok pernyataan dalam perulangan kedua dieksekusi. Di dalam blok perulangan kedua, setiap elemen dari baris ke-i dalam matriks nilai diakses menggunakan nilai[i][j]. Nilai tersebut ditambahkan ke variabel total. Selanjutnya, variabel jumlahData (yang digunakan untuk menghitung total jumlah elemen dalam matriks) ditambah satu untuk setiap elemen yang dihitung. Setelah iterasi dalam perulangan kedua selesai, nilai j diperbarui dengan j++, sehingga memungkinkan iterasi ke elemen berikutnya dari baris yang sama. Proses di atas diulangi hingga kondisi j < nilai[i].length tidak lagi terpenuhi. Setelah semua elemen dari baris ke-i telah dihitung, kontrol kembali ke perulangan pertama, di mana nilai i diperbarui, dan proses di atas diulangi untuk baris berikutnya dari matriks nilai. Proses ini berlanjut hingga semua baris dari matriks nilai telah diproses. Setelah seluruh matriks nilai telah diproses, nilai total dari semua elemen matriks (total) dan jumlah total elemen dalam matriks (jumlahData) telah dihitung. Rata-rata dari semua elemen matriks dihitung dengan membagi total nilai dengan jumlah total elemen, yaitu rataRata = total / jumlahData. Nilai rata-rata tersebut kemudian dicetak ke konsol. Program selesai dieksekusi.', '2024-04-01 04:56:56', '2024-04-01 04:56:56', NULL), +(503, 24, 33, 'Dengan elemen array nilai yang baru, yaitu double[][] nilai = {{75, 80, 81}, {90, 95, 90}, {70, 75, 82}} rata-rata nilai yang didapatkan adalah sekitar 82.', '2024-04-01 04:57:02', '2024-04-01 04:57:02', NULL), +(504, 24, 34, 'Kode tampil() pada method main memiliki kegunaan untuk menampilkan informasi terkait luas dan keliling lingkaran ke konsol.', '2024-04-01 05:00:15', '2024-04-01 05:00:15', NULL), +(505, 24, 35, 'Pertama, sebuah variabel lokal phi diinisialisasi dengan nilai 3.14, yang merupakan nilai phi (π) yang digunakan dalam perhitungan luas dan keliling lingkaran. Selanjutnya, sebuah variabel lokal r diinisialisasi dengan nilai 14, yang merupakan jari-jari lingkaran. Kemudian, dilakukan pemanggilan method luasLingkaran(phi, r) untuk menghitung luas lingkaran. Method ini menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai luas lingkaran. Hasil perhitungan luas lingkaran disimpan dalam variabel lokal luas. Selanjutnya, dilakukan pemanggilan method kelilingLingkaran(phi, r) untuk menghitung keliling lingkaran. Method ini juga menerima dua argumen, yaitu nilai phi (π) dan jari-jari lingkaran (r), dan mengembalikan nilai keliling lingkaran. Hasil perhitungan keliling lingkaran disimpan dalam variabel lokal keliling. Setelah itu, hasil perhitungan luas dan keliling lingkaran dicetak ke konsol menggunakan System.out.print(). Cetak ini mencakup pesan yang menyatakan luas lingkaran beserta nilai luasnya, diikuti dengan pesan yang menyatakan keliling lingkaran beserta nilai kelilingnya. Jadi, fungsi tampil() bertujuan untuk menghitung luas dan keliling lingkaran dengan menggunakan rumus yang sesuai, dan kemudian menampilkan hasilnya ke konsol.', '2024-04-01 05:00:21', '2024-04-01 05:00:21', NULL), +(506, 24, 36, 'Jika kode tampil() pada method main dihapus, maka program tidak akan menampilkan hasil luas dan keliling lingkaran ke konsol saat program dijalankan. Tanpa pemanggilan method tampil() di dalam method main, maka baris kode yang ada di dalam method tampil() tidak akan dieksekusi. Artinya, perhitungan luas dan keliling lingkaran tetap akan terjadi karena pemanggilan method tampil() pada method main merupakan inisiasi untuk menghitung dan menampilkan luas serta keliling lingkaran. Jadi, jika kode tampil() dihapus, program hanya akan dijalankan tanpa menampilkan hasil luas dan keliling lingkaran ke konsol.', '2024-04-01 05:00:27', '2024-04-01 05:00:27', NULL), +(507, 24, 37, 'Ya, program ini menggunakan rekursi.', '2024-04-01 05:01:30', '2024-04-01 05:01:30', NULL), +(508, 24, 38, 'Parameter Masukan: Method hitungBunga() menerima tiga parameter: saldo (saldo awal), bunga (persentase bunga tahunan), dan tahun (jumlah tahun). Pengecekan Basis: Pertama, method melakukan pengecekan apakah nilai tahun sama dengan 0. Jika ya, artinya kita telah mencapai basis rekursi, dan method akan mengembalikan nilai saldo tanpa menghitung bunga lagi. Ini penting untuk mengakhiri rekursi agar tidak terjadi panggilan rekursif yang tak terbatas. Perhitungan Bunga: Jika nilai tahun tidak sama dengan 0, artinya kita masih dalam tahap rekursi. Di sini, method menghitung bunga tahunan dengan rumus bungaTahunan = saldo * (bunga / 100). Ini menghasilkan jumlah bunga yang akan ditambahkan ke saldo awal. Perhitungan Total Saldo: Setelah menghitung bunga tahunan, method menambahkannya ke saldo awal untuk mendapatkan total saldo setelah satu tahun. Ini dilakukan dengan rumus total = saldo + bungaTahunan. Panggilan Rekursif: Selanjutnya, method hitungBunga() memanggil dirinya sendiri dengan total saldo setelah satu tahun (total) sebagai saldo awal pada panggilan rekursif berikutnya. Parameter lainnya (bunga dan tahun) tetap tidak berubah. Dengan demikian, proses ini akan berulang untuk setiap tahun sampai mencapai basis rekursi. Pengembalian Nilai: Setelah selesai semua panggilan rekursif, nilai saldo akhir setelah jumlah tahun yang ditentukan akan dikembalikan ke pemanggil method.', '2024-04-01 05:01:37', '2024-04-01 05:01:37', NULL), +(509, 24, 39, 'Jika bunga pertahun diganti menjadi 7%, jumlah uang yang dihasilkan setelah 5 tahun adalah sekitar 1.407.165,32.', '2024-04-01 05:01:45', '2024-04-01 05:01:45', NULL), +(510, 6, 19, 'Pada kode program yang diberikan, i++ digunakan sebagai operator peningkatan nilai variabel i. Lebih tepatnya, i++ adalah bentuk singkat dari i = i + 1, yang berarti setiap kali loop while dijalankan, nilai dari i akan bertambah 1.\n\nDalam konteks ini, i digunakan sebagai iterator atau penghitung loop. Loop while akan terus dijalankan selama nilai i kurang dari number. Dengan menggunakan i++, nilai i akan terus bertambah setiap kali loop dijalankan, sehingga memungkinkan loop untuk berakhir saat nilai i sama dengan number.', '2024-04-07 10:37:45', '2024-04-07 10:37:45', NULL), +(511, 6, 20, 'Variabel number diinisialisasi dengan nilai 6.\nVariabel i diinisialisasi dengan nilai 1.\nPengecekan kondisi while dilakukan: apakah nilai i kurang dari number?\nKarena nilai i saat ini adalah 1 dan number adalah 6, maka kondisi tersebut terpenuhi, dan program memasuki blok while.\nDi dalam blok while, System.out.print(i) akan mencetak nilai i, yang saat ini bernilai 1.\nSetelah mencetak nilai i, i akan ditambah 1 dengan menggunakan i++.\nKontrol kembali ke atas while, dan kondisi diuji lagi. Karena nilai i sekarang adalah 2 dan masih kurang dari number, proses ini terus berlanjut.\nLangkah 5-7 diulangi hingga nilai i mencapai 6.\nKetika nilai i menjadi 6, kondisi while tidak terpenuhi karena nilai i tidak lagi kurang dari number (karena sekarang sama dengan number).\nProgram keluar dari blok while dan selesai di sini. Tidak ada lagi instruksi yang dijalankan setelah blok while karena tidak ada kode setelahnya.', '2024-04-07 10:37:58', '2024-04-07 10:37:58', NULL), +(512, 6, 21, 'Jika kondisi dalam while diganti menjadi while (i > number), maka program tidak akan memasuki blok while sama sekali. Ini karena saat inisialisasi, nilai i adalah 1 dan nilai number adalah 6. Oleh karena itu, i tidak pernah akan lebih besar dari number dengan kondisi tersebut.\n\nDalam kasus ini, tidak akan ada output yang dihasilkan oleh program, dan program akan selesai tanpa mencetak apapun ke layar. Karena blok while tidak akan pernah dieksekusi dengan kondisi while (i > number), program akan langsung melanjutkan ke instruksi di luar blok while (jika ada) atau selesai jika tidak ada instruksi lain.', '2024-04-07 10:38:05', '2024-04-07 10:38:05', NULL), +(513, 25, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-16 17:15:45', '2024-04-16 17:15:45', NULL), +(514, 25, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-16 17:15:54', '2024-04-16 17:15:54', NULL), +(515, 25, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-16 17:15:58', '2024-04-16 17:15:58', NULL), +(516, 25, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-16 17:17:42', '2024-04-16 17:17:42', NULL), +(517, 25, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-16 17:17:49', '2024-04-16 17:17:49', NULL), +(518, 25, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-16 17:17:52', '2024-04-16 17:17:52', NULL), +(519, 25, 7, 'Penggunaan if-else pada baris kode tersebut adalah untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-16 17:47:13', '2024-04-16 17:47:13', NULL), +(520, 25, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-16 17:47:18', '2024-04-16 17:47:18', NULL), +(521, 25, 9, 'Jika nilai variabel \"itemCost\" adalah 20, maka output program akan menampilkan pesan \"Low Value Item!\". Hal ini karena nilai variabel \"itemCost\" (20) tidak memenuhi kondisi if, sehingga blok else akan dieksekusi, dan pesan \"Low Value Item!\" akan ditampilkan.', '2024-04-16 17:47:21', '2024-04-16 17:47:21', NULL), +(522, 25, 10, 'Fungsi dari baris program default adalah sebagai bagian dari struktur switch case di Java. Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-23 18:55:07', '2024-04-23 18:55:07', NULL), +(523, 25, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-23 18:55:29', '2024-04-23 18:55:29', NULL), +(524, 25, 12, 'Variabel shippingCost akan bernilai 0.50 saat nilai variabel shipping tidak cocok dengan nilai dari case manapun dalam struktur switch-case, dan blok default dieksekusi.', '2024-04-23 18:55:42', '2024-04-23 18:55:42', NULL), +(525, 26, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-26 13:27:52', '2024-04-26 13:27:52', NULL), +(526, 26, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-26 13:28:00', '2024-04-26 13:28:00', NULL), +(527, 26, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-26 13:28:05', '2024-04-26 13:28:05', NULL), +(528, 26, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-26 13:49:38', '2024-04-26 13:49:38', NULL), +(529, 26, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-26 13:49:41', '2024-04-26 13:49:41', NULL), +(530, 26, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-26 13:49:48', '2024-04-26 13:49:48', NULL), +(531, 26, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-26 20:45:25', '2024-04-26 20:45:25', NULL), +(532, 26, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-26 20:45:38', '2024-04-26 20:45:38', NULL), +(533, 26, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-26 20:45:49', '2024-04-26 20:45:49', NULL), +(534, 26, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-26 21:05:21', '2024-04-26 21:05:21', NULL), +(535, 26, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-26 21:05:33', '2024-04-26 21:05:33', NULL), +(536, 26, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-26 21:05:43', '2024-04-26 21:05:43', NULL), +(537, 26, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-26 21:19:22', '2024-04-26 21:19:22', NULL), +(538, 26, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-26 21:19:29', '2024-04-26 21:19:29', NULL), +(539, 26, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-26 21:19:40', '2024-04-26 21:19:40', NULL), +(540, 26, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-26 21:34:42', '2024-04-26 21:34:42', NULL), +(541, 26, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-26 21:34:51', '2024-04-26 21:34:51', NULL), +(542, 26, 18, '1234567', '2024-04-26 21:35:03', '2024-04-26 21:35:03', NULL), +(543, 26, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-26 21:49:25', '2024-04-26 21:49:25', NULL), +(544, 26, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-26 21:49:36', '2024-04-26 21:49:36', NULL), +(545, 26, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-26 21:49:49', '2024-04-26 21:49:49', NULL), +(546, 26, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-26 23:31:57', '2024-04-26 23:31:57', NULL), +(547, 26, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-26 23:32:11', '2024-04-26 23:32:11', NULL), +(548, 26, 24, '0 1 1 2 3 5 8 13', '2024-04-26 23:32:19', '2024-04-26 23:32:19', NULL), +(549, 26, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-26 23:53:24', '2024-04-26 23:53:24', NULL), +(550, 26, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-26 23:53:28', '2024-04-26 23:53:28', NULL), +(551, 26, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-26 23:53:36', '2024-04-26 23:53:36', NULL), +(552, 26, 28, 'System.out.print(topicArray);', '2024-04-27 00:25:17', '2024-04-27 00:25:17', NULL), +(553, 26, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-27 00:25:20', '2024-04-27 00:25:20', NULL), +(554, 26, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-27 00:25:25', '2024-04-27 00:25:25', NULL), +(555, 26, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-27 00:41:20', '2024-04-27 00:41:20', NULL), +(556, 26, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-27 00:41:26', '2024-04-27 00:41:26', NULL), +(557, 26, 33, '70', '2024-04-27 00:41:32', '2024-04-27 00:41:32', NULL), +(558, 26, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-27 00:59:38', '2024-04-27 00:59:38', NULL), +(559, 26, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-27 00:59:42', '2024-04-27 00:59:42', NULL), +(560, 26, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-27 00:59:46', '2024-04-27 00:59:46', NULL), +(561, 26, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-04-27 01:18:30', '2024-04-27 01:18:30', NULL), +(562, 26, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-04-27 01:18:34', '2024-04-27 01:18:34', NULL), +(563, 26, 39, '1407107.324173', '2024-04-27 01:18:38', '2024-04-27 01:18:38', NULL), +(564, 27, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-27 05:49:46', '2024-04-27 05:49:46', NULL), +(565, 27, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-27 05:50:01', '2024-04-27 05:50:01', NULL), +(566, 27, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-27 05:50:10', '2024-04-27 05:50:10', NULL), +(567, 27, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-27 05:59:07', '2024-04-27 05:59:07', NULL), +(568, 27, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-27 05:59:15', '2024-04-27 05:59:15', NULL), +(569, 27, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-27 05:59:24', '2024-04-27 05:59:24', NULL), +(570, 27, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-27 06:08:16', '2024-04-27 06:08:16', NULL), +(571, 27, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-27 06:08:22', '2024-04-27 06:08:22', NULL), +(572, 27, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-27 06:08:32', '2024-04-27 06:08:32', NULL), +(573, 27, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-27 06:18:53', '2024-04-27 06:18:53', NULL), +(574, 27, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-27 06:19:01', '2024-04-27 06:19:01', NULL), +(575, 27, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-27 06:19:09', '2024-04-27 06:19:09', NULL), +(576, 27, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-27 06:27:43', '2024-04-27 06:27:43', NULL), +(577, 27, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-27 06:27:50', '2024-04-27 06:27:50', NULL), +(578, 27, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-27 06:28:00', '2024-04-27 06:28:00', NULL), +(579, 27, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-27 06:36:03', '2024-04-27 06:36:03', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(580, 27, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-27 06:36:11', '2024-04-27 06:36:11', NULL), +(581, 27, 18, '1234567', '2024-04-27 06:36:18', '2024-04-27 06:36:18', NULL), +(582, 27, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-27 06:46:48', '2024-04-27 06:46:48', NULL), +(583, 27, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-27 06:46:55', '2024-04-27 06:46:55', NULL), +(584, 27, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-27 06:47:05', '2024-04-27 06:47:05', NULL), +(585, 27, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-27 06:58:37', '2024-04-27 06:58:37', NULL), +(586, 27, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-27 06:58:46', '2024-04-27 06:58:46', NULL), +(587, 27, 24, '0 1 1 2 3 5 8 13', '2024-04-27 06:58:57', '2024-04-27 06:58:57', NULL), +(588, 27, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-27 07:08:10', '2024-04-27 07:08:10', NULL), +(589, 27, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-27 07:08:16', '2024-04-27 07:08:16', NULL), +(590, 27, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-27 07:08:24', '2024-04-27 07:08:24', NULL), +(591, 27, 28, 'System.out.print(topicArray);', '2024-04-27 07:20:20', '2024-04-27 07:20:20', NULL), +(592, 27, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-27 07:20:26', '2024-04-27 07:20:26', NULL), +(593, 27, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-27 07:20:32', '2024-04-27 07:20:32', NULL), +(594, 27, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-27 07:29:18', '2024-04-27 07:29:18', NULL), +(595, 27, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-27 07:29:26', '2024-04-27 07:29:26', NULL), +(596, 27, 33, '70', '2024-04-27 07:29:31', '2024-04-27 07:29:31', NULL), +(597, 27, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-27 07:39:28', '2024-04-27 07:39:28', NULL), +(598, 27, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-27 07:39:36', '2024-04-27 07:39:36', NULL), +(599, 27, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-27 07:39:46', '2024-04-27 07:39:46', NULL), +(600, 27, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-04-27 07:47:40', '2024-04-27 07:47:40', NULL), +(601, 27, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-04-27 07:47:46', '2024-04-27 07:47:46', NULL), +(602, 27, 39, '1407107.324173', '2024-04-27 07:47:53', '2024-04-27 07:47:53', NULL), +(603, 28, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-27 13:40:26', '2024-04-27 13:40:26', NULL), +(604, 28, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-27 13:40:37', '2024-04-27 13:40:37', NULL), +(605, 28, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-27 13:40:43', '2024-04-27 13:40:43', NULL), +(606, 28, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-27 13:49:06', '2024-04-27 13:49:06', NULL), +(607, 28, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-27 13:49:11', '2024-04-27 13:49:11', NULL), +(608, 28, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-27 13:49:15', '2024-04-27 13:49:15', NULL), +(609, 28, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-27 13:57:07', '2024-04-27 13:57:07', NULL), +(610, 28, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-27 13:57:13', '2024-04-27 13:57:13', NULL), +(611, 28, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-27 13:57:20', '2024-04-27 13:57:20', NULL), +(612, 28, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-27 14:05:18', '2024-04-27 14:05:18', NULL), +(613, 28, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-27 14:05:23', '2024-04-27 14:05:23', NULL), +(614, 28, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-27 14:05:28', '2024-04-27 14:05:28', NULL), +(615, 28, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-27 14:13:33', '2024-04-27 14:13:33', NULL), +(616, 28, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-27 14:13:38', '2024-04-27 14:13:38', NULL), +(617, 28, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-27 14:13:43', '2024-04-27 14:13:43', NULL), +(618, 28, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-27 14:21:37', '2024-04-27 14:21:37', NULL), +(619, 28, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-27 14:21:43', '2024-04-27 14:21:43', NULL), +(620, 28, 18, '1234567', '2024-04-27 14:21:51', '2024-04-27 14:21:51', NULL), +(621, 28, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-27 14:29:52', '2024-04-27 14:29:52', NULL), +(622, 28, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-27 14:29:57', '2024-04-27 14:29:57', NULL), +(623, 28, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-27 14:30:04', '2024-04-27 14:30:04', NULL), +(624, 28, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-27 14:37:12', '2024-04-27 14:37:12', NULL), +(625, 28, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-27 14:37:18', '2024-04-27 14:37:18', NULL), +(626, 28, 24, '0 1 1 2 3 5 8 13', '2024-04-27 14:37:22', '2024-04-27 14:37:22', NULL), +(627, 28, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-27 14:46:30', '2024-04-27 14:46:30', NULL), +(628, 28, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-27 14:46:33', '2024-04-27 14:46:33', NULL), +(629, 28, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-27 14:46:38', '2024-04-27 14:46:38', NULL), +(630, 28, 28, 'System.out.print(topicArray);', '2024-04-27 14:54:20', '2024-04-27 14:54:20', NULL), +(631, 28, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-27 14:54:24', '2024-04-27 14:54:24', NULL), +(632, 28, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-27 14:54:27', '2024-04-27 14:54:27', NULL), +(633, 28, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-27 15:01:59', '2024-04-27 15:01:59', NULL), +(634, 28, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-27 15:02:04', '2024-04-27 15:02:04', NULL), +(635, 28, 33, '70', '2024-04-27 15:02:11', '2024-04-27 15:02:11', NULL), +(636, 28, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-27 15:09:07', '2024-04-27 15:09:07', NULL), +(637, 28, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-27 15:09:13', '2024-04-27 15:09:13', NULL), +(638, 28, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-27 15:09:20', '2024-04-27 15:09:20', NULL), +(639, 28, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.', '2024-04-27 15:16:34', '2024-04-27 15:16:34', NULL), +(640, 28, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.', '2024-04-27 15:16:41', '2024-04-27 15:16:41', NULL), +(641, 28, 39, '1407107.324173', '2024-04-27 15:16:45', '2024-04-27 15:16:45', NULL), +(642, 29, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-27 19:24:16', '2024-04-27 19:24:16', NULL), +(643, 29, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-27 19:24:32', '2024-04-27 19:24:32', NULL), +(644, 29, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-27 19:24:39', '2024-04-27 19:24:39', NULL), +(645, 29, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-27 19:35:46', '2024-04-27 19:35:46', NULL), +(646, 29, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-27 19:35:54', '2024-04-27 19:35:54', NULL), +(647, 29, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-27 19:36:02', '2024-04-27 19:36:02', NULL), +(648, 29, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-27 19:45:43', '2024-04-27 19:45:43', NULL), +(649, 29, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-27 19:45:50', '2024-04-27 19:45:50', NULL), +(650, 29, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-27 19:45:57', '2024-04-27 19:45:57', NULL), +(651, 29, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-27 19:53:17', '2024-04-27 19:53:17', NULL), +(652, 29, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-27 19:53:24', '2024-04-27 19:53:24', NULL), +(653, 29, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-27 19:53:32', '2024-04-27 19:53:32', NULL), +(654, 29, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-27 20:01:35', '2024-04-27 20:01:35', NULL), +(655, 29, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-27 20:01:41', '2024-04-27 20:01:41', NULL), +(656, 29, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-27 20:01:48', '2024-04-27 20:01:48', NULL), +(657, 29, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-27 20:10:09', '2024-04-27 20:10:09', NULL), +(658, 29, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-27 20:10:15', '2024-04-27 20:10:15', NULL), +(659, 29, 18, '1234567', '2024-04-27 20:10:22', '2024-04-27 20:10:22', NULL), +(660, 29, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-27 20:18:46', '2024-04-27 20:18:46', NULL), +(661, 29, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-27 20:18:52', '2024-04-27 20:18:52', NULL), +(662, 29, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-27 20:19:01', '2024-04-27 20:19:01', NULL), +(663, 29, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-27 20:27:27', '2024-04-27 20:27:27', NULL), +(664, 29, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-27 20:27:34', '2024-04-27 20:27:34', NULL), +(665, 29, 24, '0 1 1 2 3 5 8 13', '2024-04-27 20:27:43', '2024-04-27 20:27:43', NULL), +(666, 29, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-27 20:36:58', '2024-04-27 20:36:58', NULL), +(667, 29, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-27 20:37:03', '2024-04-27 20:37:03', NULL), +(668, 29, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-27 20:37:10', '2024-04-27 20:37:10', NULL), +(669, 29, 28, 'System.out.print(topicArray);', '2024-04-27 20:44:55', '2024-04-27 20:44:55', NULL), +(670, 29, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-27 20:45:04', '2024-04-27 20:45:04', NULL), +(671, 29, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-27 20:45:09', '2024-04-27 20:45:09', NULL), +(672, 29, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-27 20:54:42', '2024-04-27 20:54:42', NULL), +(673, 29, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-27 20:54:47', '2024-04-27 20:54:47', NULL), +(674, 29, 33, '70', '2024-04-27 20:54:54', '2024-04-27 20:54:54', NULL), +(680, 29, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-27 21:07:55', '2024-04-27 21:07:55', NULL), +(681, 29, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-27 21:08:02', '2024-04-27 21:08:02', NULL), +(682, 29, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-27 21:08:06', '2024-04-27 21:08:06', NULL), +(683, 29, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-04-27 21:16:33', '2024-04-27 21:16:33', NULL), +(684, 29, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-04-27 21:16:38', '2024-04-27 21:16:38', NULL), +(685, 29, 39, '1407107.324173', '2024-04-27 21:16:45', '2024-04-27 21:16:45', NULL), +(686, 30, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-28 05:54:12', '2024-04-28 05:54:12', NULL), +(687, 30, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-28 05:54:22', '2024-04-28 05:54:22', NULL), +(688, 30, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-28 05:54:26', '2024-04-28 05:54:26', NULL), +(689, 30, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-28 06:08:15', '2024-04-28 06:08:15', NULL), +(690, 30, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-28 06:08:21', '2024-04-28 06:08:21', NULL), +(691, 30, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-28 06:08:24', '2024-04-28 06:08:24', NULL), +(692, 30, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-28 06:15:50', '2024-04-28 06:15:50', NULL), +(693, 30, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-28 06:15:56', '2024-04-28 06:15:56', NULL), +(694, 30, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-28 06:16:00', '2024-04-28 06:16:00', NULL), +(695, 30, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-28 06:24:12', '2024-04-28 06:24:12', NULL), +(696, 30, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-28 06:24:15', '2024-04-28 06:24:15', NULL), +(697, 30, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-28 06:24:19', '2024-04-28 06:24:19', NULL), +(698, 30, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-28 06:31:57', '2024-04-28 06:31:57', NULL), +(699, 30, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-28 06:32:00', '2024-04-28 06:32:00', NULL), +(700, 30, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-28 06:32:05', '2024-04-28 06:32:05', NULL), +(701, 30, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-28 06:42:14', '2024-04-28 06:42:14', NULL), +(702, 30, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-28 06:42:18', '2024-04-28 06:42:18', NULL), +(703, 30, 18, '1234567', '2024-04-28 06:42:26', '2024-04-28 06:42:26', NULL), +(704, 30, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-28 06:50:15', '2024-04-28 06:50:15', NULL), +(705, 30, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-28 06:50:19', '2024-04-28 06:50:19', NULL), +(706, 30, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-28 06:50:26', '2024-04-28 06:50:26', NULL), +(707, 30, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-28 07:02:39', '2024-04-28 07:02:39', NULL), +(708, 30, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-28 07:02:47', '2024-04-28 07:02:47', NULL), +(709, 30, 24, '0 1 1 2 3 5 8 13', '2024-04-28 07:02:50', '2024-04-28 07:02:50', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(710, 30, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-28 07:11:30', '2024-04-28 07:11:30', NULL), +(711, 30, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-28 07:11:35', '2024-04-28 07:11:35', NULL), +(712, 30, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-28 07:11:40', '2024-04-28 07:11:40', NULL), +(713, 30, 28, 'System.out.print(topicArray);', '2024-04-28 07:23:44', '2024-04-28 07:23:44', NULL), +(714, 30, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-28 07:23:47', '2024-04-28 07:23:47', NULL), +(715, 30, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-28 07:23:51', '2024-04-28 07:23:51', NULL), +(716, 30, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-28 07:33:50', '2024-04-28 07:33:50', NULL), +(717, 30, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-28 07:33:56', '2024-04-28 07:33:56', NULL), +(718, 30, 33, '70', '2024-04-28 07:34:04', '2024-04-28 07:34:04', NULL), +(719, 30, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-28 07:41:56', '2024-04-28 07:41:56', NULL), +(720, 30, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-28 07:41:59', '2024-04-28 07:41:59', NULL), +(721, 30, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-28 07:42:04', '2024-04-28 07:42:04', NULL), +(722, 30, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-04-28 07:52:16', '2024-04-28 07:52:16', NULL), +(723, 30, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-04-28 07:52:21', '2024-04-28 07:52:21', NULL), +(724, 30, 39, '1407107.324173', '2024-04-28 07:52:28', '2024-04-28 07:52:28', NULL), +(725, 31, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-04-28 13:56:36', '2024-04-28 13:56:36', NULL), +(726, 31, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-04-28 13:56:42', '2024-04-28 13:56:42', NULL), +(727, 31, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-04-28 13:56:47', '2024-04-28 13:56:47', NULL), +(728, 31, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-04-28 14:03:05', '2024-04-28 14:03:05', NULL), +(729, 31, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-04-28 14:03:10', '2024-04-28 14:03:10', NULL), +(730, 31, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-04-28 14:03:21', '2024-04-28 14:03:21', NULL), +(731, 31, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-04-28 14:06:42', '2024-04-28 14:06:42', NULL), +(732, 31, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-04-28 14:06:48', '2024-04-28 14:06:48', NULL), +(733, 31, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-04-28 14:06:55', '2024-04-28 14:06:55', NULL), +(734, 31, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-04-28 14:10:42', '2024-04-28 14:10:42', NULL), +(735, 31, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-04-28 14:10:48', '2024-04-28 14:10:48', NULL), +(736, 31, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-04-28 14:10:55', '2024-04-28 14:10:55', NULL), +(737, 31, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-04-28 14:14:10', '2024-04-28 14:14:10', NULL), +(738, 31, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-04-28 14:14:16', '2024-04-28 14:14:16', NULL), +(739, 31, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-04-28 14:14:22', '2024-04-28 14:14:22', NULL), +(740, 31, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-04-28 14:17:19', '2024-04-28 14:17:19', NULL), +(741, 31, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-04-28 14:17:28', '2024-04-28 14:17:28', NULL), +(742, 31, 18, '1234567', '2024-04-28 14:17:33', '2024-04-28 14:17:33', NULL), +(743, 31, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-04-28 14:20:00', '2024-04-28 14:20:00', NULL), +(744, 31, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-04-28 14:20:05', '2024-04-28 14:20:05', NULL), +(745, 31, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-04-28 14:20:12', '2024-04-28 14:20:12', NULL), +(746, 31, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-04-28 14:23:41', '2024-04-28 14:23:41', NULL), +(747, 31, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-04-28 14:23:48', '2024-04-28 14:23:48', NULL), +(748, 31, 24, '0 1 1 2 3 5 8 13', '2024-04-28 14:23:53', '2024-04-28 14:23:53', NULL), +(749, 31, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-04-28 14:27:24', '2024-04-28 14:27:24', NULL), +(750, 31, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-04-28 14:27:29', '2024-04-28 14:27:29', NULL), +(751, 31, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-04-28 14:27:36', '2024-04-28 14:27:36', NULL), +(752, 31, 28, 'System.out.print(topicArray);', '2024-04-28 14:30:31', '2024-04-28 14:30:31', NULL), +(753, 31, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-04-28 14:30:38', '2024-04-28 14:30:38', NULL), +(754, 31, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-04-28 14:30:42', '2024-04-28 14:30:42', NULL), +(755, 31, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-04-28 14:32:57', '2024-04-28 14:32:57', NULL), +(756, 31, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-04-28 14:33:04', '2024-04-28 14:33:04', NULL), +(757, 31, 33, '70', '2024-04-28 14:33:08', '2024-04-28 14:33:08', NULL), +(758, 31, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-04-28 14:35:43', '2024-04-28 14:35:43', NULL), +(759, 31, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-04-28 14:35:49', '2024-04-28 14:35:49', NULL), +(760, 31, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-04-28 14:35:55', '2024-04-28 14:35:55', NULL), +(761, 31, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-04-28 14:38:08', '2024-04-28 14:38:08', NULL), +(762, 31, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-04-28 14:38:16', '2024-04-28 14:38:16', NULL), +(763, 31, 39, '1407107.324173', '2024-04-28 14:38:22', '2024-04-28 14:38:22', NULL), +(764, 32, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-05-01 19:21:50', '2024-05-01 19:21:50', NULL), +(765, 32, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-05-01 19:22:03', '2024-05-01 19:22:03', NULL), +(766, 32, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-05-01 19:22:10', '2024-05-01 19:22:10', NULL), +(767, 32, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-05-01 19:43:41', '2024-05-01 19:43:41', NULL), +(768, 32, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-05-01 19:43:45', '2024-05-01 19:43:45', NULL), +(769, 32, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-05-01 19:43:52', '2024-05-01 19:43:52', NULL), +(770, 32, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-05-01 19:56:23', '2024-05-01 19:56:23', NULL), +(771, 32, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-05-01 19:56:27', '2024-05-01 19:56:27', NULL), +(772, 32, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-05-01 19:56:33', '2024-05-01 19:56:33', NULL), +(773, 33, 1, 'aaa', '2024-05-01 20:41:11', '2024-05-01 20:41:11', NULL), +(774, 33, 2, 'aaa', '2024-05-01 20:41:16', '2024-05-01 20:41:16', NULL), +(775, 33, 3, 'aaa', '2024-05-01 20:41:20', '2024-05-01 20:41:20', NULL), +(776, 34, 1, 'aaaa', '2024-05-01 21:30:43', '2024-05-01 21:30:43', NULL), +(777, 34, 2, 'bbbb', '2024-05-01 21:30:58', '2024-05-01 21:30:58', NULL), +(778, 34, 3, 'ccccc', '2024-05-01 21:31:03', '2024-05-01 21:31:03', NULL), +(779, 34, 4, '123', '2024-05-01 21:42:24', '2024-05-01 21:42:24', NULL), +(780, 34, 5, '456', '2024-05-01 21:42:31', '2024-05-01 21:42:31', NULL), +(781, 34, 6, '666', '2024-05-01 21:42:36', '2024-05-01 21:42:36', NULL), +(782, 34, 7, 'sss', '2024-05-01 22:35:42', '2024-05-01 22:35:42', NULL), +(783, 34, 8, 'ggg', '2024-05-01 22:35:48', '2024-05-01 22:35:48', NULL), +(784, 34, 9, 'vvv', '2024-05-01 22:35:56', '2024-05-01 22:35:56', NULL), +(785, 34, 10, 'a', '2024-05-01 23:28:08', '2024-05-01 23:28:08', NULL), +(786, 34, 11, 'a', '2024-05-01 23:28:16', '2024-05-01 23:28:16', NULL), +(787, 34, 12, 's', '2024-05-01 23:28:21', '2024-05-01 23:28:21', NULL), +(788, 32, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-05-02 15:11:42', '2024-05-02 15:11:42', NULL), +(789, 32, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-05-02 15:11:49', '2024-05-02 15:11:49', NULL), +(790, 32, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-05-02 15:11:53', '2024-05-02 15:11:53', NULL), +(791, 32, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-05-02 15:20:30', '2024-05-02 15:20:30', NULL), +(792, 32, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-05-02 15:20:37', '2024-05-02 15:20:37', NULL), +(793, 32, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-05-02 15:20:44', '2024-05-02 15:20:44', NULL), +(794, 32, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-05-02 15:29:40', '2024-05-02 15:29:40', NULL), +(795, 32, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-05-02 15:29:49', '2024-05-02 15:29:49', NULL), +(796, 32, 18, '1234567', '2024-05-02 15:29:56', '2024-05-02 15:29:56', NULL), +(797, 32, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-05-02 15:38:47', '2024-05-02 15:38:47', NULL), +(798, 32, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-05-02 15:38:56', '2024-05-02 15:38:56', NULL), +(799, 32, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-05-02 15:39:06', '2024-05-02 15:39:06', NULL), +(800, 32, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-05-02 15:46:59', '2024-05-02 15:46:59', NULL), +(801, 32, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-05-02 15:47:06', '2024-05-02 15:47:06', NULL), +(802, 32, 24, '0 1 1 2 3 5 8 13', '2024-05-02 15:47:13', '2024-05-02 15:47:13', NULL), +(803, 32, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-05-02 15:56:14', '2024-05-02 15:56:14', NULL), +(804, 32, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-05-02 15:56:20', '2024-05-02 15:56:20', NULL), +(805, 32, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-05-02 15:56:31', '2024-05-02 15:56:31', NULL), +(806, 32, 28, 'System.out.print(topicArray);', '2024-05-02 16:04:21', '2024-05-02 16:04:21', NULL), +(807, 32, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-05-02 16:04:27', '2024-05-02 16:04:27', NULL), +(808, 32, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-05-02 16:04:34', '2024-05-02 16:04:34', NULL), +(809, 32, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-05-02 16:12:46', '2024-05-02 16:12:46', NULL), +(810, 32, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-05-02 16:12:53', '2024-05-02 16:12:53', NULL), +(811, 32, 33, '70', '2024-05-02 16:13:00', '2024-05-02 16:13:00', NULL), +(812, 32, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-05-02 16:21:28', '2024-05-02 16:21:28', NULL), +(813, 32, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-05-02 16:21:34', '2024-05-02 16:21:34', NULL), +(814, 32, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-05-02 16:21:41', '2024-05-02 16:21:41', NULL), +(815, 32, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-05-02 16:29:56', '2024-05-02 16:29:56', NULL), +(816, 32, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-05-02 16:30:02', '2024-05-02 16:30:02', NULL), +(817, 32, 39, '1407107.324173', '2024-05-02 16:30:11', '2024-05-02 16:30:11', NULL), +(818, 35, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-05-02 17:20:55', '2024-05-02 17:20:55', NULL), +(819, 35, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-05-02 17:21:01', '2024-05-02 17:21:01', NULL), +(820, 35, 3, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-05-02 17:21:07', '2024-05-02 17:21:07', NULL), +(821, 35, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-05-02 17:29:58', '2024-05-02 17:29:58', NULL), +(822, 35, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-05-02 17:30:06', '2024-05-02 17:30:06', NULL), +(823, 35, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-05-02 17:30:10', '2024-05-02 17:30:10', NULL), +(824, 35, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-05-02 17:38:13', '2024-05-02 17:38:13', NULL), +(825, 35, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-05-02 17:38:17', '2024-05-02 17:38:17', NULL), +(826, 35, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-05-02 17:38:22', '2024-05-02 17:38:22', NULL), +(827, 35, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-05-02 17:46:33', '2024-05-02 17:46:33', NULL), +(828, 35, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-05-02 17:46:38', '2024-05-02 17:46:38', NULL), +(829, 35, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-05-02 17:46:46', '2024-05-02 17:46:46', NULL), +(830, 35, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-05-02 17:56:36', '2024-05-02 17:56:36', NULL), +(831, 35, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-05-02 17:56:42', '2024-05-02 17:56:42', NULL), +(832, 35, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-05-02 17:56:48', '2024-05-02 17:56:48', NULL), +(833, 35, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-05-02 18:03:56', '2024-05-02 18:03:56', NULL), +(834, 35, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-05-02 18:04:03', '2024-05-02 18:04:03', NULL), +(835, 35, 18, '1234567', '2024-05-02 18:04:10', '2024-05-02 18:04:10', NULL), +(836, 35, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-05-02 18:20:28', '2024-05-02 18:20:28', NULL), +(837, 35, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-05-02 18:20:34', '2024-05-02 18:20:34', NULL), +(838, 35, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-05-02 18:20:41', '2024-05-02 18:20:41', NULL), +(839, 35, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-05-02 18:43:25', '2024-05-02 18:43:25', NULL), +(840, 35, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-05-02 18:43:31', '2024-05-02 18:43:31', NULL), +(841, 35, 24, '0 1 1 2 3 5 8 13', '2024-05-02 18:43:35', '2024-05-02 18:43:35', NULL), +(842, 35, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-05-02 18:54:59', '2024-05-02 18:54:59', NULL), +(843, 35, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-05-02 18:55:04', '2024-05-02 18:55:04', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(844, 35, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-05-02 18:55:08', '2024-05-02 18:55:08', NULL), +(845, 35, 28, 'System.out.print(topicArray);', '2024-05-02 19:16:53', '2024-05-02 19:16:53', NULL), +(846, 35, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-05-02 19:16:56', '2024-05-02 19:16:56', NULL), +(847, 35, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-05-02 19:17:01', '2024-05-02 19:17:01', NULL), +(848, 35, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-05-02 19:27:00', '2024-05-02 19:27:00', NULL), +(849, 35, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-05-02 19:27:05', '2024-05-02 19:27:05', NULL), +(850, 35, 33, '70', '2024-05-02 19:27:12', '2024-05-02 19:27:12', NULL), +(851, 35, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-05-02 19:41:07', '2024-05-02 19:41:07', NULL), +(852, 35, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-05-02 19:41:10', '2024-05-02 19:41:10', NULL), +(853, 35, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-05-02 19:41:15', '2024-05-02 19:41:15', NULL), +(854, 35, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-05-02 19:50:10', '2024-05-02 19:50:10', NULL), +(855, 35, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-05-02 19:50:15', '2024-05-02 19:50:15', NULL), +(856, 35, 39, '1407107.324173', '2024-05-02 19:50:22', '2024-05-02 19:50:22', NULL), +(857, 36, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-05-03 03:20:50', '2024-05-03 03:20:50', NULL), +(858, 36, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-05-03 03:21:08', '2024-05-03 03:21:08', NULL), +(859, 36, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-05-03 03:21:15', '2024-05-03 03:21:15', NULL), +(860, 36, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-05-03 03:29:41', '2024-05-03 03:29:41', NULL), +(861, 36, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-05-03 03:29:46', '2024-05-03 03:29:46', NULL), +(862, 36, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-05-03 03:29:55', '2024-05-03 03:29:55', NULL), +(863, 36, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-05-03 03:38:50', '2024-05-03 03:38:50', NULL), +(864, 36, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-05-03 03:38:56', '2024-05-03 03:38:56', NULL), +(865, 36, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-05-03 03:39:02', '2024-05-03 03:39:02', NULL), +(866, 36, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-05-03 03:54:45', '2024-05-03 03:54:45', NULL), +(867, 36, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-05-03 03:54:51', '2024-05-03 03:54:51', NULL), +(868, 36, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-05-03 03:54:58', '2024-05-03 03:54:58', NULL), +(869, 36, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-05-03 04:04:39', '2024-05-03 04:04:39', NULL), +(870, 36, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-05-03 04:04:46', '2024-05-03 04:04:46', NULL), +(871, 36, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-05-03 04:04:52', '2024-05-03 04:04:52', NULL), +(872, 36, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-05-03 04:13:36', '2024-05-03 04:13:36', NULL), +(873, 36, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-05-03 04:13:42', '2024-05-03 04:13:42', NULL), +(874, 36, 18, '1234567', '2024-05-03 04:13:48', '2024-05-03 04:13:48', NULL), +(875, 36, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-05-03 04:31:24', '2024-05-03 04:31:24', NULL), +(876, 36, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-05-03 04:31:29', '2024-05-03 04:31:29', NULL), +(877, 36, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-05-03 04:31:34', '2024-05-03 04:31:34', NULL), +(878, 36, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-05-03 04:50:48', '2024-05-03 04:50:48', NULL), +(879, 36, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-05-03 04:50:56', '2024-05-03 04:50:56', NULL), +(880, 36, 24, '0 1 1 2 3 5 8 13', '2024-05-03 04:51:06', '2024-05-03 04:51:06', NULL), +(881, 36, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-05-03 05:01:30', '2024-05-03 05:01:30', NULL), +(882, 36, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-05-03 05:01:34', '2024-05-03 05:01:34', NULL), +(883, 36, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-05-03 05:01:40', '2024-05-03 05:01:40', NULL), +(884, 36, 28, 'System.out.print(topicArray);', '2024-05-03 05:24:23', '2024-05-03 05:24:23', NULL), +(885, 36, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-05-03 05:24:26', '2024-05-03 05:24:26', NULL), +(886, 36, 30, 'Jika elemen array topics diubah menjadi String[] topics = {1,2,3,4};, maka output yang dihasilkan program akan menjadi: [1, 2, 3, 4]\nIni disebabkan oleh penggunaan Arrays.toString(topics), yang mengonversi array topics menjadi representasi string. Meskipun elemen-elemen array diinisialisasi sebagai integer, Java akan secara otomatis mengonversi mereka menjadi string dalam representasi yang sesuai untuk mencetak array. Sehingga, meskipun elemen array sebelumnya adalah string, hasilnya akan tetap sama.', '2024-05-03 05:24:29', '2024-05-03 05:24:29', NULL), +(887, 36, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-05-03 05:43:44', '2024-05-03 05:43:44', NULL), +(888, 36, 32, 'loop ini bertugas untuk mengakses setiap nilai dalam baris ke-i dari array nilai. Variabel j kemudian digunakan untuk mengakses setiap nilai secara berurutan dalam baris tersebut. Nilai-nilai ini kemudian dijumlahkan ke dalam variabel total, sementara jumlahData diinkrementasi untuk merekam jumlah nilai yang telah diakses.', '2024-05-03 05:43:47', '2024-05-03 05:43:47', NULL), +(889, 36, 33, '70', '2024-05-03 05:43:51', '2024-05-03 05:43:51', NULL), +(890, 36, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-05-03 05:54:57', '2024-05-03 05:54:57', NULL), +(891, 36, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-05-03 05:55:01', '2024-05-03 05:55:01', NULL), +(892, 36, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-05-03 05:55:05', '2024-05-03 05:55:05', NULL), +(893, 36, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-05-03 06:04:58', '2024-05-03 06:04:58', NULL), +(894, 36, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-05-03 06:05:03', '2024-05-03 06:05:03', NULL), +(895, 36, 39, '1407107.324173', '2024-05-03 06:05:07', '2024-05-03 06:05:07', NULL), +(896, 37, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-06-03 05:09:54', '2024-06-03 05:09:54', NULL), +(897, 37, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-06-03 05:10:11', '2024-06-03 05:10:11', NULL), +(898, 37, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-06-03 05:10:17', '2024-06-03 05:10:17', NULL), +(899, 37, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-06-03 05:31:36', '2024-06-03 05:31:36', NULL), +(900, 37, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-06-03 05:31:41', '2024-06-03 05:31:41', NULL), +(901, 37, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-06-03 05:31:47', '2024-06-03 05:31:47', NULL), +(902, 37, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-06-03 05:41:03', '2024-06-03 05:41:03', NULL), +(903, 37, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-06-03 05:41:10', '2024-06-03 05:41:10', NULL), +(904, 37, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-06-03 05:41:16', '2024-06-03 05:41:16', NULL), +(905, 37, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-06-03 05:50:28', '2024-06-03 05:50:28', NULL), +(906, 37, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-06-03 05:50:32', '2024-06-03 05:50:32', NULL), +(907, 37, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-06-03 05:50:37', '2024-06-03 05:50:37', NULL), +(908, 37, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-06-03 06:06:41', '2024-06-03 06:06:41', NULL), +(909, 37, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-06-03 06:06:46', '2024-06-03 06:06:46', NULL), +(910, 37, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-06-03 06:06:50', '2024-06-03 06:06:50', NULL), +(911, 37, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-06-03 06:24:19', '2024-06-03 06:24:19', NULL), +(912, 37, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-06-03 06:24:24', '2024-06-03 06:24:24', NULL), +(913, 37, 18, '1234567', '2024-06-03 06:24:28', '2024-06-03 06:24:28', NULL), +(914, 37, 19, 'i++ adalah ekspresi increment yang bertujuan untuk meningkatkan nilai variabel i sebanyak satu setiap kali iterasi dilakukan. Tanpa adanya peningkatan nilai i, perulangan akan terus berlangsung tanpa batas (loop tak terbatas) jika kondisi i < number selalu terpenuhi. Dengan adanya i++, nilai i akan terus bertambah satu setiap kali blok perulangan dieksekusi, sehingga perulangan akan berhenti saat nilai i mencapai nilai number. Jadi, kegunaan dari i++ dalam kode program di atas adalah untuk memastikan bahwa nilai i bertambah satu setiap kali iterasi perulangan dilakukan, sehingga perulangan akan berakhir ketika nilai i mencapai nilai number.', '2024-06-03 06:39:36', '2024-06-03 06:39:36', NULL), +(915, 37, 20, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Selanjutnya, sebuah variabel i dideklarasikan dan diinisialisasi dengan nilai 1: int i = 1;. Program memasuki loop while, di mana kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), maka blok pernyataan di dalam while dieksekusi. Di dalam blok perulangan, nilai i dicetak ke konsol tanpa baris baru menggunakan System.out.print(i);. Setelah itu, nilai i ditambah 1 dengan menggunakan ekspresi i++. Kontrol kembali ke atas loop while, dan kondisi i < number dievaluasi lagi. Proses ini terus berulang sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i sama dengan nilai number, yaitu 6, kondisi i < number menjadi salah dan eksekusi keluar dari loop while. Program selesai dieksekusi.', '2024-06-03 06:39:42', '2024-06-03 06:39:42', NULL), +(916, 37, 21, 'Tidak ada output yang akan dikeluarkan oleh program dalam kasus ini.', '2024-06-03 06:39:49', '2024-06-03 06:39:49', NULL), +(917, 37, 22, 'Baris kode \"int next = first + second\" berfungsi untuk mengalikan nilai dari variabel first dan second.', '2024-06-03 07:01:21', '2024-06-03 07:01:21', NULL), +(918, 37, 23, '1. Inisialisasi variabel n dengan nilai 6, first dengan 0, second dengan 1, dan i dengan 1.\n2. Cetak teks \"Deret Fibonacci:\".\n3. Cetak nilai first dan second.\n4. Masuk ke dalam loop do-while.\n5. Di dalam loop, hitung nilai next dengan menjumlahkan nilai first dan second.\n6. Cetak nilai next.\n7. Perbarui nilai first dengan nilai second, dan nilai second dengan nilai next.\n8. Tingkatkan nilai i sebanyak 1.\n9. Ulangi langkah 5-8 selama nilai i kurang dari atau sama dengan n.', '2024-06-03 07:01:27', '2024-06-03 07:01:27', NULL), +(919, 37, 24, '0 1 1 2 3 5 8 13', '2024-06-03 07:01:31', '2024-06-03 07:01:31', NULL), +(920, 37, 25, 'Kondisi i <= 5 pada perulangan pertama (outer loop) bertujuan untuk memastikan bahwa loop akan berjalan dari baris kelima hingga baris ke-i', '2024-06-03 07:09:37', '2024-06-03 07:09:37', NULL), +(921, 37, 26, 'Dalam perulangan kedua (inner loop) yang menggunakan variabel j, program ini sebenarnya mencetak bintang (*) sebanyak dua kali lipat dari nilai variabel i. Jadi, pada setiap iterasi dari perulangan luar (yang diatur oleh variabel i), perulangan dalam (yang diatur oleh variabel j) akan mencetak bintang sebanyak dua kali lipat dari nilai i saat itu. Misalnya, pada baris pertama (ketika i = 1), program akan mencetak dua bintang. Pada baris kedua (ketika i = 2), program akan mencetak empat bintang, dan seterusnya. Sehingga, outputnya akan menjadi seperti pola segitiga dengan tinggi lima baris, di mana jumlah bintang pada setiap baris adalah dua kali lipat dari nomor baris saat itu.', '2024-06-03 07:09:42', '2024-06-03 07:09:42', NULL), +(922, 37, 27, '*\n**\n***\n****\n*****\n******\n*******', '2024-06-03 07:09:49', '2024-06-03 07:09:49', NULL), +(923, 37, 28, 'System.out.print(topicArray);', '2024-06-03 07:25:08', '2024-06-03 07:25:08', NULL), +(924, 37, 29, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-06-03 07:25:12', '2024-06-03 07:25:12', NULL), +(925, 37, 30, 'Program dimulai dengan mendeklarasikan array topics yang berisi empat string: \"Opinion\", \"Tech\", \"Science\", dan \"Health\".\nSelanjutnya, kita menggunakan metode Arrays.toString(topics) untuk mengubah array tersebut menjadi sebuah string.\nHasil dari langkah kedua, yaitu string yang berisi representasi dari array topics, disimpan ke dalam variabel topicArray.\nKemudian, kita mencetak isi dari topicArray menggunakan System.out.print(topicArray).', '2024-06-03 07:25:19', '2024-06-03 07:25:19', NULL), +(926, 37, 31, 'Mengeksekusi perulangan sebanyak nilai.length', '2024-06-03 07:33:03', '2024-06-03 07:33:03', NULL), +(927, 37, 32, '70', '2024-06-03 07:33:09', '2024-06-03 07:33:09', NULL), +(928, 37, 33, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-06-03 07:33:15', '2024-06-03 07:33:15', NULL), +(929, 37, 34, 'Metode tampil() dalam metode main berfungsi untuk menghitung luas dan keliling lingkaran, tetapi tidak melakukan tindakan apa pun setelahnya. Sehingga, memanggil tampil() tidak memberikan hasil yang ditampilkan.', '2024-06-03 07:40:56', '2024-06-03 07:40:56', NULL), +(930, 37, 35, 'pada urutan penggunaan fungsi luasLingkaran() dan kelilingLingkaran(), yang mungkin memberikan kesan bahwa ada hubungan urutan yang penting dalam menghitung luas dan keliling lingkaran. Namun, sebenarnya tidak ada hubungan urutan yang penting antara keduanya, karena keduanya hanya melakukan perhitungan berdasarkan parameter yang diberikan.', '2024-06-03 07:41:02', '2024-06-03 07:41:02', NULL), +(931, 37, 36, 'Hasil akan tetap menampilkan Luas Lingkaran pada fungsi public static void tampil()', '2024-06-03 07:41:06', '2024-06-03 07:41:06', NULL), +(932, 37, 37, 'Program ini sebenarnya tidak menggunakan rekursi. Meskipun terdapat pemanggilan fungsi hitungBunga() di dalam dirinya sendiri, itu tidak terjadi secara rekursif.\n\nPemanggilan fungsi hitungBunga() di dalam blok else adalah bagian dari pendekatan iteratif. Fungsi ini dipanggil secara berulang dengan argumen yang berbeda hingga mencapai kondisi dasar (tahun == 0), namun tidak menggunakan rekursi karena tidak ada \"pemanggilan balik\" dari fungsi tersebut ke dirinya sendiri secara eksplisit. Sehingga, program ini tidak menggunakan rekursi', '2024-06-03 08:04:56', '2024-06-03 08:04:56', NULL), +(933, 37, 38, 'Pertama, program memeriksa apakah variabel tahun sama dengan 0. Jika ya, itu berarti perhitungan bunga telah selesai, dan fungsi akan mengembalikan nilai saldo tanpa melakukan perhitungan tambahan.\nJika kondisi pada langkah sebelumnya tidak terpenuhi, maka program akan melanjutkan ke blok else. Di dalam blok else, program akan menghitung bunga tahunan dengan rumus saldo * (bunga / 100). Namun, ini adalah kesalahan karena seharusnya kita harus membagi bunga dengan jumlah tahun, bukan dengan 100.\nSetelah itu, program akan menghitung total saldo dengan menambahkan saldo awal dengan bunga tahunan. Namun, dalam penjelasan yang salah ini, kita dapat mengatakan bahwa total saldo dihitung dengan membagi saldo dengan bunga, yang tentu saja tidak benar.\nTerakhir, program akan memanggil fungsi hitungBunga() secara rekursif dengan nilai total saldo sebagai saldo baru, bunga yang sama, dan tahun yang berkurang satu. Ini akan terus berulang hingga kondisi tahun == 0 terpenuhi, dan saldo akhir akan dikembalikan.', '2024-06-03 08:05:00', '2024-06-03 08:05:00', NULL), +(934, 37, 39, '1407107.324173', '2024-06-03 08:05:07', '2024-06-03 08:05:07', NULL), +(935, 39, 1, 'Karena untuk menghitung volume dan luas permukaan balok dibutuhkan bilangan bulat', '2024-06-10 01:56:00', '2024-06-10 01:56:00', NULL), +(936, 39, 2, '1. inisialisai panjang, lebar, tinggi\n2. mengihutung volume balok menggunakan rumus panjang * lebar * tinggi;\n3. menghitung luas permukaan balok menggunakan rumus 2*(panjang * lebar + panjang * tinggi + lebar * tinggi);\n4. Cetak hasil Volume balok dan luas permukaan balok menggunakan fungsi System.out.print(\"Volume balok = \"+ vBalok + \", \"); System.out.print(\"Luas permukaan balok = \"+ lBalok);', '2024-06-10 01:56:11', '2024-06-10 01:56:11', NULL), +(937, 39, 3, 'mengganti nilai pada variable tinggi, panjang, lebar', '2024-06-10 01:56:15', '2024-06-10 01:56:15', NULL), +(938, 39, 4, 'Untuk pemilihan kondisi tertentu', '2024-06-10 02:00:48', '2024-06-10 02:00:48', NULL), +(939, 39, 5, 'Inisialisasi variabel nilai dengan nilai 80\nJika nilai yang diinisialisasi bernilai lebih dari 70 maka mencetak hasil \"Selamat anda lulus!\"', '2024-06-10 02:00:52', '2024-06-10 02:00:52', NULL), +(940, 39, 6, 'Tidak ada output yang ditampilkan', '2024-06-10 02:00:57', '2024-06-10 02:00:57', NULL), +(941, 39, 7, 'Untuk menentukan pemilihan kondisi jika kondisi bernilai benar maka if dijalankan ketika kondisi salah maka else yang dieksekusi', '2024-06-10 02:06:07', '2024-06-10 02:06:07', NULL), +(942, 39, 8, '1, menginisialisasi nilai itemCost \n2. menginisialisasi variabel order dengan string kosong\n3. jika nilai itemCost lebih dari 24.00 maka akan memanggil variable order dengan mencetak High Value Item!\n4. jika nilai itemCost tidak lebih dari 24.00 maka akan memanggil variable order dengan mencetak Low Value Item!', '2024-06-10 02:06:12', '2024-06-10 02:06:12', NULL), +(943, 39, 9, 'Low Value Item!', '2024-06-10 02:06:16', '2024-06-10 02:06:16', NULL), +(944, 39, 10, 'Program default dieksekusi ketika variable shipping tidak sesuai dengan kondisi case', '2024-06-10 02:16:01', '2024-06-10 02:16:01', NULL), +(945, 39, 11, '1. menginisialisasi variable shipping dan shippingCost\n2. membuat pemilihan kondisi menggunakan switch case\n3. menentukan jika kondisi shipping bernilai \"Regular\" maka hasil yang di cetak bernilai 0\n4. jika kondisi shipping bernilai \"Express\" maka hasil yang di cetak bernilai 1.75\n5. jika kondisi shipping tidak bernilai \"Regular\" dan \"Express\" maka hasil yang dicetak 0.50', '2024-06-10 02:16:06', '2024-06-10 02:16:06', NULL), +(946, 39, 12, 'ketika kondisi shipping tidak bernilai \"Regular\" dan \"Express\"', '2024-06-10 02:16:13', '2024-06-10 02:16:13', NULL), +(947, 39, 13, 'karena variabel isMember bernilai True atau False', '2024-06-10 02:26:51', '2024-06-10 02:26:51', NULL), +(948, 39, 14, '1. Inisiasi variabel isMember dengan nilai False, total dengan nilai 200000, dan diskon bernilai 0\n2. pemilihan kondisi jika isMember bernilai False maka menjalankan pemilihan kondisi else if (total > 150000).\n3. mengembalikan nilai disnkon bernilai 15\n4. mencetak hasil berupa \"diskon yang didapatkan adalah diskon 15%\"', '2024-06-10 02:26:57', '2024-06-10 02:26:57', NULL), +(949, 39, 15, 'jika variabel total bernilai 30.000 maka output yang dihasilkan yaitu diskon yang didapatkan adalah diskon 5%\"', '2024-06-10 02:27:03', '2024-06-10 02:27:03', NULL), +(950, 39, 16, 'untuk increament', '2024-06-10 02:33:19', '2024-06-10 02:33:19', NULL), +(951, 39, 17, '1. inisialisasi variabel number\n2. menjalankan kondisi perulangan dengan nilai variabel i = 1, kemudian dicek jika i kurang dari number maka mencetak nilai i. lalu nilai i diincremant atau naik 1 nilai\n3. jika nilai i masih kurang dari number, maka akan dicetak nilai i\n4. jika nilai i tidak kurang dari number maka perulangan berhenti', '2024-06-10 02:33:25', '2024-06-10 02:33:25', NULL), +(952, 39, 18, 'maka perulangan dijalankan sebanyak 7 kali, mulai dari i = 1 sampai dengan 7', '2024-06-10 02:33:32', '2024-06-10 02:33:32', NULL), +(953, 39, 19, 'untuk increament', '2024-06-10 02:36:52', '2024-06-10 02:36:52', NULL), +(954, 39, 20, '1. inisialisasi variabel number, dan i\n2. pengecekan kondisi jika i kurang dari number, maka akan dicetak nilai i\n3. kemudian nilai i diincreament (naik 1 angka)', '2024-06-10 02:36:59', '2024-06-10 02:36:59', NULL), +(955, 39, 21, 'tidak mencetak apapun', '2024-06-10 02:37:06', '2024-06-10 02:37:06', NULL), +(956, 39, 22, 'untuk menambah nilai dari variabel first dan second', '2024-06-10 02:45:40', '2024-06-10 02:45:40', NULL), +(957, 39, 23, '1. menjalankan program do\n2. menjalankan variabel next yaitu menambah nilai first dan second\n3. mencetak hasil variabel next\n4. kemudian mengubah nilai variabel first dengan nilai second, kemudian mengubah nilai variabel second dengan nilai next\n5. increament variabel i\n6. jika nilai variabel i kurang dari samadengan n, maka program do dijalankan. namun jika i tidak bernilai kurang dari samadengan n maka perulangan berhenti', '2024-06-10 02:45:45', '2024-06-10 02:45:45', NULL), +(958, 39, 24, 'maka perulangan terus dijalankan hingga nilai i maksimal samadengan 7', '2024-06-10 02:45:53', '2024-06-10 02:45:53', NULL), +(959, 39, 25, 'untuk melakukan perulangan pertama sebanyak 5 kali yaitu dari nilai 1 samadengan 5', '2024-06-10 02:53:08', '2024-06-10 02:53:08', NULL), +(960, 39, 26, '1. inisialisasi variabel j = 1, kemudian pengecekan jika nilai j kurang dari nilai j maka mengeksekusi output += \"*\";', '2024-06-10 02:53:15', '2024-06-10 02:53:15', NULL), +(961, 39, 27, 'maka perulangan pertama dieksekusi sebanyak 6 kali', '2024-06-10 02:53:22', '2024-06-10 02:53:22', NULL), +(962, 39, 28, 'String topicArray = Arrays.toString(topics);', '2024-06-10 03:07:34', '2024-06-10 03:07:34', NULL), +(963, 39, 29, '1. menginisialisasi variabel array 1 dimensi\n2. mengubah nilai array menjadi string\n3. mencetak hasil array yang telah diubah menjadi string', '2024-06-10 03:07:40', '2024-06-10 03:07:40', NULL), +(964, 39, 30, 'muncul error. karena Arrays.toString untuk type data string pada array', '2024-06-10 03:07:45', '2024-06-10 03:07:45', NULL), +(965, 40, 1, 'Karena untu memberikan hasil pada perhitungan tersebut membutuhkan nilai bilangan bulat atau number', '2024-06-10 03:14:12', '2024-06-10 03:14:12', NULL), +(966, 40, 2, '1.Menginisialisasi terlebih dahulu setiap variabel seperti panjang, lebar, dan tinggi. Kemudian memberikan nilai setiap variabelnya\n2.Menghitung rumus volume balok yiatu panjang * lebar * tinggi;\n3.Menghitung rumus luas permukaan balok yaitu 2*(panjang * lebar + panjang * tinggi + lebar * tinggi);\n4.Cetak hasil dengan cara print variabel vBalok untuk volume dan lBalok untuk luas permukaan', '2024-06-10 03:14:20', '2024-06-10 03:14:20', NULL), +(967, 40, 3, 'Dengan langsung mengubah nilai pada setiap variabelnya', '2024-06-10 03:14:25', '2024-06-10 03:14:25', NULL), +(968, 40, 4, 'Untuk pemilihan pada kondisi tertentu, jika sesuai akan dieksekusi', '2024-06-10 03:21:50', '2024-06-10 03:21:50', NULL), +(969, 40, 5, '1.Menginisialisasi variabel nilai dengan tipe data integer dan valuenya yaitu 8.\n2.Terdapat kondisi berupa if jika nilai lebih besar dari 70 maka akan menampilkan selamat anda lulus!\n3.Sehingga jika yang diinputkan berupa 80 maka akan tampil Selamat anda lulus!', '2024-06-10 03:21:57', '2024-06-10 03:21:57', NULL), +(970, 40, 6, 'Tidak ada output', '2024-06-10 03:22:04', '2024-06-10 03:22:04', NULL), +(971, 40, 7, 'Untuk menentukan suatu kondisi perulangan, jika if sesuai dengan kondisi if maka akan dieksekusi proses tersebut jika tidak maka yang dieksekusi adalah proses pada else', '2024-06-10 03:28:51', '2024-06-10 03:28:51', NULL), +(972, 40, 8, '1.Menginisialisasi variabel itemCost dengan tipe data double dan memberi nilai yaitu 30.99\n2.Menginisialisasi variabel order dengan tipe data string dan memberi nilai yaitu kosong/\" \"\n3.Terdapat kondisi jika itemCost lebih dari 24.00 maka akan dicetak High Value Item!\n4.Selain itu maka yang dicetak adalah Low Value Item!\n5.Cetak variabel order', '2024-06-10 03:28:57', '2024-06-10 03:28:57', NULL), +(973, 40, 9, 'Low Value Item!', '2024-06-10 03:29:04', '2024-06-10 03:29:04', NULL), +(974, 40, 10, 'Jika tidak terdapat case yang sesuai makan default yang dijalankan', '2024-06-10 03:34:55', '2024-06-10 03:34:55', NULL), +(975, 40, 11, '1.Menginisialisasi variabel shipping dengan tipe data string dan nilai yaitu Express\n2.Terdapat case yang pertama Regular maka yang akan dieksekusi 0\n3.Terdapat case yang pertama Express maka yang akan dieksekusi 1.75\n4.Jika tidak ada case yang cocok maka default yang akan dijalankan yaitu 0.50;\n5.Cetak hasil +shippingCost', '2024-06-10 03:35:02', '2024-06-10 03:35:02', NULL), +(976, 40, 12, 'Jika tidak ada case yang cocok maka akan default', '2024-06-10 03:35:09', '2024-06-10 03:35:09', NULL), +(977, 40, 13, 'Karena input yang diberikan hanya dua kondisi yaitu true dan false.', '2024-06-10 03:41:45', '2024-06-10 03:41:45', NULL), +(978, 40, 14, 'Jika isMember false maka, jika total kurang dari 100000 maka akan mendapatkan diskon sebesar 5 . Jika total lebih dari sama dengan 100000 dan total kurang dari sama dengan 150000 maka diskon sebesar 10. Dan jika total lebih dari 150000 maka diskon sebesar 15', '2024-06-10 03:41:50', '2024-06-10 03:41:50', NULL), +(979, 40, 15, 'Maka yang ditampilkan diskon yang didapatkan adalah 10%', '2024-06-10 03:41:56', '2024-06-10 03:41:56', NULL), +(980, 40, 16, 'Yaitu untuk melakukan perulangan dengan kondisi yang sesuai. Atau increment', '2024-06-10 03:50:34', '2024-06-10 03:50:34', NULL), +(981, 40, 17, '1.Menginisialisasi variabel number dengan tipe data integer dan bernilai 6\n2.Terdapat perulangan yaitu i dimulai dari 1 dan kondisi jika i kurang dari number maka perulangan akan dilakukan terus menerus (i++)\n3.Cetak variabel i sesuai kondisi', '2024-06-10 03:50:39', '2024-06-10 03:50:39', NULL), +(982, 40, 18, '1,2,3,4,5,6,7', '2024-06-10 03:50:45', '2024-06-10 03:50:45', NULL), +(983, 41, 1, 'karena data pada variabel panjang, lebar, tinggi, vBalok, dan lBalok berupa angka yang harus dihitung menggunakan rumus Luas Permukaan Balok', '2024-06-10 03:59:51', '2024-06-10 03:59:51', NULL), +(984, 41, 2, 'langkah perhitungan volume :\nvBalok = panjang * lebar * tinggi;\nsehingga vBalok = 10*6*7 = 420\n\nlangkah luas permukaan balok:\nlBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi);\nlBalok = 2*(10*6+10*7+6*7) = 344', '2024-06-10 03:59:57', '2024-06-10 03:59:57', NULL), +(985, 41, 3, 'angka pada variabel nilai panjang, lebar, dan tinggi langsung diganti dengan sesuai kebutuhan', '2024-06-10 04:00:02', '2024-06-10 04:00:02', NULL), +(986, 41, 4, 'melakukan perulangan untuk mencari nilai yang lebih dari 70', '2024-06-10 04:04:50', '2024-06-10 04:04:50', NULL), +(987, 41, 5, 'Memanggil nilai dari variabel nilai kemudian dilakukan loopingin dengan jika nilai pada variabel di atas 70 maka mengeluarkan output Selamat anda lulus!', '2024-06-10 04:04:55', '2024-06-10 04:04:55', NULL), +(988, 41, 6, 'Tidak menghasilkan apa-apa karena tidak memiliki perulangan else untuk kondisi selain if', '2024-06-10 04:05:00', '2024-06-10 04:05:00', NULL), +(989, 41, 7, 'digunakan untuk melakukan perulangan mencari kondisi apakah nilai pada variabel itemCost di bawah 24.00 atau di atas 24.00', '2024-06-10 04:11:51', '2024-06-10 04:11:51', NULL), +(990, 41, 8, 'terdapat nilai dari variabel itemCost yaitu 30.99 kemudian nilai tersebut diproses pada looping karena nilai tersebut di atas 24.00 maka output yang dihasilkan High Value Item!', '2024-06-10 04:11:55', '2024-06-10 04:11:55', NULL), +(991, 41, 9, 'Low Value Item!', '2024-06-10 04:12:00', '2024-06-10 04:12:00', NULL), +(992, 41, 10, 'jika casenya tidak terpenuhi maka memanggil nilai default', '2024-06-10 04:17:58', '2024-06-10 04:17:58', NULL), +(993, 41, 11, 'inisialisasi shipping dan shippingCost kemudian menggunakan pemilihan switch case jika shipping bernilai regular maka shippingCost yang dicetak 0 namun jika shipping bernilai express maka shippingCost yang dicetak 1.75 namun jika kedua kondisi tersebut tidak terpenuhi maka memanggil nilai default yaitu 0.50', '2024-06-10 04:18:03', '2024-06-10 04:18:03', NULL), +(994, 41, 12, 'ketika shipping tidak bernilai regular atau express', '2024-06-10 04:18:07', '2024-06-10 04:18:07', NULL), +(995, 41, 13, 'karena untuk nilai variabel isMember true or false', '2024-06-10 04:27:48', '2024-06-10 04:27:48', NULL), +(996, 41, 14, 'jika nilai isMember adalah false maka nilai diskon yang di ambil adalah 50 karena nilai total = 200000', '2024-06-10 04:27:52', '2024-06-10 04:27:52', NULL), +(997, 41, 15, 'berarti mendapatkan diskon 10', '2024-06-10 04:27:56', '2024-06-10 04:27:56', NULL), +(998, 41, 16, 'untuk melakukan perulangan sampai batas kondisi yang ditentukan', '2024-06-10 04:31:11', '2024-06-10 04:31:11', NULL), +(999, 41, 17, 'menginisialisasi variabel number kemudian melakukan perulangan menggunakan syntax for dengan kondisi for(int i = 1; i < number; i++)', '2024-06-10 04:31:15', '2024-06-10 04:31:15', NULL), +(1000, 41, 18, '1234567', '2024-06-10 04:31:18', '2024-06-10 04:31:18', NULL), +(1001, 41, 19, 'sebagai perulangan', '2024-06-10 04:34:56', '2024-06-10 04:34:56', NULL), +(1002, 41, 20, 'menginisialisasi variabel i kemudian melakuakn perulangan mulai dari 1 sampai kurang dari 6', '2024-06-10 04:35:02', '2024-06-10 04:35:02', NULL), +(1003, 41, 21, 'maka i akan melakukan perulangan terus menerus', '2024-06-10 04:35:11', '2024-06-10 04:35:11', NULL), +(1004, 41, 22, 'untuk menjumlahkan nilai dari variabel first dan variabel second', '2024-06-10 04:38:45', '2024-06-10 04:38:45', NULL), +(1005, 41, 23, 'menginisialisasi n, first, second, kemudian akan di cetak deret fibonacci sesuai dengan kondisi perulanngan do while', '2024-06-10 04:38:49', '2024-06-10 04:38:49', NULL), +(1006, 41, 24, '0 1 1 2 3 5 8 13 21', '2024-06-10 04:38:54', '2024-06-10 04:38:54', NULL), +(1007, 41, 25, 'untuk menentukan kondisi perulangan akan berhenti jika nilai variabel i < 5', '2024-06-10 04:42:50', '2024-06-10 04:42:50', NULL); +INSERT INTO `user_answer` (`id`, `user_id`, `essay_question_id`, `answer`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1008, 41, 26, 'menginisialisasi variabel output dengan string \" \" kemudian dilakukan looping secara dua kali, kemudian output dicetak sebanyak kondisi dari perulangan', '2024-06-10 04:42:54', '2024-06-10 04:42:54', NULL), +(1009, 41, 27, '*\n**\n***\n****\n*****\n******', '2024-06-10 04:42:58', '2024-06-10 04:42:58', NULL), +(1010, 41, 28, 'String topicArray = Arrays.toString(topics);', '2024-06-13 03:23:19', '2024-06-13 03:23:19', NULL), +(1011, 41, 29, 'Menginisialisasi variabel topics yang bertipe data Strings dalam array tersebut diubah menjadi bertipe data String kemudian di print', '2024-06-13 03:23:32', '2024-06-13 03:23:32', NULL), +(1012, 41, 30, 'output yang dihasilkan yaitu 1,2,3,4 karena bertipe data Strings', '2024-06-13 03:23:39', '2024-06-13 03:23:39', NULL), +(1013, 41, 31, 'untuk membatasi jumlah perulangan sebanyak jumlah panjang data dari array nilai.', '2024-06-13 03:41:28', '2024-06-13 03:41:28', NULL), +(1014, 41, 32, 'perulangan akan dimulai dari 0 dan berakhir saat nilai j', '2024-06-13 03:41:31', '2024-06-13 03:41:31', NULL), +(1015, 41, 33, '82', '2024-06-13 03:41:35', '2024-06-13 03:41:35', NULL), +(1016, 41, 34, 'untuk memanggil function tampil', '2024-06-13 03:45:44', '2024-06-13 03:45:44', NULL), +(1017, 41, 35, 'menginisialisasi phi, r, luas, dan keliling lalu di jalankan sesuai dengan kondisi System.out.print(\"Luas Lingkaran = \" + luas + \"\\n\" + \"Keliling Lingkaran = \" + keliling);', '2024-06-13 03:45:47', '2024-06-13 03:45:47', NULL), +(1018, 41, 36, 'tidak akan menampilkan output apapun', '2024-06-13 03:45:50', '2024-06-13 03:45:50', NULL), +(1019, 41, 37, 'ya', '2024-06-13 03:51:15', '2024-06-13 03:51:15', NULL), +(1020, 41, 38, 'mendefinisikan parameter double saldo, double bunga, int tahun', '2024-06-13 03:51:18', '2024-06-13 03:51:18', NULL), +(1021, 41, 39, '1.402.551,7307', '2024-06-13 03:51:20', '2024-06-13 03:51:20', NULL), +(1022, 40, 19, 'digunakan sebagai operator increment', '2024-06-13 05:31:48', '2024-06-13 05:31:48', NULL), +(1023, 40, 20, 'menginisialisasi variabel number dengan nilai 6 dan menginisialisasi variabel i dengan nilai 1, jika kondisi while terpenuhi maka akan mengeksekusi while namun jika tidak terpenuhi maka akan mengeksekusi System.out.print(i);', '2024-06-13 05:32:03', '2024-06-13 05:32:03', NULL), +(1024, 40, 21, 'tidak ada', '2024-06-13 05:32:14', '2024-06-13 05:32:14', NULL), +(1025, 40, 22, 'untuk menghitung angka selanjutnya dari deret angka fibonacci', '2024-06-13 05:37:38', '2024-06-13 05:37:38', NULL), +(1026, 40, 23, 'menginisialisasi variabel n, first, second, dan i, mencetak nilai next menggunakan perintah System.out.print(next + \" \"); jika nilai next terpenuhi maka menjalankan second', '2024-06-13 05:37:45', '2024-06-13 05:37:45', NULL), +(1027, 40, 24, '0 1 1 2 3 5 8 13 21', '2024-06-13 05:37:53', '2024-06-13 05:37:53', NULL), +(1028, 40, 25, 'baris piramida menjadi 7 baris', '2024-06-13 05:43:35', '2024-06-13 05:43:35', NULL), +(1029, 40, 26, 'perulangan dimulai dari nilai 1 dan berakhir pada variabel j. Saat kondisi terpenuhi, satu bintang akan ditambahkan ke variabel “output”, jumlah bintang akan terus bertambah seiring dengan nilai “i” yang meningkat.', '2024-06-13 05:43:42', '2024-06-13 05:43:42', NULL), +(1030, 40, 27, '*\n**\n***\n****\n*****\n******', '2024-06-13 05:43:49', '2024-06-13 05:43:49', NULL), +(1031, 40, 28, 'String topicArray = Arrays.toString(topics);', '2024-06-13 05:47:03', '2024-06-13 05:47:03', NULL), +(1032, 40, 29, 'menginisialisasi variabel topics yang bertipe data string kemudian mencetak nilai menggunakan perintah System.out.print(topicArray);', '2024-06-13 05:47:09', '2024-06-13 05:47:09', NULL), +(1033, 40, 30, 'eror', '2024-06-13 05:47:17', '2024-06-13 05:47:17', NULL), +(1034, 40, 31, 'untuk membatasi jumlah perulangan', '2024-06-13 05:51:03', '2024-06-13 05:51:03', NULL), +(1035, 40, 32, 'perulangan dimulai dengan nilai 0 dan berakhir pada nilai j kurang dari jumlah panjang array', '2024-06-13 05:51:10', '2024-06-13 05:51:10', NULL), +(1036, 40, 33, '82', '2024-06-13 05:51:18', '2024-06-13 05:51:18', NULL), +(1037, 40, 34, 'untuk menampilkan function tampil', '2024-06-13 05:54:00', '2024-06-13 05:54:00', NULL), +(1038, 40, 35, 'menginisialisasi variabel phi, r, luas dan keliling kemudian memproses perintah System.out.print(\"Luas Lingkaran = \" + luas + \"\\n\" + \"Keliling Lingkaran = \" + keliling);', '2024-06-13 05:54:06', '2024-06-13 05:54:06', NULL), +(1039, 40, 36, 'tidak menampilkan output apapun', '2024-06-13 05:54:15', '2024-06-13 05:54:15', NULL), +(1040, 40, 37, 'ya', '2024-06-13 05:55:47', '2024-06-13 05:55:47', NULL), +(1041, 40, 38, 'mendifinisikan parameter double saldo, double bunga, int tahun', '2024-06-13 05:55:53', '2024-06-13 05:55:53', NULL), +(1042, 40, 39, '1.402.551,7307', '2024-06-13 05:56:01', '2024-06-13 05:56:01', NULL), +(1043, 42, 1, 'Karena panjang, lebar, tinggu vBalok dan lBalok berisi bilangan bulat', '2024-06-22 05:46:55', '2024-06-22 05:46:55', NULL), +(1044, 42, 2, 'inisialisasi panjang, lebar, tinggi, vBalok, lBalok menggunakan tipe data int, panjang = 10, lebar = 6, tinggi = 7\nkemudian menghitung volume balok dengan rumus balok vBalok = panjang * lebar * tinggi;\ninisialisasi rumus \nkemudian menghitung lebar balok dengan rumus lebar balok lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi);\nkemudian print hasil perhitungan volume balok dan lebar balok menggunakan System.out.print', '2024-06-22 05:46:59', '2024-06-22 05:46:59', NULL), +(1045, 42, 3, 'mengubah nilai inisialisasai seperti panjang = 11;\n lebar = 9;\n tinggi = 17;', '2024-06-22 05:47:03', '2024-06-22 05:47:03', NULL), +(1046, 42, 4, 'Untuk menentukan jika nilai lebih dari 70 maka menampilkan \"Selamat anda lulus!\"', '2024-06-22 06:47:47', '2024-06-22 06:47:47', NULL), +(1047, 42, 5, 'inisialisasi int nilai = 80;\n\nkemudian dicek kondisi nya ketika variabel nilai lebih dari 70 maka menampilkan \"Selamat anda lulus!\"', '2024-06-22 06:47:55', '2024-06-22 06:47:55', NULL), +(1048, 42, 6, 'Tidak ada output', '2024-06-22 06:48:01', '2024-06-22 06:48:01', NULL), +(1049, 43, 1, 'Karena variabel tersebut berbentuk bilangan bulat', '2024-06-23 07:49:39', '2024-06-23 07:49:39', NULL), +(1050, 43, 2, 'inisialisasi variabel panjang, lebar, tinggi, vBalok, lBalok dengan tipe data int, dan memberikan nilai panjang = 10, lebar = 6, tinggi = 7, kemudian menghitung volume balok menggunakan rumus vBalok = panjang * lebar * tinggi; dan menghitung rumus luas balok menggunakan rumus lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi), setelah itu untuk menampilkan hasilnya menggunakan fungsi System.out.print', '2024-06-23 07:49:51', '2024-06-23 07:49:51', NULL), +(1051, 43, 3, 'mengganti nilai nilai panjang = 9, lebar=5, dan tinggi=8', '2024-06-23 07:49:57', '2024-06-23 07:49:57', NULL), +(1052, 43, 4, 'Untuk menentukan kondisi jika variabel nilai lebih dari 80 maka akan menampilkan Selamat anda lulus!', '2024-06-24 00:51:43', '2024-06-24 00:51:43', NULL), +(1053, 43, 5, 'Menginisialisasi variabel nilai dengan tipe data int, kemudian menginisialisasi nilai = 80 kemudia dicek kondisi ketika nilai lebih dari 70 maka menampilkan selamat anda lulus', '2024-06-24 00:51:49', '2024-06-24 00:51:49', NULL), +(1054, 43, 6, 'Tidak ada output yang ditampilkan', '2024-06-24 00:51:54', '2024-06-24 00:51:54', NULL), +(1055, 44, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-06-24 11:40:42', '2024-06-24 11:40:42', NULL), +(1056, 44, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-06-24 11:40:47', '2024-06-24 11:40:47', NULL), +(1057, 44, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-06-24 11:40:52', '2024-06-24 11:40:52', NULL), +(1058, 44, 4, 'If digunakan dalam kode tersebut untuk membuat kondisi atau pernyataan logis. Dalam konteks kode tersebut, if digunakan untuk melakukan pengecekan apakah nilai lebih besar dari 70. Jika kondisi tersebut terpenuhi, yaitu nilai lebih besar dari 70, maka pesan \"Selamat anda lulus!\" akan dicetak. If digunakan untuk memberikan pengambilan keputusan berdasarkan kondisi tertentu, yang memungkinkan eksekusi kode yang berbeda tergantung pada hasil kondisi yang dievaluasi.', '2024-06-24 11:43:56', '2024-06-24 11:43:56', NULL), +(1059, 44, 5, 'Menginisialisasi variabel nilai dengan nilai 80. Selanjutnya, program akan mengecek kondisi menggunakan pernyataan if. Jika nilai variabel nilai lebih besar dari 70, maka kondisi pernyataan di dalam if akan dieksekusi. Karena nilai variabel nilai adalah 80 (lebih besar dari 70), pernyataan \"Selamat anda lulus!\" akan dicetak menggunakan System.out.print(\"Selamat anda lulus!\");.', '2024-06-24 11:44:02', '2024-06-24 11:44:02', NULL), +(1060, 44, 6, 'Jika nilai variabel “nilai” kurang dari 70, maka tidak akan ada output yang ditampilkan, karena tidak ada pernyataan lain setelah kondisi if.', '2024-06-24 11:44:08', '2024-06-24 11:44:08', NULL), +(1063, 43, 7, 'Untuk menentukan pesan yang akan ditampilkan berdasarkan nilai dari variabel itemCost. Jika nilai itemCost lebih besar dari 24.00, maka pesan \"High Value Item!\" akan ditetapkan ke dalam variabel order. Namun, jika tidak, maka pesan \"Low Value Item!\" akan ditetapkan. Dengan demikian, fungsi if-else ini menentukan pesan yang sesuai dengan nilai itemCost dan menetapkannya ke dalam variabel order untuk ditampilkan.', '2024-06-25 03:25:03', '2024-06-25 03:25:03', NULL), +(1064, 43, 8, 'Berikut adalah alur program dari baris kode yang diberikan: 1. Variabel itemCost dideklarasikan dan diinisialisasi dengan nilai 30.99. 2. Variabel order dideklarasikan sebagai string kosong. 3. Dilakukan pengecekan kondisi menggunakan pernyataan if. Jika nilai itemCost lebih besar dari 24.00, maka langkah 4 akan dijalankan; jika tidak, langkah 5 akan dijalankan. 4. Pesan \"High Value Item!\" ditetapkan ke dalam variabel order. 5. Jika kondisi pada langkah 3 tidak terpenuhi, maka pesan \"Low Value Item!\" ditetapkan ke dalam variabel order. 6. Pesan yang telah ditetapkan (berdasarkan hasil dari langkah 4 atau 5) kemudian ditampilkan menggunakan System.out.print. 7. Program selesai dieksekusi', '2024-06-25 03:25:09', '2024-06-25 03:25:09', NULL), +(1065, 43, 9, 'Output program akan menampilkan pesan \"Low Value Item!\".', '2024-06-25 03:25:16', '2024-06-25 03:25:16', NULL), +(1066, 43, 10, 'Ketika tidak ada case yang cocok dengan nilai yang diberikan untuk variabel shipping, maka blok kode yang berada di dalam default akan dieksekusi. Dalam kasus ini, jika nilai shipping tidak sama dengan \"Regular\" atau \"Express\", maka variabel shippingCost akan diinisialisasi dengan nilai 0.50.', '2024-06-25 03:26:40', '2024-06-25 03:26:40', NULL), +(1067, 43, 11, '1. Variabel shipping dideklarasikan dan diinisialisasi dengan nilai \"Express\". 2. Variabel shippingCost dideklarasikan tanpa diinisialisasi. 3. Dilakukan pengecekan nilai variabel shipping menggunakan pernyataan switch-case. 4. Jika nilai shipping adalah \"Regular\", maka shippingCost diatur ke nilai 0. 5. Jika nilai shipping adalah \"Express\", maka shippingCost diatur ke nilai 1.75. 6. Jika nilai shipping tidak cocok dengan nilai case manapun, maka blok default akan 7. dieksekusi dan shippingCost diatur ke nilai 0.50. 8. Nilai dari shippingCost yang telah ditetapkan kemudian ditampilkan menggunakan System.out.print. Program selesai dieksekusi', '2024-06-25 03:26:45', '2024-06-25 03:26:45', NULL), +(1068, 43, 12, 'Saat nilai shipping tidak bernilai regular maupun express, sehingga default case dieksekusi.', '2024-06-25 03:26:51', '2024-06-25 03:26:51', NULL), +(1096, 43, 13, 'Tipe data boolean cocok digunakan untuk menyatakan kondisi ya (true) atau tidak (false) dalam pemrograman.', '2024-06-30 11:19:41', '2024-06-30 11:19:41', NULL), +(1097, 43, 14, 'Jika nilai isMember adalah false, maka alur program akan mengikuti jalur di dalam blok else. Kemudian, program akan memeriksa nilai total untuk menentukan besarnya diskon yang diberikan kepada pelanggan non-anggota berdasarkan rentang total pembelian. Setelah itu, nilai diskon akan ditetapkan sesuai dengan rentang total pembelian yang sesuai, dan pesan akan ditampilkan dengan persentase diskon yang didapatkan.', '2024-06-30 11:19:46', '2024-06-30 11:19:46', NULL), +(1098, 43, 15, 'Jika nilai variabel \"total\" adalah Rp.30.000 dan nilai variabel \"isMember\" adalah false, maka output program akan menampilkan pesan \"diskon yang didapatkan adalah 5%\". Hal ini karena nilai total pembelian (Rp.30.000) kurang dari Rp.100.000, sehingga pelanggan non-anggota mendapatkan diskon sebesar 5%.', '2024-06-30 11:19:48', '2024-06-30 11:19:48', NULL), +(1099, 43, 16, 'Pada perulangan for di atas, i++ merupakan operasi penambahan satu unit ke variabel i. itu adalah ekspresi increment untuk menambah nilai variabel i dengan 1 setiap kali iterasi perulangan dilakukan. Dalam konteks kode tersebut, perulangan akan dimulai dengan i yang memiliki nilai awal 1 (int i = 1), kemudian pada setiap iterasi nilai i akan bertambah satu (i++). Perulangan akan terus dilakukan selama nilai i kurang dari number. Jadi, kegunaan dari i++ pada perulangan for di atas adalah untuk memperbarui nilai i setiap kali iterasi sehingga perulangan dapat berlanjut hingga mencapai kondisi tertentu (dalam kasus ini, hingga nilai i sama dengan number, yaitu 6).', '2024-06-30 11:21:15', '2024-06-30 11:21:15', NULL), +(1100, 43, 17, 'Pertama-tama, sebuah variabel number dideklarasikan dan diinisialisasi dengan nilai 6: int number = 6;. Kemudian, perulangan for dimulai dengan inisialisasi variabel i dengan nilai 1: int i = 1;. Pada setiap iterasi perulangan, kondisi i < number dievaluasi. Jika kondisi tersebut benar (nilai i kurang dari number), blok perulangan di dalamnya akan dieksekusi. Di dalam blok perulangan, System.out.print(i); akan mencetak nilai i ke konsol tanpa baris baru (tanpa spasi). Setelah blok perulangan dieksekusi, ekspresi iterasi i++ akan dieksekusi. Ini akan menambahkan 1 ke nilai i. Proses akan kembali ke langkah 3 dan akan terus berlanjut sampai kondisi i < number tidak lagi terpenuhi. Ketika nilai i mencapai nilai yang sama dengan number, yaitu 6, perulangan akan berhenti karena kondisi i < number tidak lagi terpenuhi. Program selesai dieksekusi.', '2024-06-30 11:21:19', '2024-06-30 11:21:19', NULL), +(1101, 43, 18, '1234567', '2024-06-30 11:21:26', '2024-06-30 11:21:26', NULL), +(1102, 45, 1, 'Variabel panjang, lebar, tinggi, vBalok, dan lBalok dideklarasikan sebagai tipe data int karena mereka merepresentasikan bilangan bulat dalam program ini. Tipe data int cocok untuk nilai bilangan bulat tanpa koma desimal.', '2024-06-30 11:23:52', '2024-06-30 11:23:52', NULL), +(1103, 45, 2, 'Berikut adalah langkah-langkah perhitungan volume dan luas permukaan balok berdasarkan kode program di atas: 1. Variabel panjang, lebar, dan tinggi balok diinisialisasi dengan nilai masing-masing. 2. Volume balok dihitung dengan rumus panjang × lebar × tinggi dan disimpan dalam variabel vBalok. 3. Luas permukaan balok dihitung dengan rumus 2 × (panjang × lebar + panjang × tinggi + lebar × tinggi) dan disimpan dalam variabel lBalok. 4. Hasil volume dan luas permukaan balok ditampilkan melalui output.', '2024-06-30 11:23:56', '2024-06-30 11:23:56', NULL), +(1104, 45, 3, 'Untuk mengubah nilai panjang, lebar, dan tinggi balok, cukup ganti nilai variabel tersebut sesuai kebutuhan, lalu jalankan program kembali.', '2024-06-30 11:24:00', '2024-06-30 11:24:00', NULL), +(1105, 45, 4, 'Fungsi dari pernyataan \"if\" dalam kode program di atas adalah untuk melakukan pengecekan kondisi. Lebih tepatnya, jika nilai variabel \"nilai\" lebih besar dari 70, maka program akan menampilkan pesan \"Selamat anda lulus!\".', '2024-07-02 10:29:00', '2024-07-02 10:29:00', NULL), +(1106, 45, 5, 'Berikut adalah alur program dari kode yang diberikan: 1. Variabel nilai dideklarasikan dan diinisialisasi dengan nilai 80. 2. Dilakukan pengecekan kondisi menggunakan pernyataan if. 3. Jika nilai variabel nilai lebih besar dari 70, maka blok kode di dalam pernyataan if akan dieksekusi. 4. Pesan \"Selamat anda lulus!\" akan ditampilkan karena nilai variabel nilai (80) memenuhi kondisi yang ditentukan. 5. Program selesai dieksekusi.', '2024-07-02 10:29:13', '2024-07-02 10:29:13', NULL), +(1107, 45, 6, 'Jika nilai dari variabel \"nilai\" kurang dari 70, tidak ada output yang akan dihasilkan oleh program ini. Ini karena pesan \"Selamat anda lulus!\" hanya akan ditampilkan jika nilai variabel \"nilai\" lebih besar dari 70, sesuai dengan kondisi yang diberikan dalam pernyataan if. Jika nilai \"nilai\" kurang dari atau sama dengan 70, maka blok kode di dalam pernyataan if tidak akan dieksekusi, dan tidak akan ada output yang dihasilkan.', '2024-07-02 10:29:18', '2024-07-02 10:29:18', NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_code_test_score` +-- + +CREATE TABLE `user_code_test_score` ( + `id` bigint UNSIGNED NOT NULL, + `question_id` int UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED DEFAULT NULL, + `score` int NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `user_scores` +-- + +CREATE TABLE `user_scores` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED DEFAULT NULL, + `content_id` int UNSIGNED DEFAULT NULL, + `score` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `question_id` int UNSIGNED DEFAULT NULL, + `started_at` timestamp NULL DEFAULT NULL, + `ended_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `on_timer` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `level_id` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `user_scores` +-- + +INSERT INTO `user_scores` (`id`, `user_id`, `content_id`, `score`, `created_at`, `updated_at`, `question_id`, `started_at`, `ended_at`, `deleted_at`, `on_timer`, `level_id`) VALUES +(1, 2, 1, 30, '2023-06-01 18:47:46', '2023-06-01 18:47:46', 1, NULL, NULL, NULL, NULL, 1), +(2, 2, 2, 30, '2023-06-01 19:32:48', '2023-06-01 19:32:48', 2, NULL, NULL, NULL, NULL, 1), +(3, 2, 3, 30, '2023-06-01 19:45:23', '2023-06-01 19:45:23', 3, NULL, NULL, NULL, NULL, 1), +(4, 2, 4, 30, '2023-06-01 20:47:17', '2023-06-01 20:47:17', 4, NULL, NULL, NULL, NULL, 1), +(5, 2, 5, 30, '2023-06-03 05:19:09', '2023-06-03 05:19:09', 5, NULL, NULL, NULL, NULL, 1), +(6, 2, 6, 30, '2023-06-03 06:12:05', '2023-06-03 06:12:05', 6, NULL, NULL, NULL, NULL, 2), +(7, 2, 7, 30, '2023-06-04 06:27:46', '2023-06-04 06:27:46', 7, NULL, NULL, NULL, NULL, 2), +(8, 2, 8, 30, '2023-06-04 06:48:55', '2023-06-04 06:48:55', 8, NULL, NULL, NULL, NULL, 2), +(9, 2, 9, 30, '2023-06-04 06:58:24', '2023-06-04 06:58:24', 9, NULL, NULL, NULL, NULL, 2), +(10, 2, 10, 30, '2023-06-04 07:00:54', '2023-06-04 07:00:54', 10, NULL, NULL, NULL, NULL, 2), +(11, 2, 11, 30, '2023-06-04 07:05:09', '2023-06-04 07:05:09', 11, NULL, NULL, NULL, NULL, 3), +(14, 2, 12, 30, '2023-06-04 07:15:40', '2023-06-04 07:15:40', 12, NULL, NULL, NULL, NULL, 3), +(15, 2, 13, 30, '2023-06-04 07:19:22', '2023-06-04 07:19:22', 13, NULL, NULL, NULL, NULL, 3), +(16, 3, 1, 30, '2023-06-07 07:34:36', '2023-06-07 07:34:36', 1, NULL, NULL, NULL, NULL, 1), +(17, 3, 2, 30, '2023-07-06 19:31:59', '2023-07-06 19:31:59', 2, NULL, NULL, NULL, NULL, 1), +(18, 4, 1, 30, '2023-07-06 20:23:08', '2023-07-06 20:23:08', 1, NULL, NULL, NULL, NULL, 1), +(19, 6, 1, 30, '2024-01-22 22:07:25', '2024-01-22 22:07:25', 1, NULL, NULL, NULL, NULL, 1), +(20, 6, 2, 30, '2024-01-22 22:49:43', '2024-01-22 22:49:43', 2, NULL, NULL, NULL, NULL, 1), +(21, 6, 3, 30, '2024-01-30 21:58:48', '2024-01-30 21:58:48', 3, NULL, NULL, NULL, NULL, 1), +(22, 6, 4, 30, '2024-02-26 20:23:20', '2024-02-26 20:23:20', 4, NULL, NULL, NULL, NULL, 1), +(23, 6, 5, 30, '2024-02-26 20:26:17', '2024-02-26 20:26:17', 5, NULL, NULL, NULL, NULL, 1), +(24, 6, 6, 30, '2024-03-03 10:12:59', '2024-03-03 10:12:59', 6, NULL, NULL, NULL, NULL, 2), +(25, 7, 1, 30, '2024-03-08 07:52:02', '2024-03-08 07:52:02', 1, NULL, NULL, NULL, NULL, 1), +(30, 7, 2, 30, '2024-03-08 08:37:07', '2024-03-08 08:37:07', 2, NULL, NULL, NULL, NULL, 1), +(31, 7, 3, 30, '2024-03-08 08:39:34', '2024-03-08 08:39:34', 3, NULL, NULL, NULL, NULL, 1), +(32, 7, 4, 30, '2024-03-08 09:20:18', '2024-03-08 09:20:18', 4, NULL, NULL, NULL, NULL, 1), +(33, 9, 1, 30, '2024-03-11 05:00:58', '2024-03-11 05:00:58', 1, NULL, NULL, NULL, NULL, 1), +(34, 9, 2, 30, '2024-03-11 05:05:06', '2024-03-11 05:05:06', 2, NULL, NULL, NULL, NULL, 1), +(35, 9, 3, 30, '2024-03-11 05:07:42', '2024-03-11 05:07:42', 3, NULL, NULL, NULL, NULL, 1), +(36, 9, 4, 30, '2024-03-11 05:10:20', '2024-03-11 05:10:20', 4, NULL, NULL, NULL, NULL, 1), +(37, 9, 5, 30, '2024-03-11 05:15:38', '2024-03-11 05:15:38', 5, NULL, NULL, NULL, NULL, 1), +(38, 7, 5, 30, '2024-03-11 05:19:33', '2024-03-11 05:19:33', 5, NULL, NULL, NULL, NULL, 1), +(39, 10, 1, 30, '2024-03-11 08:35:27', '2024-03-11 08:35:27', 1, NULL, NULL, NULL, NULL, 1), +(40, 10, 2, 30, '2024-03-11 08:37:52', '2024-03-11 08:37:52', 2, NULL, NULL, NULL, NULL, 1), +(41, 10, 3, 30, '2024-03-11 08:41:56', '2024-03-11 08:41:56', 3, NULL, NULL, NULL, NULL, 1), +(42, 10, 4, 30, '2024-03-11 08:45:39', '2024-03-11 08:45:39', 4, NULL, NULL, NULL, NULL, 1), +(43, 10, 5, 30, '2024-03-11 08:49:06', '2024-03-11 08:49:06', 5, NULL, NULL, NULL, NULL, 1), +(44, 11, 1, 30, '2024-03-11 08:56:19', '2024-03-11 08:56:19', 1, NULL, NULL, NULL, NULL, 1), +(45, 11, 2, 30, '2024-03-11 08:57:56', '2024-03-11 08:57:56', 2, NULL, NULL, NULL, NULL, 1), +(46, 11, 3, 30, '2024-03-11 08:59:14', '2024-03-11 08:59:14', 3, NULL, NULL, NULL, NULL, 1), +(47, 11, 4, 30, '2024-03-11 09:00:32', '2024-03-11 09:00:32', 4, NULL, NULL, NULL, NULL, 1), +(48, 11, 5, 30, '2024-03-11 09:02:06', '2024-03-11 09:02:06', 5, NULL, NULL, NULL, NULL, 1), +(49, 12, 1, 30, '2024-03-11 09:10:58', '2024-03-11 09:10:58', 1, NULL, NULL, NULL, NULL, 1), +(50, 12, 2, 30, '2024-03-11 09:12:14', '2024-03-11 09:12:14', 2, NULL, NULL, NULL, NULL, 1), +(51, 12, 3, 30, '2024-03-11 09:13:58', '2024-03-11 09:13:58', 3, NULL, NULL, NULL, NULL, 1), +(52, 12, 4, 30, '2024-03-11 09:16:40', '2024-03-11 09:16:40', 4, NULL, NULL, NULL, NULL, 1), +(53, 12, 5, 30, '2024-03-11 09:17:53', '2024-03-11 09:17:53', 5, NULL, NULL, NULL, NULL, 1), +(54, 13, 1, 30, '2024-03-11 09:21:58', '2024-03-11 09:21:58', 1, NULL, NULL, NULL, NULL, 1), +(55, 13, 2, 30, '2024-03-11 09:24:03', '2024-03-11 09:24:03', 2, NULL, NULL, NULL, NULL, 1), +(56, 13, 3, 30, '2024-03-11 09:25:40', '2024-03-11 09:25:40', 3, NULL, NULL, NULL, NULL, 1), +(57, 13, 4, 30, '2024-03-11 09:29:23', '2024-03-11 09:29:23', 4, NULL, NULL, NULL, NULL, 1), +(58, 13, 5, 30, '2024-03-11 09:31:11', '2024-03-11 09:31:11', 5, NULL, NULL, NULL, NULL, 1), +(59, 14, 1, 30, '2024-03-11 09:41:17', '2024-03-11 09:41:17', 1, NULL, NULL, NULL, NULL, 1), +(60, 14, 2, 30, '2024-03-11 09:42:57', '2024-03-11 09:42:57', 2, NULL, NULL, NULL, NULL, 1), +(61, 14, 3, 30, '2024-03-11 09:44:21', '2024-03-11 09:44:21', 3, NULL, NULL, NULL, NULL, 1), +(62, 14, 4, 30, '2024-03-11 09:46:24', '2024-03-11 09:46:24', 4, NULL, NULL, NULL, NULL, 1), +(63, 14, 5, 30, '2024-03-11 09:47:53', '2024-03-11 09:47:53', 5, NULL, NULL, NULL, NULL, 1), +(64, 15, 1, 30, '2024-03-11 09:56:03', '2024-03-11 09:56:03', 1, NULL, NULL, NULL, NULL, 1), +(65, 15, 2, 30, '2024-03-11 09:57:19', '2024-03-11 09:57:19', 2, NULL, NULL, NULL, NULL, 1), +(66, 15, 3, 30, '2024-03-11 09:59:36', '2024-03-11 09:59:36', 3, NULL, NULL, NULL, NULL, 1), +(67, 15, 4, 30, '2024-03-11 10:01:02', '2024-03-11 10:01:02', 4, NULL, NULL, NULL, NULL, 1), +(68, 15, 5, 30, '2024-03-11 10:02:27', '2024-03-11 10:02:27', 5, NULL, NULL, NULL, NULL, 1), +(69, 16, 1, 30, '2024-03-11 10:15:01', '2024-03-11 10:15:01', 1, NULL, NULL, NULL, NULL, 1), +(70, 16, 2, 30, '2024-03-11 10:16:28', '2024-03-11 10:16:28', 2, NULL, NULL, NULL, NULL, 1), +(71, 16, 3, 30, '2024-03-11 10:17:54', '2024-03-11 10:17:54', 3, NULL, NULL, NULL, NULL, 1), +(72, 16, 4, 30, '2024-03-11 10:19:20', '2024-03-11 10:19:20', 4, NULL, NULL, NULL, NULL, 1), +(73, 16, 5, 30, '2024-03-11 10:20:37', '2024-03-11 10:20:37', 5, NULL, NULL, NULL, NULL, 1), +(74, 17, 1, 30, '2024-03-11 10:24:14', '2024-03-11 10:24:14', 1, NULL, NULL, NULL, NULL, 1), +(75, 17, 2, 30, '2024-03-11 10:25:43', '2024-03-11 10:25:43', 2, NULL, NULL, NULL, NULL, 1), +(76, 17, 3, 30, '2024-03-11 10:26:52', '2024-03-11 10:26:52', 3, NULL, NULL, NULL, NULL, 1), +(77, 17, 4, 30, '2024-03-11 10:28:13', '2024-03-11 10:28:13', 4, NULL, NULL, NULL, NULL, 1), +(78, 17, 5, 30, '2024-03-11 10:30:06', '2024-03-11 10:30:06', 5, NULL, NULL, NULL, NULL, 1), +(79, 10, 6, 30, '2024-03-24 00:15:22', '2024-03-24 00:15:22', 6, NULL, NULL, NULL, NULL, 2), +(80, 10, 7, 30, '2024-03-24 00:18:32', '2024-03-24 00:18:32', 7, NULL, NULL, NULL, NULL, 2), +(81, 10, 8, 30, '2024-03-24 00:22:38', '2024-03-24 00:22:38', 8, NULL, NULL, NULL, NULL, 2), +(82, 10, 9, 30, '2024-03-24 00:25:24', '2024-03-24 00:25:24', 9, NULL, NULL, NULL, NULL, 2), +(83, 10, 10, 30, '2024-03-24 00:28:14', '2024-03-24 00:28:14', 10, NULL, NULL, NULL, NULL, 2), +(84, 10, 11, 30, '2024-03-24 00:32:59', '2024-03-24 00:32:59', 11, NULL, NULL, NULL, NULL, 3), +(85, 10, 12, 30, '2024-03-24 00:35:21', '2024-03-24 00:35:21', 12, NULL, NULL, NULL, NULL, 3), +(86, 10, 13, 30, '2024-03-24 00:39:44', '2024-03-24 00:39:44', 13, NULL, NULL, NULL, NULL, 3), +(87, 19, 1, 30, '2024-03-24 00:53:54', '2024-03-24 00:53:54', 1, NULL, NULL, NULL, NULL, 1), +(88, 19, 2, 30, '2024-03-24 00:55:38', '2024-03-24 00:55:38', 2, NULL, NULL, NULL, NULL, 1), +(89, 19, 3, 30, '2024-03-24 00:56:57', '2024-03-24 00:56:57', 3, NULL, NULL, NULL, NULL, 1), +(90, 19, 4, 30, '2024-03-24 00:58:22', '2024-03-24 00:58:22', 4, NULL, NULL, NULL, NULL, 1), +(91, 19, 5, 30, '2024-03-24 00:59:38', '2024-03-24 00:59:38', 5, NULL, NULL, NULL, NULL, 1), +(92, 19, 6, 30, '2024-03-24 01:02:05', '2024-03-24 01:02:05', 6, NULL, NULL, NULL, NULL, 2), +(93, 19, 7, 30, '2024-03-24 01:03:46', '2024-03-24 01:03:46', 7, NULL, NULL, NULL, NULL, 2), +(94, 19, 8, 30, '2024-03-24 01:04:58', '2024-03-24 01:04:58', 8, NULL, NULL, NULL, NULL, 2), +(95, 19, 9, 30, '2024-03-24 01:06:27', '2024-03-24 01:06:27', 9, NULL, NULL, NULL, NULL, 2), +(96, 19, 10, 30, '2024-03-24 01:08:03', '2024-03-24 01:08:03', 10, NULL, NULL, NULL, NULL, 2), +(97, 19, 11, 30, '2024-03-24 01:10:03', '2024-03-24 01:10:03', 11, NULL, NULL, NULL, NULL, 3), +(98, 19, 12, 30, '2024-03-24 01:11:28', '2024-03-24 01:11:28', 12, NULL, NULL, NULL, NULL, 3), +(99, 19, 13, 30, '2024-03-24 01:13:03', '2024-03-24 01:13:03', 13, NULL, NULL, NULL, NULL, 3), +(100, 12, 6, 30, '2024-03-24 01:17:06', '2024-03-24 01:17:06', 6, NULL, NULL, NULL, NULL, 2), +(101, 12, 7, 30, '2024-03-24 01:18:39', '2024-03-24 01:18:39', 7, NULL, NULL, NULL, NULL, 2), +(102, 12, 8, 30, '2024-03-24 01:22:33', '2024-03-24 01:22:33', 8, NULL, NULL, NULL, NULL, 2), +(103, 12, 9, 30, '2024-03-24 01:23:59', '2024-03-24 01:23:59', 9, NULL, NULL, NULL, NULL, 2), +(104, 12, 10, 30, '2024-03-24 01:25:37', '2024-03-24 01:25:37', 10, NULL, NULL, NULL, NULL, 2), +(105, 12, 11, 30, '2024-03-24 01:26:52', '2024-03-24 01:26:52', 11, NULL, NULL, NULL, NULL, 3), +(106, 12, 12, 30, '2024-03-24 01:28:15', '2024-03-24 01:28:15', 12, NULL, NULL, NULL, NULL, 3), +(107, 12, 13, 30, '2024-03-24 01:29:45', '2024-03-24 01:29:45', 13, NULL, NULL, NULL, NULL, 3), +(108, 13, 6, 30, '2024-03-24 01:32:37', '2024-03-24 01:32:37', 6, NULL, NULL, NULL, NULL, 2), +(109, 13, 7, 30, '2024-03-24 01:34:07', '2024-03-24 01:34:07', 7, NULL, NULL, NULL, NULL, 2), +(110, 13, 8, 30, '2024-03-24 01:35:19', '2024-03-24 01:35:19', 8, NULL, NULL, NULL, NULL, 2), +(111, 13, 9, 30, '2024-03-24 01:36:41', '2024-03-24 01:36:41', 9, NULL, NULL, NULL, NULL, 2), +(112, 13, 10, 30, '2024-03-24 01:38:28', '2024-03-24 01:38:28', 10, NULL, NULL, NULL, NULL, 2), +(113, 13, 11, 30, '2024-03-24 01:39:38', '2024-03-24 01:39:38', 11, NULL, NULL, NULL, NULL, 3), +(114, 13, 12, 30, '2024-03-24 01:40:38', '2024-03-24 01:40:38', 12, NULL, NULL, NULL, NULL, 3), +(115, 13, 13, 30, '2024-03-24 01:41:42', '2024-03-24 01:41:42', 13, NULL, NULL, NULL, NULL, 3), +(116, 21, 1, 30, '2024-03-24 02:56:05', '2024-03-24 02:56:05', 1, NULL, NULL, NULL, NULL, 1), +(120, 21, 2, 30, '2024-03-28 08:33:06', '2024-03-28 08:33:06', 2, NULL, NULL, NULL, NULL, 1), +(121, 21, 3, 30, '2024-03-28 08:34:30', '2024-03-28 08:34:30', 3, NULL, NULL, NULL, NULL, 1), +(122, 21, 4, 30, '2024-03-28 08:36:26', '2024-03-28 08:36:26', 4, NULL, NULL, NULL, NULL, 1), +(123, 21, 5, 30, '2024-03-28 08:37:46', '2024-03-28 08:37:46', 5, NULL, NULL, NULL, NULL, 1), +(124, 21, 6, 30, '2024-03-28 08:39:07', '2024-03-28 08:39:07', 6, NULL, NULL, NULL, NULL, 2), +(125, 21, 7, 30, '2024-03-28 08:40:18', '2024-03-28 08:40:18', 7, NULL, NULL, NULL, NULL, 2), +(126, 21, 8, 30, '2024-03-28 08:41:32', '2024-03-28 08:41:32', 8, NULL, NULL, NULL, NULL, 2), +(127, 21, 9, 30, '2024-03-28 08:42:42', '2024-03-28 08:42:42', 9, NULL, NULL, NULL, NULL, 2), +(128, 21, 10, 30, '2024-03-28 08:44:08', '2024-03-28 08:44:08', 10, NULL, NULL, NULL, NULL, 2), +(129, 21, 11, 30, '2024-03-28 08:45:35', '2024-03-28 08:45:35', 11, NULL, NULL, NULL, NULL, 3), +(130, 21, 12, 30, '2024-03-28 08:46:44', '2024-03-28 08:46:44', 12, NULL, NULL, NULL, NULL, 3), +(131, 21, 13, 30, '2024-03-28 08:47:46', '2024-03-28 08:47:46', 13, NULL, NULL, NULL, NULL, 3), +(132, 22, 1, 30, '2024-03-28 08:59:54', '2024-03-28 08:59:54', 1, NULL, NULL, NULL, NULL, 1), +(133, 22, 2, 30, '2024-03-28 09:04:15', '2024-03-28 09:04:15', 2, NULL, NULL, NULL, NULL, 1), +(134, 22, 3, 30, '2024-03-28 09:05:14', '2024-03-28 09:05:14', 3, NULL, NULL, NULL, NULL, 1), +(135, 22, 4, 30, '2024-03-28 09:06:26', '2024-03-28 09:06:26', 4, NULL, NULL, NULL, NULL, 1), +(136, 22, 5, 30, '2024-03-28 09:08:03', '2024-03-28 09:08:03', 5, NULL, NULL, NULL, NULL, 1), +(137, 22, 6, 30, '2024-03-28 09:12:51', '2024-03-28 09:12:51', 6, NULL, NULL, NULL, NULL, 2), +(138, 22, 7, 30, '2024-03-28 09:14:01', '2024-03-28 09:14:01', 7, NULL, NULL, NULL, NULL, 2), +(139, 22, 8, 30, '2024-03-28 09:15:06', '2024-03-28 09:15:06', 8, NULL, NULL, NULL, NULL, 2), +(140, 22, 9, 30, '2024-03-28 09:16:23', '2024-03-28 09:16:23', 9, NULL, NULL, NULL, NULL, 2), +(141, 22, 10, 30, '2024-03-28 09:17:39', '2024-03-28 09:17:39', 10, NULL, NULL, NULL, NULL, 2), +(142, 22, 11, 30, '2024-03-28 09:18:44', '2024-03-28 09:18:44', 11, NULL, NULL, NULL, NULL, 3), +(143, 22, 12, 30, '2024-03-28 09:19:58', '2024-03-28 09:19:58', 12, NULL, NULL, NULL, NULL, 3), +(144, 22, 13, 30, '2024-03-28 09:21:05', '2024-03-28 09:21:05', 13, NULL, NULL, NULL, NULL, 3), +(145, 23, 1, 30, '2024-04-01 04:01:45', '2024-04-01 04:01:45', 1, NULL, NULL, NULL, NULL, 1), +(146, 23, 2, 30, '2024-04-01 04:03:04', '2024-04-01 04:03:04', 2, NULL, NULL, NULL, NULL, 1), +(147, 23, 3, 30, '2024-04-01 04:04:21', '2024-04-01 04:04:21', 3, NULL, NULL, NULL, NULL, 1), +(148, 23, 4, 30, '2024-04-01 04:06:28', '2024-04-01 04:06:28', 4, NULL, NULL, NULL, NULL, 1), +(149, 23, 5, 30, '2024-04-01 04:08:59', '2024-04-01 04:08:59', 5, NULL, NULL, NULL, NULL, 1), +(150, 23, 6, 30, '2024-04-01 04:10:29', '2024-04-01 04:10:29', 6, NULL, NULL, NULL, NULL, 2), +(151, 23, 7, 30, '2024-04-01 04:11:58', '2024-04-01 04:11:58', 7, NULL, NULL, NULL, NULL, 2), +(152, 23, 8, 30, '2024-04-01 04:13:15', '2024-04-01 04:13:15', 8, NULL, NULL, NULL, NULL, 2), +(153, 23, 9, 30, '2024-04-01 04:16:45', '2024-04-01 04:16:45', 9, NULL, NULL, NULL, NULL, 2), +(154, 23, 10, 30, '2024-04-01 04:18:15', '2024-04-01 04:18:15', 10, NULL, NULL, NULL, NULL, 2), +(155, 23, 11, 30, '2024-04-01 04:20:31', '2024-04-01 04:20:31', 11, NULL, NULL, NULL, NULL, 3), +(156, 23, 12, 30, '2024-04-01 04:23:28', '2024-04-01 04:23:28', 12, NULL, NULL, NULL, NULL, 3), +(157, 23, 13, 30, '2024-04-01 04:25:42', '2024-04-01 04:25:42', 13, NULL, NULL, NULL, NULL, 3), +(158, 24, 1, 30, '2024-04-01 04:39:19', '2024-04-01 04:39:19', 1, NULL, NULL, NULL, NULL, 1), +(159, 24, 2, 30, '2024-04-01 04:41:02', '2024-04-01 04:41:02', 2, NULL, NULL, NULL, NULL, 1), +(160, 24, 3, 30, '2024-04-01 04:42:32', '2024-04-01 04:42:32', 3, NULL, NULL, NULL, NULL, 1), +(161, 24, 4, 30, '2024-04-01 04:44:02', '2024-04-01 04:44:02', 4, NULL, NULL, NULL, NULL, 1), +(162, 24, 5, 30, '2024-04-01 04:45:29', '2024-04-01 04:45:29', 5, NULL, NULL, NULL, NULL, 1), +(163, 24, 6, 30, '2024-04-01 04:46:41', '2024-04-01 04:46:41', 6, NULL, NULL, NULL, NULL, 2), +(164, 24, 7, 30, '2024-04-01 04:47:59', '2024-04-01 04:47:59', 7, NULL, NULL, NULL, NULL, 2), +(165, 24, 8, 30, '2024-04-01 04:50:58', '2024-04-01 04:50:58', 8, NULL, NULL, NULL, NULL, 2), +(166, 24, 9, 30, '2024-04-01 04:52:34', '2024-04-01 04:52:34', 9, NULL, NULL, NULL, NULL, 2), +(167, 24, 10, 30, '2024-04-01 04:54:11', '2024-04-01 04:54:11', 10, NULL, NULL, NULL, NULL, 2), +(168, 24, 11, 30, '2024-04-01 04:56:49', '2024-04-01 04:56:49', 11, NULL, NULL, NULL, NULL, 3), +(169, 24, 12, 30, '2024-04-01 05:00:15', '2024-04-01 05:00:15', 12, NULL, NULL, NULL, NULL, 3), +(170, 24, 13, 30, '2024-04-01 05:01:30', '2024-04-01 05:01:30', 13, NULL, NULL, NULL, NULL, 3), +(171, 6, 7, 30, '2024-04-07 10:37:45', '2024-04-07 10:37:45', 7, NULL, NULL, NULL, NULL, 2), +(172, 25, 1, 30, '2024-04-16 17:15:45', '2024-04-16 17:15:45', 1, NULL, NULL, NULL, NULL, 1), +(173, 25, 2, 30, '2024-04-16 17:17:42', '2024-04-16 17:17:42', 2, NULL, NULL, NULL, NULL, 1), +(174, 25, 3, 30, '2024-04-16 17:47:13', '2024-04-16 17:47:13', 3, NULL, NULL, NULL, NULL, 1), +(175, 25, 4, 30, '2024-04-23 18:55:07', '2024-04-23 18:55:07', 4, NULL, NULL, NULL, NULL, 1), +(176, 26, 1, 30, '2024-04-26 13:27:52', '2024-04-26 13:27:52', 1, NULL, NULL, NULL, NULL, 1), +(177, 26, 2, 30, '2024-04-26 13:49:38', '2024-04-26 13:49:38', 2, NULL, NULL, NULL, NULL, 1), +(178, 26, 3, 30, '2024-04-26 20:45:25', '2024-04-26 20:45:25', 3, NULL, NULL, NULL, NULL, 1), +(179, 26, 4, 30, '2024-04-26 21:05:21', '2024-04-26 21:05:21', 4, NULL, NULL, NULL, NULL, 1), +(180, 26, 5, 30, '2024-04-26 21:19:22', '2024-04-26 21:19:22', 5, NULL, NULL, NULL, NULL, 1), +(181, 26, 6, 30, '2024-04-26 21:34:42', '2024-04-26 21:34:42', 6, NULL, NULL, NULL, NULL, 2), +(182, 26, 7, 30, '2024-04-26 21:49:25', '2024-04-26 21:49:25', 7, NULL, NULL, NULL, NULL, 2), +(183, 26, 8, 30, '2024-04-26 23:31:57', '2024-04-26 23:31:57', 8, NULL, NULL, NULL, NULL, 2), +(184, 26, 9, 30, '2024-04-26 23:53:24', '2024-04-26 23:53:24', 9, NULL, NULL, NULL, NULL, 2), +(185, 26, 10, 30, '2024-04-27 00:25:17', '2024-04-27 00:25:17', 10, NULL, NULL, NULL, NULL, 2), +(186, 26, 11, 30, '2024-04-27 00:41:20', '2024-04-27 00:41:20', 11, NULL, NULL, NULL, NULL, 3), +(187, 26, 12, 30, '2024-04-27 00:59:38', '2024-04-27 00:59:38', 12, NULL, NULL, NULL, NULL, 3), +(188, 26, 13, 30, '2024-04-27 01:18:30', '2024-04-27 01:18:30', 13, NULL, NULL, NULL, NULL, 3), +(189, 27, 1, 30, '2024-04-27 05:49:46', '2024-04-27 05:49:46', 1, NULL, NULL, NULL, NULL, 1), +(190, 27, 2, 30, '2024-04-27 05:59:07', '2024-04-27 05:59:07', 2, NULL, NULL, NULL, NULL, 1), +(191, 27, 3, 30, '2024-04-27 06:08:16', '2024-04-27 06:08:16', 3, NULL, NULL, NULL, NULL, 1), +(192, 27, 4, 30, '2024-04-27 06:18:53', '2024-04-27 06:18:53', 4, NULL, NULL, NULL, NULL, 1), +(193, 27, 5, 30, '2024-04-27 06:27:43', '2024-04-27 06:27:43', 5, NULL, NULL, NULL, NULL, 1), +(194, 27, 6, 30, '2024-04-27 06:36:03', '2024-04-27 06:36:03', 6, NULL, NULL, NULL, NULL, 2), +(195, 27, 7, 30, '2024-04-27 06:46:48', '2024-04-27 06:46:48', 7, NULL, NULL, NULL, NULL, 2), +(196, 27, 8, 30, '2024-04-27 06:58:37', '2024-04-27 06:58:37', 8, NULL, NULL, NULL, NULL, 2), +(197, 27, 9, 30, '2024-04-27 07:08:10', '2024-04-27 07:08:10', 9, NULL, NULL, NULL, NULL, 2), +(198, 27, 10, 30, '2024-04-27 07:20:20', '2024-04-27 07:20:20', 10, NULL, NULL, NULL, NULL, 2), +(199, 27, 11, 30, '2024-04-27 07:29:18', '2024-04-27 07:29:18', 11, NULL, NULL, NULL, NULL, 3), +(200, 27, 12, 30, '2024-04-27 07:39:28', '2024-04-27 07:39:28', 12, NULL, NULL, NULL, NULL, 3), +(201, 27, 13, 30, '2024-04-27 07:47:40', '2024-04-27 07:47:40', 13, NULL, NULL, NULL, NULL, 3), +(202, 28, 1, 30, '2024-04-27 13:40:26', '2024-04-27 13:40:26', 1, NULL, NULL, NULL, NULL, 1), +(203, 28, 2, 30, '2024-04-27 13:49:06', '2024-04-27 13:49:06', 2, NULL, NULL, NULL, NULL, 1), +(204, 28, 3, 30, '2024-04-27 13:57:07', '2024-04-27 13:57:07', 3, NULL, NULL, NULL, NULL, 1), +(205, 28, 4, 30, '2024-04-27 14:05:18', '2024-04-27 14:05:18', 4, NULL, NULL, NULL, NULL, 1), +(206, 28, 5, 30, '2024-04-27 14:13:33', '2024-04-27 14:13:33', 5, NULL, NULL, NULL, NULL, 1), +(207, 28, 6, 30, '2024-04-27 14:21:37', '2024-04-27 14:21:37', 6, NULL, NULL, NULL, NULL, 2), +(208, 28, 7, 30, '2024-04-27 14:29:52', '2024-04-27 14:29:52', 7, NULL, NULL, NULL, NULL, 2), +(209, 28, 8, 30, '2024-04-27 14:37:12', '2024-04-27 14:37:12', 8, NULL, NULL, NULL, NULL, 2), +(210, 28, 9, 30, '2024-04-27 14:46:30', '2024-04-27 14:46:30', 9, NULL, NULL, NULL, NULL, 2), +(211, 28, 10, 30, '2024-04-27 14:54:20', '2024-04-27 14:54:20', 10, NULL, NULL, NULL, NULL, 2), +(212, 28, 11, 30, '2024-04-27 15:01:59', '2024-04-27 15:01:59', 11, NULL, NULL, NULL, NULL, 3), +(213, 28, 12, 30, '2024-04-27 15:09:07', '2024-04-27 15:09:07', 12, NULL, NULL, NULL, NULL, 3), +(214, 28, 13, 30, '2024-04-27 15:16:34', '2024-04-27 15:16:34', 13, NULL, NULL, NULL, NULL, 3), +(215, 29, 1, 30, '2024-04-27 19:24:16', '2024-04-27 19:24:16', 1, NULL, NULL, NULL, NULL, 1), +(216, 29, 2, 30, '2024-04-27 19:35:46', '2024-04-27 19:35:46', 2, NULL, NULL, NULL, NULL, 1), +(217, 29, 3, 30, '2024-04-27 19:45:43', '2024-04-27 19:45:43', 3, NULL, NULL, NULL, NULL, 1), +(218, 29, 4, 30, '2024-04-27 19:53:17', '2024-04-27 19:53:17', 4, NULL, NULL, NULL, NULL, 1), +(219, 29, 5, 30, '2024-04-27 20:01:35', '2024-04-27 20:01:35', 5, NULL, NULL, NULL, NULL, 1), +(220, 29, 6, 30, '2024-04-27 20:10:09', '2024-04-27 20:10:09', 6, NULL, NULL, NULL, NULL, 2), +(221, 29, 7, 30, '2024-04-27 20:18:46', '2024-04-27 20:18:46', 7, NULL, NULL, NULL, NULL, 2), +(222, 29, 8, 30, '2024-04-27 20:27:27', '2024-04-27 20:27:27', 8, NULL, NULL, NULL, NULL, 2), +(223, 29, 9, 30, '2024-04-27 20:36:58', '2024-04-27 20:36:58', 9, NULL, NULL, NULL, NULL, 2), +(224, 29, 10, 30, '2024-04-27 20:44:55', '2024-04-27 20:44:55', 10, NULL, NULL, NULL, NULL, 2), +(225, 29, 11, 30, '2024-04-27 20:54:42', '2024-04-27 20:54:42', 11, NULL, NULL, NULL, NULL, 3), +(229, 29, 12, 30, '2024-04-27 21:07:55', '2024-04-27 21:07:55', 12, NULL, NULL, NULL, NULL, 3), +(230, 29, 13, 30, '2024-04-27 21:16:33', '2024-04-27 21:16:33', 13, NULL, NULL, NULL, NULL, 3), +(231, 30, 1, 30, '2024-04-28 05:54:12', '2024-04-28 05:54:12', 1, NULL, NULL, NULL, NULL, 1), +(232, 30, 2, 30, '2024-04-28 06:08:15', '2024-04-28 06:08:15', 2, NULL, NULL, NULL, NULL, 1), +(233, 30, 3, 30, '2024-04-28 06:15:50', '2024-04-28 06:15:50', 3, NULL, NULL, NULL, NULL, 1), +(234, 30, 4, 30, '2024-04-28 06:24:12', '2024-04-28 06:24:12', 4, NULL, NULL, NULL, NULL, 1), +(235, 30, 5, 30, '2024-04-28 06:31:57', '2024-04-28 06:31:57', 5, NULL, NULL, NULL, NULL, 1), +(236, 30, 6, 30, '2024-04-28 06:42:14', '2024-04-28 06:42:14', 6, NULL, NULL, NULL, NULL, 2), +(237, 30, 7, 30, '2024-04-28 06:50:15', '2024-04-28 06:50:15', 7, NULL, NULL, NULL, NULL, 2), +(238, 30, 8, 30, '2024-04-28 07:02:39', '2024-04-28 07:02:39', 8, NULL, NULL, NULL, NULL, 2), +(239, 30, 9, 30, '2024-04-28 07:11:30', '2024-04-28 07:11:30', 9, NULL, NULL, NULL, NULL, 2), +(240, 30, 10, 30, '2024-04-28 07:23:44', '2024-04-28 07:23:44', 10, NULL, NULL, NULL, NULL, 2), +(241, 30, 11, 30, '2024-04-28 07:33:50', '2024-04-28 07:33:50', 11, NULL, NULL, NULL, NULL, 3), +(242, 30, 12, 30, '2024-04-28 07:41:56', '2024-04-28 07:41:56', 12, NULL, NULL, NULL, NULL, 3), +(243, 30, 13, 30, '2024-04-28 07:52:16', '2024-04-28 07:52:16', 13, NULL, NULL, NULL, NULL, 3), +(244, 31, 1, 30, '2024-04-28 13:56:36', '2024-04-28 13:56:36', 1, NULL, NULL, NULL, NULL, 1), +(245, 31, 2, 30, '2024-04-28 14:03:05', '2024-04-28 14:03:05', 2, NULL, NULL, NULL, NULL, 1), +(246, 31, 3, 30, '2024-04-28 14:06:42', '2024-04-28 14:06:42', 3, NULL, NULL, NULL, NULL, 1), +(247, 31, 4, 30, '2024-04-28 14:10:42', '2024-04-28 14:10:42', 4, NULL, NULL, NULL, NULL, 1), +(248, 31, 5, 30, '2024-04-28 14:14:10', '2024-04-28 14:14:10', 5, NULL, NULL, NULL, NULL, 1), +(249, 31, 6, 30, '2024-04-28 14:17:19', '2024-04-28 14:17:19', 6, NULL, NULL, NULL, NULL, 2), +(250, 31, 7, 30, '2024-04-28 14:20:00', '2024-04-28 14:20:00', 7, NULL, NULL, NULL, NULL, 2), +(251, 31, 8, 30, '2024-04-28 14:23:41', '2024-04-28 14:23:41', 8, NULL, NULL, NULL, NULL, 2), +(252, 31, 9, 30, '2024-04-28 14:27:24', '2024-04-28 14:27:24', 9, NULL, NULL, NULL, NULL, 2), +(253, 31, 10, 30, '2024-04-28 14:30:31', '2024-04-28 14:30:31', 10, NULL, NULL, NULL, NULL, 2), +(254, 31, 11, 30, '2024-04-28 14:32:57', '2024-04-28 14:32:57', 11, NULL, NULL, NULL, NULL, 3), +(255, 31, 12, 30, '2024-04-28 14:35:43', '2024-04-28 14:35:43', 12, NULL, NULL, NULL, NULL, 3), +(256, 31, 13, 30, '2024-04-28 14:38:08', '2024-04-28 14:38:08', 13, NULL, NULL, NULL, NULL, 3), +(257, 32, 1, 30, '2024-05-01 19:21:50', '2024-05-01 19:21:50', 1, NULL, NULL, NULL, NULL, 1), +(258, 32, 2, 30, '2024-05-01 19:43:41', '2024-05-01 19:43:41', 2, NULL, NULL, NULL, NULL, 1), +(259, 32, 3, 30, '2024-05-01 19:56:23', '2024-05-01 19:56:23', 3, NULL, NULL, NULL, NULL, 1), +(260, 33, 1, 30, '2024-05-01 20:41:11', '2024-05-01 20:41:11', 1, NULL, NULL, NULL, NULL, 1), +(261, 34, 1, 30, '2024-05-01 21:30:43', '2024-05-01 21:30:43', 1, NULL, NULL, NULL, NULL, 1), +(262, 34, 2, 30, '2024-05-01 21:42:24', '2024-05-01 21:42:24', 2, NULL, NULL, NULL, NULL, 1), +(263, 34, 3, 30, '2024-05-01 22:35:42', '2024-05-01 22:35:42', 3, NULL, NULL, NULL, NULL, 1), +(264, 34, 4, 30, '2024-05-01 23:28:08', '2024-05-01 23:28:08', 4, NULL, NULL, NULL, NULL, 1), +(265, 32, 4, 30, '2024-05-02 15:11:42', '2024-05-02 15:11:42', 4, NULL, NULL, NULL, NULL, 1), +(266, 32, 5, 30, '2024-05-02 15:20:30', '2024-05-02 15:20:30', 5, NULL, NULL, NULL, NULL, 1), +(267, 32, 6, 30, '2024-05-02 15:29:40', '2024-05-02 15:29:40', 6, NULL, NULL, NULL, NULL, 2), +(268, 32, 7, 30, '2024-05-02 15:38:47', '2024-05-02 15:38:47', 7, NULL, NULL, NULL, NULL, 2), +(269, 32, 8, 30, '2024-05-02 15:46:59', '2024-05-02 15:46:59', 8, NULL, NULL, NULL, NULL, 2), +(270, 32, 9, 30, '2024-05-02 15:56:14', '2024-05-02 15:56:14', 9, NULL, NULL, NULL, NULL, 2), +(271, 32, 10, 30, '2024-05-02 16:04:21', '2024-05-02 16:04:21', 10, NULL, NULL, NULL, NULL, 2), +(272, 32, 11, 30, '2024-05-02 16:12:46', '2024-05-02 16:12:46', 11, NULL, NULL, NULL, NULL, 3), +(273, 32, 12, 30, '2024-05-02 16:21:28', '2024-05-02 16:21:28', 12, NULL, NULL, NULL, NULL, 3), +(274, 32, 13, 30, '2024-05-02 16:29:56', '2024-05-02 16:29:56', 13, NULL, NULL, NULL, NULL, 3), +(275, 35, 1, 30, '2024-05-02 17:20:55', '2024-05-02 17:20:55', 1, NULL, NULL, NULL, NULL, 1), +(276, 35, 2, 30, '2024-05-02 17:29:58', '2024-05-02 17:29:58', 2, NULL, NULL, NULL, NULL, 1), +(277, 35, 3, 30, '2024-05-02 17:38:13', '2024-05-02 17:38:13', 3, NULL, NULL, NULL, NULL, 1), +(278, 35, 4, 30, '2024-05-02 17:46:33', '2024-05-02 17:46:33', 4, NULL, NULL, NULL, NULL, 1), +(279, 35, 5, 30, '2024-05-02 17:56:36', '2024-05-02 17:56:36', 5, NULL, NULL, NULL, NULL, 1), +(280, 35, 6, 30, '2024-05-02 18:03:56', '2024-05-02 18:03:56', 6, NULL, NULL, NULL, NULL, 2), +(281, 35, 7, 30, '2024-05-02 18:20:28', '2024-05-02 18:20:28', 7, NULL, NULL, NULL, NULL, 2), +(282, 35, 8, 30, '2024-05-02 18:43:25', '2024-05-02 18:43:25', 8, NULL, NULL, NULL, NULL, 2), +(283, 35, 9, 30, '2024-05-02 18:54:59', '2024-05-02 18:54:59', 9, NULL, NULL, NULL, NULL, 2), +(284, 35, 10, 30, '2024-05-02 19:16:53', '2024-05-02 19:16:53', 10, NULL, NULL, NULL, NULL, 2), +(285, 35, 11, 30, '2024-05-02 19:27:00', '2024-05-02 19:27:00', 11, NULL, NULL, NULL, NULL, 3), +(286, 35, 12, 30, '2024-05-02 19:41:07', '2024-05-02 19:41:07', 12, NULL, NULL, NULL, NULL, 3), +(287, 35, 13, 30, '2024-05-02 19:50:10', '2024-05-02 19:50:10', 13, NULL, NULL, NULL, NULL, 3), +(288, 36, 1, 30, '2024-05-03 03:20:50', '2024-05-03 03:20:50', 1, NULL, NULL, NULL, NULL, 1), +(289, 36, 2, 30, '2024-05-03 03:29:41', '2024-05-03 03:29:41', 2, NULL, NULL, NULL, NULL, 1), +(290, 36, 3, 30, '2024-05-03 03:38:50', '2024-05-03 03:38:50', 3, NULL, NULL, NULL, NULL, 1), +(291, 36, 4, 30, '2024-05-03 03:54:45', '2024-05-03 03:54:45', 4, NULL, NULL, NULL, NULL, 1), +(292, 36, 5, 30, '2024-05-03 04:04:39', '2024-05-03 04:04:39', 5, NULL, NULL, NULL, NULL, 1), +(293, 36, 6, 30, '2024-05-03 04:13:36', '2024-05-03 04:13:36', 6, NULL, NULL, NULL, NULL, 2), +(294, 36, 7, 30, '2024-05-03 04:31:24', '2024-05-03 04:31:24', 7, NULL, NULL, NULL, NULL, 2), +(295, 36, 8, 30, '2024-05-03 04:50:48', '2024-05-03 04:50:48', 8, NULL, NULL, NULL, NULL, 2), +(296, 36, 9, 30, '2024-05-03 05:01:30', '2024-05-03 05:01:30', 9, NULL, NULL, NULL, NULL, 2), +(297, 36, 10, 30, '2024-05-03 05:24:23', '2024-05-03 05:24:23', 10, NULL, NULL, NULL, NULL, 2), +(298, 36, 11, 30, '2024-05-03 05:43:44', '2024-05-03 05:43:44', 11, NULL, NULL, NULL, NULL, 3), +(299, 36, 12, 30, '2024-05-03 05:54:57', '2024-05-03 05:54:57', 12, NULL, NULL, NULL, NULL, 3), +(300, 36, 13, 30, '2024-05-03 06:04:58', '2024-05-03 06:04:58', 13, NULL, NULL, NULL, NULL, 3), +(301, 37, 1, 30, '2024-06-03 05:09:54', '2024-06-03 05:09:54', 1, NULL, NULL, NULL, NULL, 1), +(302, 37, 2, 30, '2024-06-03 05:31:36', '2024-06-03 05:31:36', 2, NULL, NULL, NULL, NULL, 1), +(303, 37, 3, 30, '2024-06-03 05:41:03', '2024-06-03 05:41:03', 3, NULL, NULL, NULL, NULL, 1), +(304, 37, 4, 30, '2024-06-03 05:50:28', '2024-06-03 05:50:28', 4, NULL, NULL, NULL, NULL, 1), +(305, 37, 5, 30, '2024-06-03 06:06:41', '2024-06-03 06:06:41', 5, NULL, NULL, NULL, NULL, 1), +(306, 37, 6, 30, '2024-06-03 06:24:19', '2024-06-03 06:24:19', 6, NULL, NULL, NULL, NULL, 2), +(307, 37, 7, 30, '2024-06-03 06:39:36', '2024-06-03 06:39:36', 7, NULL, NULL, NULL, NULL, 2), +(308, 37, 8, 30, '2024-06-03 07:01:21', '2024-06-03 07:01:21', 8, NULL, NULL, NULL, NULL, 2), +(309, 37, 9, 30, '2024-06-03 07:09:37', '2024-06-03 07:09:37', 9, NULL, NULL, NULL, NULL, 2), +(310, 37, 10, 30, '2024-06-03 07:25:08', '2024-06-03 07:25:08', 10, NULL, NULL, NULL, NULL, 2), +(311, 37, 11, 30, '2024-06-03 07:33:03', '2024-06-03 07:33:03', 11, NULL, NULL, NULL, NULL, 3), +(312, 37, 12, 30, '2024-06-03 07:40:56', '2024-06-03 07:40:56', 12, NULL, NULL, NULL, NULL, 3), +(313, 37, 13, 30, '2024-06-03 08:04:56', '2024-06-03 08:04:56', 13, NULL, NULL, NULL, NULL, 3), +(314, 39, 1, 30, '2024-06-10 01:56:00', '2024-06-10 01:56:00', 1, NULL, NULL, NULL, NULL, 1), +(315, 39, 2, 30, '2024-06-10 02:00:48', '2024-06-10 02:00:48', 2, NULL, NULL, NULL, NULL, 1), +(316, 39, 3, 30, '2024-06-10 02:06:07', '2024-06-10 02:06:07', 3, NULL, NULL, NULL, NULL, 1), +(317, 39, 4, 30, '2024-06-10 02:16:01', '2024-06-10 02:16:01', 4, NULL, NULL, NULL, NULL, 1), +(318, 39, 5, 30, '2024-06-10 02:26:51', '2024-06-10 02:26:51', 5, NULL, NULL, NULL, NULL, 1), +(319, 39, 6, 30, '2024-06-10 02:33:19', '2024-06-10 02:33:19', 6, NULL, NULL, NULL, NULL, 2), +(320, 39, 7, 30, '2024-06-10 02:36:52', '2024-06-10 02:36:52', 7, NULL, NULL, NULL, NULL, 2), +(321, 39, 8, 30, '2024-06-10 02:45:40', '2024-06-10 02:45:40', 8, NULL, NULL, NULL, NULL, 2), +(322, 39, 9, 30, '2024-06-10 02:53:08', '2024-06-10 02:53:08', 9, NULL, NULL, NULL, NULL, 2), +(323, 39, 10, 30, '2024-06-10 03:07:34', '2024-06-10 03:07:34', 10, NULL, NULL, NULL, NULL, 2), +(324, 40, 1, 30, '2024-06-10 03:14:12', '2024-06-10 03:14:12', 1, NULL, NULL, NULL, NULL, 1), +(325, 40, 2, 30, '2024-06-10 03:21:50', '2024-06-10 03:21:50', 2, NULL, NULL, NULL, NULL, 1), +(326, 40, 3, 30, '2024-06-10 03:28:51', '2024-06-10 03:28:51', 3, NULL, NULL, NULL, NULL, 1), +(327, 40, 4, 30, '2024-06-10 03:34:55', '2024-06-10 03:34:55', 4, NULL, NULL, NULL, NULL, 1), +(328, 40, 5, 30, '2024-06-10 03:41:45', '2024-06-10 03:41:45', 5, NULL, NULL, NULL, NULL, 1), +(329, 40, 6, 30, '2024-06-10 03:50:34', '2024-06-10 03:50:34', 6, NULL, NULL, NULL, NULL, 2), +(330, 41, 1, 30, '2024-06-10 03:59:51', '2024-06-10 03:59:51', 1, NULL, NULL, NULL, NULL, 1), +(331, 41, 2, 30, '2024-06-10 04:04:50', '2024-06-10 04:04:50', 2, NULL, NULL, NULL, NULL, 1), +(332, 41, 3, 30, '2024-06-10 04:11:51', '2024-06-10 04:11:51', 3, NULL, NULL, NULL, NULL, 1), +(333, 41, 4, 30, '2024-06-10 04:17:58', '2024-06-10 04:17:58', 4, NULL, NULL, NULL, NULL, 1), +(334, 41, 5, 30, '2024-06-10 04:27:48', '2024-06-10 04:27:48', 5, NULL, NULL, NULL, NULL, 1), +(335, 41, 6, 30, '2024-06-10 04:31:11', '2024-06-10 04:31:11', 6, NULL, NULL, NULL, NULL, 2), +(336, 41, 7, 30, '2024-06-10 04:34:56', '2024-06-10 04:34:56', 7, NULL, NULL, NULL, NULL, 2), +(337, 41, 8, 30, '2024-06-10 04:38:45', '2024-06-10 04:38:45', 8, NULL, NULL, NULL, NULL, 2), +(338, 41, 9, 30, '2024-06-10 04:42:50', '2024-06-10 04:42:50', 9, NULL, NULL, NULL, NULL, 2), +(339, 41, 10, 30, '2024-06-13 03:23:19', '2024-06-13 03:23:19', 10, NULL, NULL, NULL, NULL, 2), +(340, 41, 11, 30, '2024-06-13 03:41:28', '2024-06-13 03:41:28', 11, NULL, NULL, NULL, NULL, 3), +(341, 41, 12, 30, '2024-06-13 03:45:44', '2024-06-13 03:45:44', 12, NULL, NULL, NULL, NULL, 3), +(342, 41, 13, 30, '2024-06-13 03:51:15', '2024-06-13 03:51:15', 13, NULL, NULL, NULL, NULL, 3), +(343, 40, 7, 30, '2024-06-13 05:31:48', '2024-06-13 05:31:48', 7, NULL, NULL, NULL, NULL, 2), +(344, 40, 8, 30, '2024-06-13 05:37:38', '2024-06-13 05:37:38', 8, NULL, NULL, NULL, NULL, 2), +(345, 40, 9, 30, '2024-06-13 05:43:35', '2024-06-13 05:43:35', 9, NULL, NULL, NULL, NULL, 2), +(346, 40, 10, 30, '2024-06-13 05:47:03', '2024-06-13 05:47:03', 10, NULL, NULL, NULL, NULL, 2), +(347, 40, 11, 30, '2024-06-13 05:51:03', '2024-06-13 05:51:03', 11, NULL, NULL, NULL, NULL, 3), +(348, 40, 12, 30, '2024-06-13 05:54:00', '2024-06-13 05:54:00', 12, NULL, NULL, NULL, NULL, 3), +(349, 40, 13, 30, '2024-06-13 05:55:47', '2024-06-13 05:55:47', 13, NULL, NULL, NULL, NULL, 3), +(350, 42, 1, 30, '2024-06-22 05:46:55', '2024-06-22 05:46:55', 1, NULL, NULL, NULL, NULL, 1), +(351, 42, 2, 30, '2024-06-22 06:47:47', '2024-06-22 06:47:47', 2, NULL, NULL, NULL, NULL, 1), +(352, 43, 1, 30, '2024-06-23 07:49:39', '2024-06-23 07:49:39', 1, NULL, NULL, NULL, NULL, 1), +(353, 43, 2, 30, '2024-06-24 00:51:43', '2024-06-24 00:51:43', 2, NULL, NULL, NULL, NULL, 1), +(354, 44, 1, 30, '2024-06-24 11:40:41', '2024-06-24 11:40:41', 1, NULL, NULL, NULL, NULL, 1), +(355, 44, 2, 30, '2024-06-24 11:43:56', '2024-06-24 11:43:56', 2, NULL, NULL, NULL, NULL, 1), +(358, 43, 3, 30, '2024-06-25 03:25:03', '2024-06-25 03:25:03', 3, NULL, NULL, NULL, NULL, 1), +(359, 43, 4, 30, '2024-06-25 03:26:40', '2024-06-25 03:26:40', 4, NULL, NULL, NULL, NULL, 1), +(369, 43, 5, 30, '2024-06-30 11:19:41', '2024-06-30 11:19:41', 5, NULL, NULL, NULL, NULL, 1), +(370, 43, 6, 30, '2024-06-30 11:21:15', '2024-06-30 11:21:15', 6, NULL, NULL, NULL, NULL, 2), +(371, 45, 1, 30, '2024-06-30 11:23:52', '2024-06-30 11:23:52', 1, NULL, NULL, NULL, NULL, 1), +(372, 45, 2, 30, '2024-07-02 10:29:00', '2024-07-02 10:29:00', 2, NULL, NULL, NULL, NULL, 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `wondering_score` +-- + +CREATE TABLE `wondering_score` ( + `id` bigint UNSIGNED NOT NULL, + `user_id` bigint UNSIGNED NOT NULL, + `content_id` int UNSIGNED NOT NULL, + `score` int NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `wondering_score` +-- + +INSERT INTO `wondering_score` (`id`, `user_id`, `content_id`, `score`, `created_at`, `updated_at`) VALUES +(1, 2, 1, 10, '2023-06-01 07:07:42', '2023-06-01 07:07:42'), +(3, 2, 2, 10, '2023-06-01 18:52:02', '2023-06-01 18:52:02'), +(4, 2, 3, 10, '2023-06-01 19:43:20', '2023-06-01 19:43:20'), +(5, 2, 4, 10, '2023-06-01 20:34:36', '2023-06-01 20:34:36'), +(6, 2, 5, 10, '2023-06-02 07:32:03', '2023-06-02 07:32:03'), +(7, 2, 6, 10, '2023-06-03 06:10:25', '2023-06-03 06:10:25'), +(8, 2, 7, 10, '2023-06-03 07:15:59', '2023-06-03 07:15:59'), +(9, 2, 8, 10, '2023-06-04 06:28:06', '2023-06-04 06:28:06'), +(10, 2, 8, 10, '2023-06-04 06:28:06', '2023-06-04 06:28:06'), +(11, 2, 9, 10, '2023-06-04 06:55:08', '2023-06-04 06:55:08'), +(12, 2, 10, 10, '2023-06-04 06:58:50', '2023-06-04 06:58:50'), +(13, 2, 11, 10, '2023-06-04 07:02:33', '2023-06-04 07:02:33'), +(14, 2, 12, 10, '2023-06-04 07:05:39', '2023-06-04 07:05:39'), +(15, 2, 13, 10, '2023-06-04 07:15:47', '2023-06-04 07:15:47'), +(16, 3, 1, 10, '2023-06-07 07:23:49', '2023-06-07 07:23:49'), +(17, 3, 2, 10, '2023-06-28 02:18:47', '2023-06-28 02:18:47'), +(18, 4, 1, 10, '2023-07-06 20:15:05', '2023-07-06 20:15:05'), +(19, 6, 2, 10, '2024-01-22 22:42:39', '2024-01-22 22:42:39'), +(36, 6, 3, 10, '2024-02-26 20:41:01', '2024-02-26 20:41:01'), +(37, 6, 4, 10, '2024-02-26 20:41:17', '2024-02-26 20:41:17'), +(38, 6, 5, 10, '2024-02-26 20:41:29', '2024-02-26 20:41:29'), +(39, 6, 1, 10, '2024-02-26 23:24:56', '2024-02-26 23:24:56'), +(40, 6, 6, 10, '2024-02-27 01:06:45', '2024-02-27 01:06:45'), +(41, 7, 1, 10, '2024-03-08 07:44:18', '2024-03-08 07:44:18'), +(43, 7, 2, 10, '2024-03-08 08:31:45', '2024-03-08 08:31:45'), +(44, 7, 3, 10, '2024-03-08 08:38:38', '2024-03-08 08:38:38'), +(45, 7, 4, 10, '2024-03-08 09:11:49', '2024-03-08 09:11:49'), +(46, 9, 1, 10, '2024-03-11 04:59:18', '2024-03-11 04:59:18'), +(47, 9, 2, 10, '2024-03-11 05:03:14', '2024-03-11 05:03:14'), +(48, 9, 3, 10, '2024-03-11 05:06:28', '2024-03-11 05:06:28'), +(49, 9, 4, 10, '2024-03-11 05:08:58', '2024-03-11 05:08:58'), +(50, 9, 5, 10, '2024-03-11 05:12:26', '2024-03-11 05:12:26'), +(51, 7, 5, 10, '2024-03-11 05:18:01', '2024-03-11 05:18:01'), +(52, 10, 1, 10, '2024-03-11 08:28:04', '2024-03-11 08:28:04'), +(53, 10, 2, 10, '2024-03-11 08:36:02', '2024-03-11 08:36:02'), +(54, 10, 3, 10, '2024-03-11 08:39:45', '2024-03-11 08:39:45'), +(55, 10, 4, 10, '2024-03-11 08:43:15', '2024-03-11 08:43:15'), +(56, 10, 5, 10, '2024-03-11 08:46:00', '2024-03-11 08:46:00'), +(57, 11, 1, 10, '2024-03-11 08:54:17', '2024-03-11 08:54:17'), +(58, 11, 2, 10, '2024-03-11 08:57:07', '2024-03-11 08:57:07'), +(59, 11, 3, 10, '2024-03-11 08:58:21', '2024-03-11 08:58:21'), +(60, 11, 4, 10, '2024-03-11 08:59:40', '2024-03-11 08:59:40'), +(61, 11, 5, 10, '2024-03-11 09:01:04', '2024-03-11 09:01:04'), +(62, 12, 1, 10, '2024-03-11 09:09:20', '2024-03-11 09:09:20'), +(63, 12, 2, 10, '2024-03-11 09:11:30', '2024-03-11 09:11:30'), +(64, 12, 3, 10, '2024-03-11 09:12:44', '2024-03-11 09:12:44'), +(65, 12, 4, 10, '2024-03-11 09:15:38', '2024-03-11 09:15:38'), +(66, 12, 5, 10, '2024-03-11 09:17:04', '2024-03-11 09:17:04'), +(67, 13, 1, 10, '2024-03-11 09:20:21', '2024-03-11 09:20:21'), +(68, 13, 2, 10, '2024-03-11 09:22:29', '2024-03-11 09:22:29'), +(69, 13, 3, 10, '2024-03-11 09:24:23', '2024-03-11 09:24:23'), +(70, 13, 4, 10, '2024-03-11 09:26:07', '2024-03-11 09:26:07'), +(71, 13, 5, 10, '2024-03-11 09:29:51', '2024-03-11 09:29:51'), +(72, 14, 1, 10, '2024-03-11 09:39:36', '2024-03-11 09:39:36'), +(73, 14, 2, 10, '2024-03-11 09:41:55', '2024-03-11 09:41:55'), +(74, 14, 3, 10, '2024-03-11 09:43:17', '2024-03-11 09:43:17'), +(75, 14, 4, 10, '2024-03-11 09:44:55', '2024-03-11 09:44:55'), +(76, 14, 5, 10, '2024-03-11 09:46:44', '2024-03-11 09:46:44'), +(77, 15, 1, 10, '2024-03-11 09:51:17', '2024-03-11 09:51:17'), +(78, 15, 2, 10, '2024-03-11 09:56:26', '2024-03-11 09:56:26'), +(79, 15, 3, 10, '2024-03-11 09:57:53', '2024-03-11 09:57:53'), +(80, 15, 4, 10, '2024-03-11 09:59:56', '2024-03-11 09:59:56'), +(81, 15, 5, 10, '2024-03-11 10:01:21', '2024-03-11 10:01:21'), +(82, 16, 1, 10, '2024-03-11 10:13:38', '2024-03-11 10:13:38'), +(83, 16, 2, 10, '2024-03-11 10:15:31', '2024-03-11 10:15:31'), +(84, 16, 3, 10, '2024-03-11 10:17:04', '2024-03-11 10:17:04'), +(85, 16, 4, 10, '2024-03-11 10:18:20', '2024-03-11 10:18:20'), +(86, 16, 5, 10, '2024-03-11 10:19:39', '2024-03-11 10:19:39'), +(87, 17, 1, 10, '2024-03-11 10:22:50', '2024-03-11 10:22:50'), +(88, 17, 2, 10, '2024-03-11 10:24:53', '2024-03-11 10:24:53'), +(89, 17, 3, 10, '2024-03-11 10:26:01', '2024-03-11 10:26:01'), +(90, 17, 4, 10, '2024-03-11 10:27:13', '2024-03-11 10:27:13'), +(91, 17, 5, 10, '2024-03-11 10:29:23', '2024-03-11 10:29:23'), +(92, 10, 6, 10, '2024-03-24 00:13:08', '2024-03-24 00:13:08'), +(93, 10, 7, 10, '2024-03-24 00:16:17', '2024-03-24 00:16:17'), +(94, 10, 8, 10, '2024-03-24 00:19:11', '2024-03-24 00:19:11'), +(95, 10, 9, 10, '2024-03-24 00:23:12', '2024-03-24 00:23:12'), +(96, 10, 10, 10, '2024-03-24 00:26:12', '2024-03-24 00:26:12'), +(97, 10, 11, 10, '2024-03-24 00:29:54', '2024-03-24 00:29:54'), +(98, 10, 12, 10, '2024-03-24 00:33:24', '2024-03-24 00:33:24'), +(99, 10, 13, 10, '2024-03-24 00:35:50', '2024-03-24 00:35:50'), +(100, 19, 1, 10, '2024-03-24 00:51:59', '2024-03-24 00:51:59'), +(101, 19, 2, 10, '2024-03-24 00:54:45', '2024-03-24 00:54:45'), +(102, 19, 3, 10, '2024-03-24 00:56:10', '2024-03-24 00:56:10'), +(103, 19, 4, 10, '2024-03-24 00:57:26', '2024-03-24 00:57:26'), +(104, 19, 5, 10, '2024-03-24 00:58:49', '2024-03-24 00:58:49'), +(105, 19, 6, 10, '2024-03-24 01:01:01', '2024-03-24 01:01:01'), +(106, 19, 7, 10, '2024-03-24 01:02:50', '2024-03-24 01:02:50'), +(107, 19, 8, 10, '2024-03-24 01:04:10', '2024-03-24 01:04:10'), +(108, 19, 9, 10, '2024-03-24 01:05:30', '2024-03-24 01:05:30'), +(109, 19, 10, 10, '2024-03-24 01:06:55', '2024-03-24 01:06:55'), +(110, 19, 11, 10, '2024-03-24 01:09:09', '2024-03-24 01:09:09'), +(111, 19, 12, 10, '2024-03-24 01:10:44', '2024-03-24 01:10:44'), +(112, 19, 13, 10, '2024-03-24 01:11:53', '2024-03-24 01:11:53'), +(113, 12, 6, 10, '2024-03-24 01:15:00', '2024-03-24 01:15:00'), +(114, 12, 7, 10, '2024-03-24 01:17:49', '2024-03-24 01:17:49'), +(115, 12, 8, 10, '2024-03-24 01:21:37', '2024-03-24 01:21:37'), +(116, 12, 9, 10, '2024-03-24 01:23:08', '2024-03-24 01:23:08'), +(117, 12, 10, 10, '2024-03-24 01:24:27', '2024-03-24 01:24:27'), +(118, 12, 11, 10, '2024-03-24 01:26:01', '2024-03-24 01:26:01'), +(119, 12, 12, 10, '2024-03-24 01:27:28', '2024-03-24 01:27:28'), +(120, 12, 13, 10, '2024-03-24 01:28:51', '2024-03-24 01:28:51'), +(121, 13, 6, 10, '2024-03-24 01:31:07', '2024-03-24 01:31:07'), +(122, 13, 7, 10, '2024-03-24 01:33:11', '2024-03-24 01:33:11'), +(123, 13, 8, 10, '2024-03-24 01:34:30', '2024-03-24 01:34:30'), +(124, 13, 9, 10, '2024-03-24 01:35:48', '2024-03-24 01:35:48'), +(125, 13, 10, 10, '2024-03-24 01:37:32', '2024-03-24 01:37:32'), +(126, 13, 11, 10, '2024-03-24 01:38:50', '2024-03-24 01:38:50'), +(127, 13, 12, 10, '2024-03-24 01:40:06', '2024-03-24 01:40:06'), +(128, 13, 13, 10, '2024-03-24 01:40:55', '2024-03-24 01:40:55'), +(129, 21, 1, 10, '2024-03-24 02:54:38', '2024-03-24 02:54:38'), +(130, 21, 2, 10, '2024-03-26 08:28:28', '2024-03-26 08:28:28'), +(131, 21, 3, 10, '2024-03-28 08:33:38', '2024-03-28 08:33:38'), +(132, 21, 4, 10, '2024-03-28 08:35:38', '2024-03-28 08:35:38'), +(133, 21, 5, 10, '2024-03-28 08:36:56', '2024-03-28 08:36:56'), +(134, 21, 6, 10, '2024-03-28 08:38:21', '2024-03-28 08:38:21'), +(135, 21, 7, 10, '2024-03-28 08:39:29', '2024-03-28 08:39:29'), +(136, 21, 8, 10, '2024-03-28 08:40:39', '2024-03-28 08:40:39'), +(137, 21, 9, 10, '2024-03-28 08:41:56', '2024-03-28 08:41:56'), +(138, 21, 10, 10, '2024-03-28 08:43:18', '2024-03-28 08:43:18'), +(139, 21, 11, 10, '2024-03-28 08:44:49', '2024-03-28 08:44:49'), +(140, 21, 12, 10, '2024-03-28 08:45:58', '2024-03-28 08:45:58'), +(141, 21, 13, 10, '2024-03-28 08:47:04', '2024-03-28 08:47:04'), +(142, 22, 1, 10, '2024-03-28 08:58:56', '2024-03-28 08:58:56'), +(143, 22, 2, 10, '2024-03-28 09:03:34', '2024-03-28 09:03:34'), +(144, 22, 3, 10, '2024-03-28 09:04:33', '2024-03-28 09:04:33'), +(145, 22, 4, 10, '2024-03-28 09:05:39', '2024-03-28 09:05:39'), +(146, 22, 5, 10, '2024-03-28 09:06:53', '2024-03-28 09:06:53'), +(147, 22, 6, 10, '2024-03-28 09:12:08', '2024-03-28 09:12:08'), +(148, 22, 7, 10, '2024-03-28 09:13:11', '2024-03-28 09:13:11'), +(149, 22, 8, 10, '2024-03-28 09:14:24', '2024-03-28 09:14:24'), +(150, 22, 9, 10, '2024-03-28 09:15:30', '2024-03-28 09:15:30'), +(151, 22, 10, 10, '2024-03-28 09:16:46', '2024-03-28 09:16:46'), +(152, 22, 11, 10, '2024-03-28 09:17:59', '2024-03-28 09:17:59'), +(153, 22, 12, 10, '2024-03-28 09:19:11', '2024-03-28 09:19:11'), +(154, 22, 13, 10, '2024-03-28 09:20:23', '2024-03-28 09:20:23'), +(155, 23, 1, 10, '2024-04-01 04:00:29', '2024-04-01 04:00:29'), +(156, 23, 2, 10, '2024-04-01 04:02:21', '2024-04-01 04:02:21'), +(157, 23, 3, 10, '2024-04-01 04:03:34', '2024-04-01 04:03:34'), +(158, 23, 4, 10, '2024-04-01 04:05:32', '2024-04-01 04:05:32'), +(159, 23, 5, 10, '2024-04-01 04:08:08', '2024-04-01 04:08:08'), +(160, 23, 6, 10, '2024-04-01 04:09:49', '2024-04-01 04:09:49'), +(161, 23, 7, 10, '2024-04-01 04:11:03', '2024-04-01 04:11:03'), +(162, 23, 8, 10, '2024-04-01 04:12:27', '2024-04-01 04:12:27'), +(163, 23, 9, 10, '2024-04-01 04:15:52', '2024-04-01 04:15:52'), +(164, 23, 10, 10, '2024-04-01 04:17:20', '2024-04-01 04:17:20'), +(165, 23, 11, 10, '2024-04-01 04:19:26', '2024-04-01 04:19:26'), +(166, 23, 12, 10, '2024-04-01 04:21:02', '2024-04-01 04:21:02'), +(167, 23, 13, 10, '2024-04-01 04:23:52', '2024-04-01 04:23:52'), +(168, 24, 1, 10, '2024-04-01 04:37:32', '2024-04-01 04:37:32'), +(169, 24, 2, 10, '2024-04-01 04:39:56', '2024-04-01 04:39:56'), +(170, 24, 3, 10, '2024-04-01 04:41:31', '2024-04-01 04:41:31'), +(171, 24, 4, 10, '2024-04-01 04:43:01', '2024-04-01 04:43:01'), +(172, 24, 5, 10, '2024-04-01 04:44:36', '2024-04-01 04:44:36'), +(173, 24, 6, 10, '2024-04-01 04:45:55', '2024-04-01 04:45:55'), +(174, 24, 7, 10, '2024-04-01 04:47:10', '2024-04-01 04:47:10'), +(175, 24, 8, 10, '2024-04-01 04:50:10', '2024-04-01 04:50:10'), +(176, 24, 9, 10, '2024-04-01 04:51:47', '2024-04-01 04:51:47'), +(177, 24, 10, 10, '2024-04-01 04:53:23', '2024-04-01 04:53:23'), +(178, 24, 11, 10, '2024-04-01 04:55:55', '2024-04-01 04:55:55'), +(179, 24, 12, 10, '2024-04-01 04:59:22', '2024-04-01 04:59:22'), +(180, 24, 13, 10, '2024-04-01 05:00:43', '2024-04-01 05:00:43'), +(181, 6, 7, 10, '2024-04-07 09:36:16', '2024-04-07 09:36:16'), +(182, 25, 1, 10, '2024-04-16 17:14:31', '2024-04-16 17:14:31'), +(183, 25, 2, 10, '2024-04-16 17:17:01', '2024-04-16 17:17:01'), +(184, 25, 3, 10, '2024-04-16 17:46:14', '2024-04-16 17:46:14'), +(185, 25, 4, 10, '2024-04-23 18:53:18', '2024-04-23 18:53:18'), +(186, 26, 1, 10, '2024-04-26 13:26:17', '2024-04-26 13:26:17'), +(187, 26, 2, 10, '2024-04-26 13:48:43', '2024-04-26 13:48:43'), +(188, 26, 3, 10, '2024-04-26 20:40:51', '2024-04-26 20:40:51'), +(189, 26, 4, 10, '2024-04-26 20:55:29', '2024-04-26 20:55:29'), +(190, 26, 5, 10, '2024-04-26 21:14:20', '2024-04-26 21:14:20'), +(191, 26, 6, 10, '2024-04-26 21:30:42', '2024-04-26 21:30:42'), +(192, 26, 7, 10, '2024-04-26 21:43:53', '2024-04-26 21:43:53'), +(193, 26, 8, 10, '2024-04-26 23:17:59', '2024-04-26 23:17:59'), +(194, 26, 9, 10, '2024-04-26 23:44:04', '2024-04-26 23:44:04'), +(195, 26, 10, 10, '2024-04-27 00:05:36', '2024-04-27 00:05:36'), +(196, 26, 11, 10, '2024-04-27 00:33:11', '2024-04-27 00:33:11'), +(197, 26, 12, 10, '2024-04-27 00:50:27', '2024-04-27 00:50:27'), +(198, 26, 13, 10, '2024-04-27 01:09:35', '2024-04-27 01:09:35'), +(199, 27, 1, 10, '2024-04-27 05:48:54', '2024-04-27 05:48:54'), +(200, 27, 2, 10, '2024-04-27 05:58:11', '2024-04-27 05:58:11'), +(201, 27, 3, 10, '2024-04-27 06:07:16', '2024-04-27 06:07:16'), +(202, 27, 4, 10, '2024-04-27 06:16:11', '2024-04-27 06:16:11'), +(203, 27, 5, 10, '2024-04-27 06:26:49', '2024-04-27 06:26:49'), +(204, 27, 6, 10, '2024-04-27 06:35:20', '2024-04-27 06:35:20'), +(205, 27, 7, 10, '2024-04-27 06:45:53', '2024-04-27 06:45:53'), +(206, 27, 8, 10, '2024-04-27 06:55:03', '2024-04-27 06:55:03'), +(207, 27, 9, 10, '2024-04-27 07:07:20', '2024-04-27 07:07:20'), +(208, 27, 10, 10, '2024-04-27 07:17:59', '2024-04-27 07:17:59'), +(209, 27, 11, 10, '2024-04-27 07:28:29', '2024-04-27 07:28:29'), +(210, 27, 12, 10, '2024-04-27 07:38:27', '2024-04-27 07:38:27'), +(211, 27, 13, 10, '2024-04-27 07:46:57', '2024-04-27 07:46:57'), +(212, 28, 1, 10, '2024-04-27 13:39:30', '2024-04-27 13:39:30'), +(213, 28, 2, 10, '2024-04-27 13:48:03', '2024-04-27 13:48:03'), +(214, 28, 3, 10, '2024-04-27 13:56:28', '2024-04-27 13:56:28'), +(215, 28, 4, 10, '2024-04-27 14:04:11', '2024-04-27 14:04:11'), +(216, 28, 5, 10, '2024-04-27 14:12:37', '2024-04-27 14:12:37'), +(217, 28, 6, 10, '2024-04-27 14:20:56', '2024-04-27 14:20:56'), +(218, 28, 7, 10, '2024-04-27 14:28:57', '2024-04-27 14:28:57'), +(219, 28, 8, 10, '2024-04-27 14:36:31', '2024-04-27 14:36:31'), +(220, 28, 9, 10, '2024-04-27 14:45:37', '2024-04-27 14:45:37'), +(221, 28, 10, 10, '2024-04-27 14:53:37', '2024-04-27 14:53:37'), +(222, 28, 11, 10, '2024-04-27 15:00:55', '2024-04-27 15:00:55'), +(223, 28, 12, 10, '2024-04-27 15:08:16', '2024-04-27 15:08:16'), +(224, 28, 13, 10, '2024-04-27 15:15:56', '2024-04-27 15:15:56'), +(225, 29, 1, 10, '2024-04-27 19:23:15', '2024-04-27 19:23:15'), +(226, 29, 2, 10, '2024-04-27 19:35:03', '2024-04-27 19:35:03'), +(227, 29, 3, 10, '2024-04-27 19:44:31', '2024-04-27 19:44:31'), +(228, 29, 4, 10, '2024-04-27 19:52:33', '2024-04-27 19:52:33'), +(229, 29, 5, 10, '2024-04-27 20:00:45', '2024-04-27 20:00:45'), +(230, 29, 6, 10, '2024-04-27 20:09:18', '2024-04-27 20:09:18'), +(231, 29, 7, 10, '2024-04-27 20:18:03', '2024-04-27 20:18:03'), +(232, 29, 8, 10, '2024-04-27 20:26:45', '2024-04-27 20:26:45'), +(233, 29, 9, 10, '2024-04-27 20:35:02', '2024-04-27 20:35:02'), +(234, 29, 10, 10, '2024-04-27 20:44:13', '2024-04-27 20:44:13'), +(235, 29, 11, 10, '2024-04-27 20:53:51', '2024-04-27 20:53:51'), +(236, 29, 12, 10, '2024-04-27 21:03:06', '2024-04-27 21:03:06'), +(237, 29, 13, 10, '2024-04-27 21:15:39', '2024-04-27 21:15:39'), +(238, 30, 1, 10, '2024-04-28 05:53:13', '2024-04-28 05:53:13'), +(239, 30, 2, 10, '2024-04-28 06:07:20', '2024-04-28 06:07:20'), +(240, 30, 3, 10, '2024-04-28 06:15:05', '2024-04-28 06:15:05'), +(241, 30, 4, 10, '2024-04-28 06:23:06', '2024-04-28 06:23:06'), +(242, 30, 5, 10, '2024-04-28 06:30:55', '2024-04-28 06:30:55'), +(243, 30, 6, 10, '2024-04-28 06:41:29', '2024-04-28 06:41:29'), +(244, 30, 7, 10, '2024-04-28 06:49:35', '2024-04-28 06:49:35'), +(245, 30, 8, 10, '2024-04-28 07:02:09', '2024-04-28 07:02:09'), +(246, 30, 9, 10, '2024-04-28 07:10:31', '2024-04-28 07:10:31'), +(247, 30, 10, 10, '2024-04-28 07:18:57', '2024-04-28 07:18:57'), +(248, 30, 11, 10, '2024-04-28 07:33:00', '2024-04-28 07:33:00'), +(249, 30, 12, 10, '2024-04-28 07:40:55', '2024-04-28 07:40:55'), +(250, 30, 13, 10, '2024-04-28 07:50:57', '2024-04-28 07:50:57'), +(251, 31, 1, 10, '2024-04-28 13:55:18', '2024-04-28 13:55:18'), +(252, 31, 2, 10, '2024-04-28 13:58:29', '2024-04-28 13:58:29'), +(253, 31, 3, 10, '2024-04-28 14:05:45', '2024-04-28 14:05:45'), +(254, 31, 4, 10, '2024-04-28 14:09:35', '2024-04-28 14:09:35'), +(255, 31, 5, 10, '2024-04-28 14:13:21', '2024-04-28 14:13:21'), +(256, 31, 6, 10, '2024-04-28 14:16:36', '2024-04-28 14:16:36'), +(257, 31, 7, 10, '2024-04-28 14:19:23', '2024-04-28 14:19:23'), +(258, 31, 8, 10, '2024-04-28 14:22:46', '2024-04-28 14:22:46'), +(259, 31, 9, 10, '2024-04-28 14:26:28', '2024-04-28 14:26:28'), +(260, 31, 10, 10, '2024-04-28 14:29:47', '2024-04-28 14:29:47'), +(261, 31, 11, 10, '2024-04-28 14:32:19', '2024-04-28 14:32:19'), +(262, 31, 12, 10, '2024-04-28 14:34:56', '2024-04-28 14:34:56'), +(263, 31, 13, 10, '2024-04-28 14:37:32', '2024-04-28 14:37:32'), +(264, 32, 1, 10, '2024-05-01 19:20:20', '2024-05-01 19:20:20'), +(265, 32, 2, 10, '2024-05-01 19:42:42', '2024-05-01 19:42:42'), +(266, 32, 3, 10, '2024-05-01 19:55:00', '2024-05-01 19:55:00'), +(267, 33, 1, 10, '2024-05-01 20:40:50', '2024-05-01 20:40:50'), +(268, 34, 1, 10, '2024-05-01 21:30:15', '2024-05-01 21:30:15'), +(269, 34, 2, 10, '2024-05-01 21:41:53', '2024-05-01 21:41:53'), +(270, 34, 3, 10, '2024-05-01 22:34:14', '2024-05-01 22:34:14'), +(271, 34, 4, 10, '2024-05-01 22:48:40', '2024-05-01 22:48:40'), +(272, 32, 4, 10, '2024-05-02 15:10:31', '2024-05-02 15:10:31'), +(273, 32, 5, 10, '2024-05-02 15:19:30', '2024-05-02 15:19:30'), +(274, 32, 6, 10, '2024-05-02 15:28:45', '2024-05-02 15:28:45'), +(275, 32, 7, 10, '2024-05-02 15:37:57', '2024-05-02 15:37:57'), +(276, 32, 8, 10, '2024-05-02 15:46:21', '2024-05-02 15:46:21'), +(277, 32, 9, 10, '2024-05-02 15:55:14', '2024-05-02 15:55:14'), +(278, 32, 10, 10, '2024-05-02 16:03:21', '2024-05-02 16:03:21'), +(279, 32, 11, 10, '2024-05-02 16:11:58', '2024-05-02 16:11:58'), +(280, 32, 12, 10, '2024-05-02 16:20:32', '2024-05-02 16:20:32'), +(281, 32, 13, 10, '2024-05-02 16:29:10', '2024-05-02 16:29:10'), +(282, 35, 1, 10, '2024-05-02 17:18:53', '2024-05-02 17:18:53'), +(283, 35, 2, 10, '2024-05-02 17:29:10', '2024-05-02 17:29:10'), +(284, 35, 3, 10, '2024-05-02 17:37:07', '2024-05-02 17:37:07'), +(285, 35, 4, 10, '2024-05-02 17:45:55', '2024-05-02 17:45:55'), +(286, 35, 5, 10, '2024-05-02 17:55:32', '2024-05-02 17:55:32'), +(287, 35, 6, 10, '2024-05-02 18:03:14', '2024-05-02 18:03:14'), +(288, 35, 7, 10, '2024-05-02 18:19:10', '2024-05-02 18:19:10'), +(289, 35, 8, 10, '2024-05-02 18:42:28', '2024-05-02 18:42:28'), +(290, 35, 9, 10, '2024-05-02 18:53:52', '2024-05-02 18:53:52'), +(291, 35, 10, 10, '2024-05-02 19:15:29', '2024-05-02 19:15:29'), +(292, 35, 11, 10, '2024-05-02 19:26:11', '2024-05-02 19:26:11'), +(293, 35, 12, 10, '2024-05-02 19:40:12', '2024-05-02 19:40:12'), +(294, 35, 13, 10, '2024-05-02 19:49:26', '2024-05-02 19:49:26'), +(295, 36, 1, 10, '2024-05-03 03:10:49', '2024-05-03 03:10:49'), +(296, 36, 2, 10, '2024-05-03 03:28:42', '2024-05-03 03:28:42'), +(297, 36, 3, 10, '2024-05-03 03:37:44', '2024-05-03 03:37:44'), +(298, 36, 4, 10, '2024-05-03 03:48:05', '2024-05-03 03:48:05'), +(299, 36, 5, 10, '2024-05-03 04:03:42', '2024-05-03 04:03:42'), +(300, 36, 6, 10, '2024-05-03 04:11:29', '2024-05-03 04:11:29'), +(301, 36, 7, 10, '2024-05-03 04:30:34', '2024-05-03 04:30:34'), +(302, 36, 8, 10, '2024-05-03 04:50:08', '2024-05-03 04:50:08'), +(303, 36, 9, 10, '2024-05-03 05:00:37', '2024-05-03 05:00:37'), +(304, 36, 10, 10, '2024-05-03 05:23:26', '2024-05-03 05:23:26'), +(305, 36, 11, 10, '2024-05-03 05:43:04', '2024-05-03 05:43:04'), +(306, 36, 12, 10, '2024-05-03 05:53:59', '2024-05-03 05:53:59'), +(307, 36, 13, 10, '2024-05-03 06:04:08', '2024-05-03 06:04:08'), +(308, 37, 1, 10, '2024-06-03 05:06:24', '2024-06-03 05:06:24'), +(309, 37, 2, 10, '2024-06-03 05:26:12', '2024-06-03 05:26:12'), +(310, 37, 3, 10, '2024-06-03 05:38:55', '2024-06-03 05:38:55'), +(311, 37, 4, 10, '2024-06-03 05:49:25', '2024-06-03 05:49:25'), +(312, 37, 5, 10, '2024-06-03 05:59:32', '2024-06-03 05:59:32'), +(313, 37, 6, 10, '2024-06-03 06:23:18', '2024-06-03 06:23:18'), +(314, 37, 7, 10, '2024-06-03 06:38:42', '2024-06-03 06:38:42'), +(315, 37, 8, 10, '2024-06-03 07:00:27', '2024-06-03 07:00:27'), +(316, 37, 9, 10, '2024-06-03 07:08:37', '2024-06-03 07:08:37'), +(317, 37, 10, 10, '2024-06-03 07:23:53', '2024-06-03 07:23:53'), +(318, 37, 11, 10, '2024-06-03 07:32:17', '2024-06-03 07:32:17'), +(319, 37, 12, 10, '2024-06-03 07:39:52', '2024-06-03 07:39:52'), +(320, 37, 13, 10, '2024-06-03 07:51:14', '2024-06-03 07:51:14'), +(321, 39, 1, 10, '2024-06-10 01:50:17', '2024-06-10 01:50:17'), +(322, 39, 2, 10, '2024-06-10 01:57:36', '2024-06-10 01:57:36'), +(323, 39, 3, 10, '2024-06-10 02:01:38', '2024-06-10 02:01:38'), +(324, 39, 4, 10, '2024-06-10 02:07:17', '2024-06-10 02:07:17'), +(325, 39, 5, 10, '2024-06-10 02:20:41', '2024-06-10 02:20:41'), +(326, 39, 6, 10, '2024-06-10 02:27:19', '2024-06-10 02:27:19'), +(327, 39, 7, 10, '2024-06-10 02:34:00', '2024-06-10 02:34:00'), +(328, 39, 8, 10, '2024-06-10 02:37:30', '2024-06-10 02:37:30'), +(329, 39, 9, 10, '2024-06-10 02:46:25', '2024-06-10 02:46:25'), +(330, 39, 10, 10, '2024-06-10 02:53:57', '2024-06-10 02:53:57'), +(331, 40, 1, 10, '2024-06-10 03:09:15', '2024-06-10 03:09:15'), +(332, 40, 2, 10, '2024-06-10 03:16:55', '2024-06-10 03:16:55'), +(333, 40, 3, 10, '2024-06-10 03:23:05', '2024-06-10 03:23:05'), +(334, 40, 4, 10, '2024-06-10 03:29:43', '2024-06-10 03:29:43'), +(335, 40, 5, 10, '2024-06-10 03:35:37', '2024-06-10 03:35:37'), +(336, 40, 6, 10, '2024-06-10 03:46:47', '2024-06-10 03:46:47'), +(337, 40, 7, 10, '2024-06-10 03:51:44', '2024-06-10 03:51:44'), +(338, 41, 1, 10, '2024-06-10 03:54:10', '2024-06-10 03:54:10'), +(339, 41, 2, 10, '2024-06-10 04:01:09', '2024-06-10 04:01:09'), +(340, 41, 3, 10, '2024-06-10 04:05:27', '2024-06-10 04:05:27'), +(341, 41, 4, 10, '2024-06-10 04:12:21', '2024-06-10 04:12:21'), +(342, 41, 5, 10, '2024-06-10 04:22:17', '2024-06-10 04:22:17'), +(343, 41, 6, 10, '2024-06-10 04:28:16', '2024-06-10 04:28:16'), +(344, 41, 7, 10, '2024-06-10 04:31:29', '2024-06-10 04:31:29'), +(345, 41, 8, 10, '2024-06-10 04:35:23', '2024-06-10 04:35:23'), +(346, 41, 9, 10, '2024-06-10 04:39:09', '2024-06-10 04:39:09'), +(347, 41, 10, 10, '2024-06-13 03:17:31', '2024-06-13 03:17:31'), +(348, 41, 11, 10, '2024-06-13 03:37:27', '2024-06-13 03:37:27'), +(349, 41, 12, 10, '2024-06-13 03:42:53', '2024-06-13 03:42:53'), +(350, 41, 13, 10, '2024-06-13 03:48:00', '2024-06-13 03:48:00'), +(351, 40, 8, 10, '2024-06-13 05:32:45', '2024-06-13 05:32:45'), +(352, 40, 9, 10, '2024-06-13 05:39:13', '2024-06-13 05:39:13'), +(353, 40, 10, 10, '2024-06-13 05:44:12', '2024-06-13 05:44:12'), +(354, 40, 11, 10, '2024-06-13 05:47:46', '2024-06-13 05:47:46'), +(355, 40, 12, 10, '2024-06-13 05:51:36', '2024-06-13 05:51:36'), +(356, 40, 13, 10, '2024-06-13 05:54:29', '2024-06-13 05:54:29'), +(357, 42, 1, 10, '2024-06-22 05:41:42', '2024-06-22 05:41:42'), +(358, 42, 2, 10, '2024-06-22 06:45:36', '2024-06-22 06:45:36'), +(359, 43, 1, 10, '2024-06-23 07:44:20', '2024-06-23 07:44:20'), +(360, 43, 2, 10, '2024-06-24 00:48:20', '2024-06-24 00:48:20'), +(361, 44, 1, 10, '2024-06-24 11:39:43', '2024-06-24 11:39:43'), +(362, 44, 2, 10, '2024-06-24 11:42:07', '2024-06-24 11:42:07'), +(363, 43, 3, 10, '2024-06-25 03:21:07', '2024-06-25 03:21:07'), +(364, 43, 4, 10, '2024-06-25 03:25:40', '2024-06-25 03:25:40'), +(365, 45, 1, 10, '2024-06-30 10:51:20', '2024-06-30 10:51:20'), +(366, 43, 5, 10, '2024-06-30 10:58:22', '2024-06-30 10:58:22'), +(367, 43, 6, 10, '2024-06-30 11:20:32', '2024-06-30 11:20:32'), +(368, 45, 2, 10, '2024-07-02 10:27:54', '2024-07-02 10:27:54'); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `answers` +-- +ALTER TABLE `answers` + ADD PRIMARY KEY (`id`), + ADD KEY `answers_question_id_foreign` (`question_id`); + +-- +-- Indexes for table `badge_settings` +-- +ALTER TABLE `badge_settings` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `code_error_logs` +-- +ALTER TABLE `code_error_logs` + ADD PRIMARY KEY (`id`), + ADD KEY `code_error_logs_user_id_foreign` (`user_id`), + ADD KEY `code_error_logs_question_id_foreign` (`question_id`); + +-- +-- Indexes for table `code_history_logs` +-- +ALTER TABLE `code_history_logs` + ADD PRIMARY KEY (`id`), + ADD KEY `code_history_logs_user_id_foreign` (`user_id`), + ADD KEY `code_history_logs_question_id_foreign` (`question_id`); + +-- +-- Indexes for table `contents` +-- +ALTER TABLE `contents` + ADD PRIMARY KEY (`id`), + ADD KEY `contents_lesson_id_foreign` (`lesson_id`); + +-- +-- Indexes for table `courses` +-- +ALTER TABLE `courses` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `essay_question` +-- +ALTER TABLE `essay_question` + ADD PRIMARY KEY (`id`), + ADD KEY `essay_question_question_id_foreign` (`question_id`), + ADD KEY `essay_question_user_id_foreign` (`user_id`); + +-- +-- Indexes for table `explaining_score` +-- +ALTER TABLE `explaining_score` + ADD PRIMARY KEY (`id`), + ADD KEY `explaining_score_user_id_foreign` (`user_id`), + ADD KEY `explaining_score_content_id_foreign` (`content_id`), + ADD KEY `explaining_score_essay_question_id_foreign` (`essay_question_id`), + ADD KEY `explaining_score_user_answer_id_foreign` (`user_answer_id`); + +-- +-- Indexes for table `explains` +-- +ALTER TABLE `explains` + ADD PRIMARY KEY (`id`), + ADD KEY `explains_level_id_foreign` (`level_id`), + ADD KEY `explains_user_id_foreign` (`user_id`); + +-- +-- Indexes for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`); + +-- +-- Indexes for table `lessons` +-- +ALTER TABLE `lessons` + ADD PRIMARY KEY (`id`), + ADD KEY `lessons_course_id_foreign` (`course_id`), + ADD KEY `lessons_level_id_foreign` (`level_id`); + +-- +-- Indexes for table `levels` +-- +ALTER TABLE `levels` + ADD PRIMARY KEY (`id`), + ADD KEY `levels_course_id_foreign` (`course_id`); + +-- +-- Indexes for table `migrations` +-- +ALTER TABLE `migrations` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `password_resets` +-- +ALTER TABLE `password_resets` + ADD KEY `password_resets_email_index` (`email`); + +-- +-- Indexes for table `personal_access_tokens` +-- +ALTER TABLE `personal_access_tokens` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `personal_access_tokens_token_unique` (`token`), + ADD KEY `personal_access_tokens_tokenable_type_tokenable_id_index` (`tokenable_type`,`tokenable_id`); + +-- +-- Indexes for table `questions` +-- +ALTER TABLE `questions` + ADD PRIMARY KEY (`id`), + ADD KEY `questions_content_id_foreign` (`content_id`); + +-- +-- Indexes for table `roles` +-- +ALTER TABLE `roles` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `role_user` +-- +ALTER TABLE `role_user` + ADD PRIMARY KEY (`id`), + ADD KEY `role_user_user_id_foreign` (`user_id`), + ADD KEY `role_user_role_id_foreign` (`role_id`); + +-- +-- Indexes for table `student_courses` +-- +ALTER TABLE `student_courses` + ADD PRIMARY KEY (`id`), + ADD KEY `student_courses_user_id_foreign` (`user_id`), + ADD KEY `student_courses_course_id_foreign` (`course_id`); + +-- +-- Indexes for table `total_score` +-- +ALTER TABLE `total_score` + ADD PRIMARY KEY (`id`), + ADD KEY `total_score_user_id_foreign` (`user_id`), + ADD KEY `total_score_content_id_foreign` (`content_id`), + ADD KEY `total_score_question_id_foreign` (`question_id`), + ADD KEY `total_score_wondering_score_id_foreign` (`wondering_score_id`), + ADD KEY `total_score_user_score_id_foreign` (`user_score_id`); + +-- +-- Indexes for table `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `users_email_unique` (`email`), + ADD KEY `users_role_id_foreign` (`role_id`); + +-- +-- Indexes for table `user_answer` +-- +ALTER TABLE `user_answer` + ADD PRIMARY KEY (`id`), + ADD KEY `user_answer_user_id_foreign` (`user_id`), + ADD KEY `user_answer_essay_question_id_foreign` (`essay_question_id`); + +-- +-- Indexes for table `user_code_test_score` +-- +ALTER TABLE `user_code_test_score` + ADD PRIMARY KEY (`id`), + ADD KEY `user_code_test_score_question_id_foreign` (`question_id`), + ADD KEY `user_code_test_score_user_id_foreign` (`user_id`); + +-- +-- Indexes for table `user_scores` +-- +ALTER TABLE `user_scores` + ADD PRIMARY KEY (`id`), + ADD KEY `user_scores_user_id_foreign` (`user_id`), + ADD KEY `user_scores_content_id_foreign` (`content_id`), + ADD KEY `user_scores_question_id_foreign` (`question_id`), + ADD KEY `user_scores_level_id_foreign` (`level_id`) USING BTREE; + +-- +-- Indexes for table `wondering_score` +-- +ALTER TABLE `wondering_score` + ADD PRIMARY KEY (`id`), + ADD KEY `wondering_score_user_id_foreign` (`user_id`), + ADD KEY `wondering_score_content_id_foreign` (`content_id`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `answers` +-- +ALTER TABLE `answers` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25; + +-- +-- AUTO_INCREMENT for table `badge_settings` +-- +ALTER TABLE `badge_settings` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=35; + +-- +-- AUTO_INCREMENT for table `code_error_logs` +-- +ALTER TABLE `code_error_logs` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=84; + +-- +-- AUTO_INCREMENT for table `code_history_logs` +-- +ALTER TABLE `code_history_logs` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=517; + +-- +-- AUTO_INCREMENT for table `contents` +-- +ALTER TABLE `contents` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14; + +-- +-- AUTO_INCREMENT for table `courses` +-- +ALTER TABLE `courses` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- AUTO_INCREMENT for table `essay_question` +-- +ALTER TABLE `essay_question` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=58; + +-- +-- AUTO_INCREMENT for table `explaining_score` +-- +ALTER TABLE `explaining_score` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1030; + +-- +-- AUTO_INCREMENT for table `explains` +-- +ALTER TABLE `explains` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `lessons` +-- +ALTER TABLE `lessons` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; + +-- +-- AUTO_INCREMENT for table `levels` +-- +ALTER TABLE `levels` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; + +-- +-- AUTO_INCREMENT for table `migrations` +-- +ALTER TABLE `migrations` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=40; + +-- +-- AUTO_INCREMENT for table `personal_access_tokens` +-- +ALTER TABLE `personal_access_tokens` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `questions` +-- +ALTER TABLE `questions` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=27; + +-- +-- AUTO_INCREMENT for table `roles` +-- +ALTER TABLE `roles` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; + +-- +-- AUTO_INCREMENT for table `role_user` +-- +ALTER TABLE `role_user` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; + +-- +-- AUTO_INCREMENT for table `student_courses` +-- +ALTER TABLE `student_courses` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=42; + +-- +-- AUTO_INCREMENT for table `total_score` +-- +ALTER TABLE `total_score` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=344; + +-- +-- AUTO_INCREMENT for table `users` +-- +ALTER TABLE `users` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=46; + +-- +-- AUTO_INCREMENT for table `user_answer` +-- +ALTER TABLE `user_answer` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1108; + +-- +-- AUTO_INCREMENT for table `user_code_test_score` +-- +ALTER TABLE `user_code_test_score` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `user_scores` +-- +ALTER TABLE `user_scores` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=373; + +-- +-- AUTO_INCREMENT for table `wondering_score` +-- +ALTER TABLE `wondering_score` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=369; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `code_history_logs` +-- +ALTER TABLE `code_history_logs` + ADD CONSTRAINT `code_history_logs_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `questions` (`id`); + +-- +-- Constraints for table `essay_question` +-- +ALTER TABLE `essay_question` + ADD CONSTRAINT `essay_question_ibfk_1` FOREIGN KEY (`question_id`) REFERENCES `questions` (`id`); + +-- +-- Constraints for table `explaining_score` +-- +ALTER TABLE `explaining_score` + ADD CONSTRAINT `explaining_score_ibfk_1` FOREIGN KEY (`content_id`) REFERENCES `contents` (`id`); + +-- +-- Constraints for table `lessons` +-- +ALTER TABLE `lessons` + ADD CONSTRAINT `lessons_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`); + +-- +-- Constraints for table `questions` +-- +ALTER TABLE `questions` + ADD CONSTRAINT `questions_ibfk_1` FOREIGN KEY (`content_id`) REFERENCES `contents` (`id`); + +-- +-- Constraints for table `student_courses` +-- +ALTER TABLE `student_courses` + ADD CONSTRAINT `student_courses_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); + +-- +-- Constraints for table `total_score` +-- +ALTER TABLE `total_score` + ADD CONSTRAINT `total_score_ibfk_1` FOREIGN KEY (`content_id`) REFERENCES `contents` (`id`), + ADD CONSTRAINT `total_score_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); + +-- +-- Constraints for table `user_answer` +-- +ALTER TABLE `user_answer` + ADD CONSTRAINT `user_answer_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`), + ADD CONSTRAINT `user_answer_ibfk_2` FOREIGN KEY (`essay_question_id`) REFERENCES `essay_question` (`id`); + +-- +-- Constraints for table `user_code_test_score` +-- +ALTER TABLE `user_code_test_score` + ADD CONSTRAINT `user_code_test_score_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`); + +-- +-- Constraints for table `user_scores` +-- +ALTER TABLE `user_scores` + ADD CONSTRAINT `user_scores_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`), + ADD CONSTRAINT `user_scores_ibfk_2` FOREIGN KEY (`content_id`) REFERENCES `contents` (`id`); + +-- +-- Constraints for table `wondering_score` +-- +ALTER TABLE `wondering_score` + ADD CONSTRAINT `wondering_score_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`), + ADD CONSTRAINT `wondering_score_ibfk_2` FOREIGN KEY (`content_id`) REFERENCES `contents` (`id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/online-compiler/.classpath b/online-compiler/.classpath new file mode 100644 index 0000000..42c17c3 --- /dev/null +++ b/online-compiler/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/online-compiler/.gitignore b/online-compiler/.gitignore new file mode 100644 index 0000000..40bca31 --- /dev/null +++ b/online-compiler/.gitignore @@ -0,0 +1 @@ +/env \ No newline at end of file diff --git a/online-compiler/.idea/vcs.xml b/online-compiler/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/online-compiler/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/online-compiler/.project b/online-compiler/.project new file mode 100644 index 0000000..79f8423 --- /dev/null +++ b/online-compiler/.project @@ -0,0 +1,28 @@ + + + onlinecompiler + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + 1676852722513 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/online-compiler/Procfile b/online-compiler/Procfile new file mode 100644 index 0000000..06bf30d --- /dev/null +++ b/online-compiler/Procfile @@ -0,0 +1 @@ +web: python manage.py runserver 0.0.0.0:\$PORT \ No newline at end of file diff --git a/online-compiler/Readme.md b/online-compiler/Readme.md new file mode 100644 index 0000000..027882c --- /dev/null +++ b/online-compiler/Readme.md @@ -0,0 +1,41 @@ +# Readme + +use following step to using this project\ +this project using **django** and **python 3.x**.\ +**python 3.10** is recommended + +## First initialize project +1. Clone project from github directory + `git clone https://github.com/rsakml/onlinecompailer.git` + +2. Create a virtual environment in the project folder + `python -m venv env` + +3. Install in env folder + `pip install -r requirements.txt` + + all project dependency is located on `requirements.txt` + +4. If Django is not installed, run the following command + `pip install django` + + +Running Django Framework using Virtual Environment use this command: +`onlinecompiler> env\Scripts\activate` + +Virtual environment will be activate on command prompt if look like this: +`(env) onlinecompiler>` + +And run the python: +`(env) onlinecompiler>python manage.py runserver ` +it will serve on default port 8000. + + +## API DOC + +| URL | Description | method | params | response | +|------------------------|---------------------------|--------|--------|----------| +| `/compile/run` | Compile java file | POST | ```{code:'xxx', user: 'you@mail.com'}```|```{output: { java: 'xx', test_output: 'xx', point: x}}``` +| `/compile/test_files`|Get all java Test Files | GET || +|`/compile/upload`|Upload java test file|POST|`{file:'xx'(multipart/form-data)}`|`{status: "ok"}` +|`compile/delete`|Delete java test file|POST|`{filename: 'xx'}`| ```{"message": "readme.txt deleted","status": "success"}``` diff --git a/online-compiler/compiler/__init__.py b/online-compiler/compiler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/online-compiler/compiler/__pycache__/__init__.cpython-310.pyc b/online-compiler/compiler/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..da6c9a6 Binary files /dev/null and b/online-compiler/compiler/__pycache__/__init__.cpython-310.pyc differ diff --git a/online-compiler/compiler/__pycache__/__init__.cpython-311.pyc b/online-compiler/compiler/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..d9d2e39 Binary files /dev/null and b/online-compiler/compiler/__pycache__/__init__.cpython-311.pyc differ diff --git a/online-compiler/compiler/__pycache__/__init__.cpython-312.pyc b/online-compiler/compiler/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..2768242 Binary files /dev/null and b/online-compiler/compiler/__pycache__/__init__.cpython-312.pyc differ diff --git a/online-compiler/compiler/__pycache__/__init__.cpython-39.pyc b/online-compiler/compiler/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..798922c Binary files /dev/null and b/online-compiler/compiler/__pycache__/__init__.cpython-39.pyc differ diff --git a/online-compiler/compiler/__pycache__/urls.cpython-310.pyc b/online-compiler/compiler/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000..58e4c5e Binary files /dev/null and b/online-compiler/compiler/__pycache__/urls.cpython-310.pyc differ diff --git a/online-compiler/compiler/__pycache__/urls.cpython-311.pyc b/online-compiler/compiler/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000..d3eff0d Binary files /dev/null and b/online-compiler/compiler/__pycache__/urls.cpython-311.pyc differ diff --git a/online-compiler/compiler/__pycache__/urls.cpython-312.pyc b/online-compiler/compiler/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000..6ead8a8 Binary files /dev/null and b/online-compiler/compiler/__pycache__/urls.cpython-312.pyc differ diff --git a/online-compiler/compiler/__pycache__/urls.cpython-39.pyc b/online-compiler/compiler/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..e652b10 Binary files /dev/null and b/online-compiler/compiler/__pycache__/urls.cpython-39.pyc differ diff --git a/online-compiler/compiler/__pycache__/views.cpython-310.pyc b/online-compiler/compiler/__pycache__/views.cpython-310.pyc new file mode 100644 index 0000000..17523d1 Binary files /dev/null and b/online-compiler/compiler/__pycache__/views.cpython-310.pyc differ diff --git a/online-compiler/compiler/__pycache__/views.cpython-311.pyc b/online-compiler/compiler/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000..67df77d Binary files /dev/null and b/online-compiler/compiler/__pycache__/views.cpython-311.pyc differ diff --git a/online-compiler/compiler/__pycache__/views.cpython-312.pyc b/online-compiler/compiler/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000..a6b5854 Binary files /dev/null and b/online-compiler/compiler/__pycache__/views.cpython-312.pyc differ diff --git a/online-compiler/compiler/__pycache__/views.cpython-39.pyc b/online-compiler/compiler/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000..a59005b Binary files /dev/null and b/online-compiler/compiler/__pycache__/views.cpython-39.pyc differ diff --git a/online-compiler/compiler/admin.py b/online-compiler/compiler/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/online-compiler/compiler/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/online-compiler/compiler/apps.py b/online-compiler/compiler/apps.py new file mode 100644 index 0000000..b623981 --- /dev/null +++ b/online-compiler/compiler/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CompilerConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'compiler' diff --git a/online-compiler/compiler/migrations/__init__.py b/online-compiler/compiler/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/online-compiler/compiler/models.py b/online-compiler/compiler/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/online-compiler/compiler/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/online-compiler/compiler/tests.py b/online-compiler/compiler/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/online-compiler/compiler/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/online-compiler/compiler/urls.py b/online-compiler/compiler/urls.py new file mode 100644 index 0000000..a6d3312 --- /dev/null +++ b/online-compiler/compiler/urls.py @@ -0,0 +1,11 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('run', views.index, name='index'), + path('test_files', views.get_test_file_list, name='get_test_file_list'), + path('test_file/upload', views.upload_java_test_file, name='upload_java_test_file'), + path('test_file/delete', views.delete_test, name='delete_test_file'), + path('generate/grade', views.generate_grade, name='generate_grade'), +] diff --git a/online-compiler/compiler/views.py b/online-compiler/compiler/views.py new file mode 100644 index 0000000..801e808 --- /dev/null +++ b/online-compiler/compiler/views.py @@ -0,0 +1,425 @@ +import os + +from django.http import JsonResponse + +from lib.FileUploader import FileUploader +from lib.java_runner import JavaRunner +from django.views.decorators.csrf import csrf_exempt + +from transformers import AutoTokenizer, AutoModel +from sentence_transformers import SentenceTransformer, util +import torch +import re +from Sastrawi.StopWordRemover.StopWordRemoverFactory import StopWordRemoverFactory + +from Sastrawi.Stemmer.StemmerFactory import StemmerFactory + +import nltk +import logging + + +# Create a logger +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + +# Create a file handler +file_handler = logging.FileHandler('grade_generator.log') +file_handler.setLevel(logging.INFO) + +# Create a console handler +console_handler = logging.StreamHandler() +console_handler.setLevel(logging.INFO) + +# Create a formatter and add it to the handlers +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +file_handler.setFormatter(formatter) +console_handler.setFormatter(formatter) + +# Add the handlers to the logger +logger.addHandler(file_handler) +logger.addHandler(console_handler) + +# ... + +@csrf_exempt +def generate_grade(request): + # ... + + try: + # ... + + logger.info('Grade generated successfully') + return JsonResponse({ + 'output': normalized_value + }, status=200) + except Exception as e: + logger.error(f'Error generating grade: {str(e)}') + return JsonResponse({ + 'error': str(e) + }, status=500) +nltk.download('punkt') +nltk.download('wordnet') +nltk.download('omw-1.4') +nltk.download('punkt_tab') +from nltk.corpus import wordnet + +import numpy as np +from scipy.stats import pearsonr + +@csrf_exempt +def index(request): + user_dir = request.POST["user"] + code = request.POST["code"] + + java_runner = JavaRunner(user_directory=user_dir, code=code) + res = java_runner.run() + + return JsonResponse({ + 'output': res + }, status=200) + + +@csrf_exempt +def upload_java_test_file(request): + file = request.FILES["file"] + fu = FileUploader(filename=file, file=file) + fu.upload() + + return JsonResponse({ + "status": "ok" + }, status=200) + + +def get_test_file_list(request): + print(request) + return JsonResponse({ + "file_list": os.listdir("java_files/test_cases") + }, status=200) + + +@csrf_exempt +def delete_test(request): + filename = request.POST["filename"] + print(filename) + try: + os.remove("java_files/test_cases/{}".format(filename)) + except FileNotFoundError as err: + return JsonResponse({"error": str(err), "status": "failed"}, status=500) + + return JsonResponse({"message": "{} deleted".format(filename), "status": "success"}, status=200) + + +@csrf_exempt +def generate_grade(request): + + esay_answer = request.POST["esay_answer"] + esay_answer2 = request.POST["esay_answer2"] + esay_answer3 = request.POST["esay_answer3"] + esay_answer4 = request.POST["esay_answer4"] + user_answer = request.POST["user_answer"] + + # Fungsi untuk mendapatkan sinonim dari sebuah kata menggunakan WordNet Bahasa Indonesia + # def get_synonyms(word): + # synonyms = [] + # for synset in wordnet.synsets(word, lang='ind'): + # for lemma in synset.lemma_names('ind'): + # synonyms.append(lemma) + # return set(synonyms) + + # Memecah kalimat menjadi kata-kata + # kata_kata1 = nltk.word_tokenize(user_answer) + # kata_kata2 = nltk.word_tokenize(esay_answer) + # kata_kata3 = nltk.word_tokenize(esay_answer2) + # kata_kata4 = nltk.word_tokenize(esay_answer3) + # kata_kata5 = nltk.word_tokenize(esay_answer4) + + # Mencari sinonim dari setiap kata dalam kalimat2 dan mengganti jika sinonimnya ada dalam kalimat1 + # kalimat1_dengan_kalimat2 = [] + # for kata in kata_kata1: + # sinonim_kata1 = get_synonyms(kata) + # if kata in kata_kata2: + # kalimat1_dengan_kalimat2.append(kata) + # elif sinonim_kata1.intersection(set(kata_kata2)): + # kalimat1_dengan_kalimat2.append(list(sinonim_kata1.intersection(set(kata_kata2)))[0]) + # else: + # kalimat1_dengan_kalimat2.append(kata) + + # user_answer = ' '.join(kalimat1_dengan_kalimat2) + # print("\nKalimat 1 dengan sinonim yang berasal dari kalimat 2:") + # print(user_answer) + + # kalimat1_dengan_kalimat3 = [] + # for kata in kata_kata1: + # sinonim_kata1 = get_synonyms(kata) + # if kata in kata_kata3: + # kalimat1_dengan_kalimat3.append(kata) + # elif sinonim_kata1.intersection(set(kata_kata3)): + # kalimat1_dengan_kalimat3.append(list(sinonim_kata1.intersection(set(kata_kata3)))[0]) + # else: + # kalimat1_dengan_kalimat3.append(kata) + + # user_answer = ' '.join(kalimat1_dengan_kalimat3) + # print("\nKalimat 1 dengan sinonim yang berasal dari kalimat 3:") + # print(user_answer) + + # kalimat1_dengan_kalimat4 = [] + # for kata in kata_kata1: + # sinonim_kata1 = get_synonyms(kata) + # if kata in kata_kata4: + # kalimat1_dengan_kalimat4.append(kata) + # elif sinonim_kata1.intersection(set(kata_kata4)): + # kalimat1_dengan_kalimat4.append(list(sinonim_kata1.intersection(set(kata_kata4)))[0]) + # else: + # kalimat1_dengan_kalimat4.append(kata) + + # user_answer = ' '.join(kalimat1_dengan_kalimat4) + # print("\nKalimat 1 dengan sinonim yang berasal dari kalimat 4:") + # print(user_answer) + + # kalimat1_dengan_kalimat5 = [] + # for kata in kata_kata1: + # sinonim_kata1 = get_synonyms(kata) + # if kata in kata_kata5: + # kalimat1_dengan_kalimat5.append(kata) + # elif sinonim_kata1.intersection(set(kata_kata5)): + # kalimat1_dengan_kalimat5.append(list(sinonim_kata1.intersection(set(kata_kata5)))[0]) + # else: + # kalimat1_dengan_kalimat5.append(kata) + + # user_answer = ' '.join(kalimat1_dengan_kalimat5) + # print("\nKalimat 1 dengan sinonim yang berasal dari kalimat 5:") + # print(user_answer) + + # Kalimat yang diproses + sentence1 = user_answer + sentence2 = esay_answer + sentence3 = esay_answer2 + sentence4 = esay_answer3 + sentence5 = esay_answer4 + + # Mengubah kata menjadi huruf kecil + sentence1 = sentence1.lower() + sentence2 = sentence2.lower() + sentence3 = sentence3.lower() + sentence4 = sentence4.lower() + sentence5 = sentence5.lower() + + # Fungsi untuk menghapus tanda baca yang tidak penting + def remove_punctuation(text): + return re.sub(r'[^\w\s+=<>*&%-]', '', text) + + # Menghapus tanda baca yang tidak penting dari setiap kalimat + sentence1 = remove_punctuation(sentence1) + sentence2 = remove_punctuation(sentence2) + sentence3 = remove_punctuation(sentence3) + sentence4 = remove_punctuation(sentence4) + sentence5 = remove_punctuation(sentence5) + + + # Menghapus kata tidak penting + # factory = StopWordRemoverFactory() + # stopwords = factory.create_stop_word_remover() + # sentence1 = stopwords.remove(sentence1) + # sentence2 = stopwords.remove(sentence2) + # sentence3 = stopwords.remove(sentence3) + # sentence4 = stopwords.remove(sentence4) + # sentence5 = stopwords.remove(sentence5) + + # Mengubah kata menjadi bentuk dasar + # Fact = StemmerFactory() + # Stemmer = Fact.create_stemmer() + + # sentence1 = Stemmer.stem(sentence1) + # sentence2 = Stemmer.stem(sentence2) + # sentence3 = Stemmer.stem(sentence3) + # sentence4 = Stemmer.stem(sentence4) + # sentence5 = Stemmer.stem(sentence5) + + # Inisialisasi stemmer + factory = StemmerFactory() + stemmer = factory.create_stemmer() + + # Memisahkan tanda baca dan kata-kata menggunakan tokenizer dari nltk + tokens1 = nltk.word_tokenize(sentence1) + tokens2 = nltk.word_tokenize(sentence2) + tokens3 = nltk.word_tokenize(sentence3) + tokens4 = nltk.word_tokenize(sentence4) + tokens5 = nltk.word_tokenize(sentence5) + + # Melakukan stemming hanya pada kata-kata + stemmed_tokens1 = [stemmer.stem(token) if token.isalpha() else token for token in tokens1] + stemmed_tokens2 = [stemmer.stem(token) if token.isalpha() else token for token in tokens2] + stemmed_tokens3 = [stemmer.stem(token) if token.isalpha() else token for token in tokens3] + stemmed_tokens4 = [stemmer.stem(token) if token.isalpha() else token for token in tokens4] + stemmed_tokens5 = [stemmer.stem(token) if token.isalpha() else token for token in tokens5] + + # Menggabungkan kembali kata-kata yang telah distem ke dalam teks, sambil mempertahankan tanda baca + sentence1 = ' '.join(stemmed_tokens1) + sentence2 = ' '.join(stemmed_tokens2) + sentence3 = ' '.join(stemmed_tokens3) + sentence4 = ' '.join(stemmed_tokens4) + sentence5 = ' '.join(stemmed_tokens5) + + # Load model from HuggingFace Hub + tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/paraphrase-multilingual-mpnet-base-v2') + model = AutoModel.from_pretrained('sentence-transformers/paraphrase-multilingual-mpnet-base-v2') + + # Tokenize sentences + encoded_input1 = tokenizer(sentence1, padding=True, truncation=True, return_tensors='pt') + encoded_input2 = tokenizer(sentence2, padding=True, truncation=True, return_tensors='pt') + encoded_input3 = tokenizer(sentence3, padding=True, truncation=True, return_tensors='pt') + encoded_input4 = tokenizer(sentence4, padding=True, truncation=True, return_tensors='pt') + encoded_input5 = tokenizer(sentence5, padding=True, truncation=True, return_tensors='pt') + + # Compute token embeddings for each sentence + with torch.no_grad(): + model_output1 = model(**encoded_input1) + model_output2 = model(**encoded_input2) + model_output3 = model(**encoded_input3) + model_output4 = model(**encoded_input4) + model_output5 = model(**encoded_input5) + + # Mean Pooling - Take attention mask into account for correct averaging + def mean_pooling(model_output, attention_mask): + token_embeddings = model_output.last_hidden_state + input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() + return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9) + + # Perform pooling. In this case, average pooling + sentence_embeddings1 = mean_pooling(model_output1, encoded_input1['attention_mask']) + sentence_embeddings2 = mean_pooling(model_output2, encoded_input2['attention_mask']) + sentence_embeddings3 = mean_pooling(model_output3, encoded_input3['attention_mask']) + sentence_embeddings4 = mean_pooling(model_output4, encoded_input4['attention_mask']) + sentence_embeddings5 = mean_pooling(model_output5, encoded_input5['attention_mask']) + + # print("Sentence Embedding 1:", sentence_embeddings1) + # print("Sentence Embedding 2:", sentence_embeddings2) + # print("Sentence Embedding 3:", sentence_embeddings3) + # print("Sentence Embedding 4:", sentence_embeddings4) + # print("Sentence Embedding 5:", sentence_embeddings5) + + + # Compute cosine-similarities + # cosine_scores = util.cos_sim(sentence_embeddings1, sentence_embeddings2) + # print("Cosine Similarity:", cosine_scores[0][0].item()) + + # cosine_scores = util.cos_sim(sentence_embeddings1, sentence_embeddings3) + # print("Cosine Similarity:", cosine_scores[0][0].item()) + + # cosine_scores = util.cos_sim(sentence_embeddings1, sentence_embeddings4) + # print("Cosine Similarity:", cosine_scores[0][0].item()) + + # cosine_scores = util.cos_sim(sentence_embeddings1, sentence_embeddings5) + # print("Cosine Similarity:", cosine_scores[0][0].item()) + + # Daftar vektor embedding + sentence_embeddings_list = [sentence_embeddings2, sentence_embeddings3, sentence_embeddings4, sentence_embeddings5] + + # Variabel untuk menyimpan nilai cosine similarity tertinggi dan indeksnya + max_cosine_similarity = float('-inf') + max_cosine_similarity_index = None + + # Dictionary untuk menyimpan hasil cosine similarity + cosine_similarities = {} + + # Compute and store cosine similarities for each embedding + for i, embeddings in enumerate(sentence_embeddings_list, start=2): + cosine_scores = util.cos_sim(sentence_embeddings1, embeddings) + cosine_similarity = cosine_scores[0][0].item() + cosine_similarities[f'sentence_embeddings{i}'] = cosine_similarity + + # Memeriksa apakah nilai cosine similarity saat ini lebih tinggi dari nilai maksimum sebelumnya + if cosine_similarity > max_cosine_similarity: + max_cosine_similarity = cosine_similarity + max_cosine_similarity_index = i + + + print(f"Cosine similarity {cosine_similarities}") + print(f"Max Cosine similarity {max_cosine_similarity_index}: { max_cosine_similarity}") + + + def normalize_cosine_similarity(cosine_similarity): + # Rentang awal dari cosine similarity (biasanya 0 sampai 1) + X_min = 0 + X_max = 1 + + # Rentang tujuan yang diinginkan + new_min = 0 + new_max = 20 + + # Menghitung nilai yang dinormalisasi + normalized_value = (max_cosine_similarity - X_min) / (X_max - X_min) * (new_max - new_min) + new_min + + # Bulatkan nilai yang sudah dinormalisasi + rounded_normalized_value = round(normalized_value) + + return rounded_normalized_value + + normalized_value = normalize_cosine_similarity(max_cosine_similarity) + + print(f"Nilai yang sudah dinormalisasi dan dibulatkan ke rentang [0, 20]: {normalized_value}") + + + # def mae(y_true, predictions): + # y_true, predictions = np.array(y_true), np.array(predictions) + # return np.mean(np.abs(y_true - predictions)) + + # def mse(y_true, predictions): + # y_true, predictions = np.array(y_true), np.array(predictions) + # return np.mean((y_true - predictions) ** 2) + + # def pearson_correlation(y_true, predictions): + # Hitung koefisien korelasi Pearson menggunakan np.corrcoef + # correlation_matrix = np.corrcoef(y_true, predictions) + + # Ambil elemen di baris pertama dan kolom kedua (karena kita ingin mendapatkan korelasi antara y_true dan predictions) + # correlation_coefficient = correlation_matrix[0, 1] + + # return correlation_coefficient + + + def mae(y_true, predictions): + # Menghitung Mean Absolute Error + absolute_errors = np.abs(np.subtract(y_true, predictions)) + return np.mean(absolute_errors) + + def mse(y_true, predictions): + # Menghitung Mean Squared Error + squared_errors = np.square(np.subtract(y_true, predictions)) + return np.mean(squared_errors) + + def pearson_correlation(y_true, predictions): + # Calculate the mean of y_true and predictions + mean_y_true = np.mean(y_true) + mean_predictions = np.mean(predictions) + + # Calculate the covariance + covariance = np.mean((y_true - mean_y_true) * (predictions - mean_predictions)) + + # Calculate the standard deviation of y_true and predictions + std_y_true = np.std(y_true) + std_predictions = np.std(predictions) + + # Calculate the Pearson correlation coefficient + correlation_coefficient = covariance / (std_y_true * std_predictions) + + return correlation_coefficient + + # true = [sentence_embeddings2, sentence_embeddings3, sentence_embeddings4, sentence_embeddings5] + # predicted = [sentence_embeddings1, sentence_embeddings1, sentence_embeddings1, sentence_embeddings1] + + true = np.array([sentence_embeddings2, sentence_embeddings3, sentence_embeddings4, sentence_embeddings5]) + predicted = np.array([sentence_embeddings1, sentence_embeddings1, sentence_embeddings1, sentence_embeddings1]) + + for i in range(len(true)): + mae_value = mae(true[i], predicted[i]) + mse_value = mse(true[i], predicted[i]) + correlation_coefficient = pearson_correlation(true[i], predicted[i]) + print(f'MAE for pair {i+2}: {mae_value}') + print(f'MSE for pair {i+2}: {mse_value}') + print(f'Koefisien Korelasi Pearson {i+2}: {correlation_coefficient}') + + return JsonResponse({ + # 'output': cosine_scores[0][0].item() + 'output': normalized_value + }, status=200) \ No newline at end of file diff --git a/online-compiler/db.sqlite3 b/online-compiler/db.sqlite3 new file mode 100644 index 0000000..7a89112 Binary files /dev/null and b/online-compiler/db.sqlite3 differ diff --git a/online-compiler/grade_generator.log b/online-compiler/grade_generator.log new file mode 100644 index 0000000..e69de29 diff --git a/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..24f8ec5 Binary files /dev/null and b/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..2df0d60 --- /dev/null +++ b/online-compiler/java_files/abc_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package abc_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + abc_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/abc_gmail_com/TipeData.class b/online-compiler/java_files/abc_gmail_com/TipeData.class new file mode 100644 index 0000000..25c9713 Binary files /dev/null and b/online-compiler/java_files/abc_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/abc_gmail_com/TipeData.java b/online-compiler/java_files/abc_gmail_com/TipeData.java new file mode 100644 index 0000000..b02ddf3 --- /dev/null +++ b/online-compiler/java_files/abc_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package abc_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/admin_admin_com/.gitignore b/online-compiler/java_files/admin_admin_com/.gitignore new file mode 100644 index 0000000..2a90658 --- /dev/null +++ b/online-compiler/java_files/admin_admin_com/.gitignore @@ -0,0 +1,4 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitMyClassTest.class +/MyClass.class diff --git a/online-compiler/java_files/admin_admin_com/HelloWorld.java b/online-compiler/java_files/admin_admin_com/HelloWorld.java new file mode 100644 index 0000000..983a64d --- /dev/null +++ b/online-compiler/java_files/admin_admin_com/HelloWorld.java @@ -0,0 +1,7 @@ +package admin_admin_com; + +public class HelloWorld{ +public static void main(String[] args){ + System.out.print("Hello World!"); +} +} \ No newline at end of file diff --git a/online-compiler/java_files/admin_admin_com/JUnitHelloWorldTest.java b/online-compiler/java_files/admin_admin_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..bab9e67 --- /dev/null +++ b/online-compiler/java_files/admin_admin_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package admin_admin_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + admin_admin_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/admin_admin_com/JUnitMyClassTest.java b/online-compiler/java_files/admin_admin_com/JUnitMyClassTest.java new file mode 100644 index 0000000..ba63b6b --- /dev/null +++ b/online-compiler/java_files/admin_admin_com/JUnitMyClassTest.java @@ -0,0 +1,32 @@ +package admin_admin_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isMyClassTest() { + admin_admin_com.MyClass.Double(35.5); + assertEquals("Is Double Result", "Result = 35.5", outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/admin_admin_com/MyClass.java b/online-compiler/java_files/admin_admin_com/MyClass.java new file mode 100644 index 0000000..1257612 --- /dev/null +++ b/online-compiler/java_files/admin_admin_com/MyClass.java @@ -0,0 +1,14 @@ +package admin_admin_com; + +public class MyClass { + public static void main(String args[]){ + Double result = new Double(); + System.out.print("Result = " + result); + } + public void Double(double result){ + int y = 20; + float x = 10.5; + double result = x + y; + return result; + } +} \ No newline at end of file diff --git a/online-compiler/java_files/adminku_gmail_com/.gitignore b/online-compiler/java_files/adminku_gmail_com/.gitignore new file mode 100644 index 0000000..cc71f4c --- /dev/null +++ b/online-compiler/java_files/adminku_gmail_com/.gitignore @@ -0,0 +1,4 @@ +/JUnitOrderCaseTest.class +/JUnitPoetryTest.class +/OrderCase.class +/Poetry.class diff --git a/online-compiler/java_files/adminku_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/adminku_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..fb7659a --- /dev/null +++ b/online-compiler/java_files/adminku_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package adminku_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + adminku_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = adminku_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/adminku_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/adminku_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..5c51d5c --- /dev/null +++ b/online-compiler/java_files/adminku_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package adminku_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + adminku_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = adminku_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/adminku_gmail_com/OrderCase.java b/online-compiler/java_files/adminku_gmail_com/OrderCase.java new file mode 100644 index 0000000..351630a --- /dev/null +++ b/online-compiler/java_files/adminku_gmail_com/OrderCase.java @@ -0,0 +1,45 @@ +package adminku_gmail_com; + +public class OrderCase { + boolean isFilled; + double billAmount; + String shipping; + + public OrderCase(boolean filled, double cost, String shippingMethod) { + isFilled = filled; + billAmount = cost; + shipping = shippingMethod; + } + + public void ship() { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping()); + } else { + System.out.print("Order not ready"); + } + } + + public double calculateShipping() { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + OrderCase book = new OrderCase(true, 9.99, "Express"); + + book.ship(); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/adminku_gmail_com/Poetry.java b/online-compiler/java_files/adminku_gmail_com/Poetry.java new file mode 100644 index 0000000..08d8fcc --- /dev/null +++ b/online-compiler/java_files/adminku_gmail_com/Poetry.java @@ -0,0 +1,14 @@ +package adminku_gmail_com; + + + +public class Poetry { + + public static void main(String[] args) { + + String line = "The Heav'ns and all the Constellations rung"; + // Change the arguments: + System.out.print(line.substring(4,12)); + + } +} diff --git a/online-compiler/java_files/baru_gmail_com/Angka.class b/online-compiler/java_files/baru_gmail_com/Angka.class new file mode 100644 index 0000000..7a06365 Binary files /dev/null and b/online-compiler/java_files/baru_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/baru_gmail_com/Angka.java b/online-compiler/java_files/baru_gmail_com/Angka.java new file mode 100644 index 0000000..3eb2814 --- /dev/null +++ b/online-compiler/java_files/baru_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package baru_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..08b76a2 Binary files /dev/null and b/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..662f651 --- /dev/null +++ b/online-compiler/java_files/baru_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package baru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + baru_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..359cc20 Binary files /dev/null and b/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..b595490 --- /dev/null +++ b/online-compiler/java_files/baru_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package baru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + baru_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/baru_gmail_com/TipeData.class b/online-compiler/java_files/baru_gmail_com/TipeData.class new file mode 100644 index 0000000..5af5166 Binary files /dev/null and b/online-compiler/java_files/baru_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/baru_gmail_com/TipeData.java b/online-compiler/java_files/baru_gmail_com/TipeData.java new file mode 100644 index 0000000..ec3a4e5 --- /dev/null +++ b/online-compiler/java_files/baru_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package baru_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/della_gmail_com/Angka.class b/online-compiler/java_files/della_gmail_com/Angka.class new file mode 100644 index 0000000..e379f31 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/della_gmail_com/Angka.java b/online-compiler/java_files/della_gmail_com/Angka.java new file mode 100644 index 0000000..4c542a6 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package della_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/della_gmail_com/Average.class b/online-compiler/java_files/della_gmail_com/Average.class new file mode 100644 index 0000000..0133ba7 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Average.class differ diff --git a/online-compiler/java_files/della_gmail_com/Average.java b/online-compiler/java_files/della_gmail_com/Average.java new file mode 100644 index 0000000..fda3b6e --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Average.java @@ -0,0 +1,18 @@ +package della_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/della_gmail_com/Bank.class b/online-compiler/java_files/della_gmail_com/Bank.class new file mode 100644 index 0000000..74f67b2 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/della_gmail_com/Bank.java b/online-compiler/java_files/della_gmail_com/Bank.java new file mode 100644 index 0000000..a614621 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package della_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/della_gmail_com/BookStore.class b/online-compiler/java_files/della_gmail_com/BookStore.class new file mode 100644 index 0000000..21413b2 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/della_gmail_com/BookStore.java b/online-compiler/java_files/della_gmail_com/BookStore.java new file mode 100644 index 0000000..604e4fd --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package della_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/della_gmail_com/Fibonacci.class b/online-compiler/java_files/della_gmail_com/Fibonacci.class new file mode 100644 index 0000000..64fc083 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/della_gmail_com/Fibonacci.java b/online-compiler/java_files/della_gmail_com/Fibonacci.java new file mode 100644 index 0000000..33ea83e --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package della_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..f46bb19 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..8d2e70e --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + della_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/della_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/della_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..5d63015 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/della_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..6bd50a9 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + della_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/della_gmail_com/JUnitBankTest.class b/online-compiler/java_files/della_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..fe04067 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitBankTest.java b/online-compiler/java_files/della_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..7d3d621 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = della_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + della_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..5ac1f93 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..c696dd9 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + della_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..35068b6 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..7ddd756 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + della_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..2cdbbe5 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..e79a1e5 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = della_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = della_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + della_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..de4db85 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..69838d0 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + della_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..660553d Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..a757051 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + della_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..3312cf8 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..e1b2be8 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + della_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..022a994 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..87a3d41 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + della_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/della_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..a50910f Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/della_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..a1f9e65 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + della_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..2c61ee1 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..809b33a --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + della_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..e20e47e Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..b72cb03 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package della_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + della_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/della_gmail_com/Lingkaran.class b/online-compiler/java_files/della_gmail_com/Lingkaran.class new file mode 100644 index 0000000..f70b4bd Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/della_gmail_com/Lingkaran.java b/online-compiler/java_files/della_gmail_com/Lingkaran.java new file mode 100644 index 0000000..161b4b6 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package della_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/della_gmail_com/LuckyFive.class b/online-compiler/java_files/della_gmail_com/LuckyFive.class new file mode 100644 index 0000000..36158ab Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/della_gmail_com/LuckyFive.java b/online-compiler/java_files/della_gmail_com/LuckyFive.java new file mode 100644 index 0000000..620bf2a --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package della_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..0a31117 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..8707d7e --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package della_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/della_gmail_com/NewsFeed.class b/online-compiler/java_files/della_gmail_com/NewsFeed.class new file mode 100644 index 0000000..9e9f3df Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/della_gmail_com/NewsFeed.java b/online-compiler/java_files/della_gmail_com/NewsFeed.java new file mode 100644 index 0000000..96026ae --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package della_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/della_gmail_com/Order.class b/online-compiler/java_files/della_gmail_com/Order.class new file mode 100644 index 0000000..de25b62 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/Order.class differ diff --git a/online-compiler/java_files/della_gmail_com/Order.java b/online-compiler/java_files/della_gmail_com/Order.java new file mode 100644 index 0000000..169eec8 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/Order.java @@ -0,0 +1,15 @@ +package della_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/della_gmail_com/OrderCase.class b/online-compiler/java_files/della_gmail_com/OrderCase.class new file mode 100644 index 0000000..91a019c Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/della_gmail_com/OrderCase.java b/online-compiler/java_files/della_gmail_com/OrderCase.java new file mode 100644 index 0000000..f01be28 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package della_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/della_gmail_com/SecondPiramid.class b/online-compiler/java_files/della_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..6fe84a9 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/della_gmail_com/SecondPiramid.java b/online-compiler/java_files/della_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..66329ec --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package della_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/della_gmail_com/TipeData.class b/online-compiler/java_files/della_gmail_com/TipeData.class new file mode 100644 index 0000000..b36f848 Binary files /dev/null and b/online-compiler/java_files/della_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/della_gmail_com/TipeData.java b/online-compiler/java_files/della_gmail_com/TipeData.java new file mode 100644 index 0000000..319ae36 --- /dev/null +++ b/online-compiler/java_files/della_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package della_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/fransiskaly_gmail_com/.gitignore b/online-compiler/java_files/fransiskaly_gmail_com/.gitignore new file mode 100644 index 0000000..e9f12bc --- /dev/null +++ b/online-compiler/java_files/fransiskaly_gmail_com/.gitignore @@ -0,0 +1,2 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class diff --git a/online-compiler/java_files/fransiskaly_gmail_com/HelloWorld.java b/online-compiler/java_files/fransiskaly_gmail_com/HelloWorld.java new file mode 100644 index 0000000..0e6e1e1 --- /dev/null +++ b/online-compiler/java_files/fransiskaly_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package fransiskaly_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} diff --git a/online-compiler/java_files/fransiskaly_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/fransiskaly_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..e511f91 --- /dev/null +++ b/online-compiler/java_files/fransiskaly_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package fransiskaly_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + fransiskaly_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/.gitignore b/online-compiler/java_files/gaga_gmail_com/.gitignore new file mode 100644 index 0000000..9a67ca4 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/.gitignore @@ -0,0 +1,12 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitLuckyFiveTest.class +/JUnitMyClassTest.class +/JUnitOrderTest.class +/JUnitPasswordTest.class +/JUnitPoetryTest.class +/LuckyFive.class +/MyClass.class +/Order.class +/Password.class +/Poetry.class diff --git a/online-compiler/java_files/gaga_gmail_com/HelloWorld.java b/online-compiler/java_files/gaga_gmail_com/HelloWorld.java new file mode 100644 index 0000000..6b493c7 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package gaga_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..80b3510 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package gaga_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + gaga_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..cba55e0 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package gaga_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + gaga_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + gaga_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..24e231e --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package gaga_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + gaga_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = gaga_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..d1396b9 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package gaga_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + gaga_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = gaga_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..9ba5f7a --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package gaga_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + gaga_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = gaga_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/gaga_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..8d81419 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package gaga_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + gaga_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = gaga_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/gaga_gmail_com/LuckyFive.java b/online-compiler/java_files/gaga_gmail_com/LuckyFive.java new file mode 100644 index 0000000..3476485 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package gaga_gmail_com; + +public class LuckyFive { + + public void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/gaga_gmail_com/MyClass.java b/online-compiler/java_files/gaga_gmail_com/MyClass.java new file mode 100644 index 0000000..9af27c4 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/MyClass.java @@ -0,0 +1,19 @@ +package gaga_gmail_com; + + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/gaga_gmail_com/Order.java b/online-compiler/java_files/gaga_gmail_com/Order.java new file mode 100644 index 0000000..1012e5c --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/Order.java @@ -0,0 +1,15 @@ +package gaga_gmail_com; + +public class Order { + public static void main(String[] args) { + double itemCost = 30.99; + String order; + + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/gaga_gmail_com/Password.java b/online-compiler/java_files/gaga_gmail_com/Password.java new file mode 100644 index 0000000..18b7f70 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/Password.java @@ -0,0 +1,15 @@ +package gaga_gmail_com; + +public class Password { + + public static void main(String[] args) { + + String password = "correcthorsebatterystaple"; + + // Write the code: + System.out.print(password.compareTo("correcthorsebatterystaple")); + System.out.print(password.equals("correcthorsebatterystaple")); + + } + + } \ No newline at end of file diff --git a/online-compiler/java_files/gaga_gmail_com/Poetry.java b/online-compiler/java_files/gaga_gmail_com/Poetry.java new file mode 100644 index 0000000..cc4ded7 --- /dev/null +++ b/online-compiler/java_files/gaga_gmail_com/Poetry.java @@ -0,0 +1,12 @@ +package gaga_gmail_com; + +public class Poetry { + + public static void main(String[] args) { + + String line = "The Heav'ns and all the Constellations rung"; + // Change the arguments: + System.out.print(line.substring(4, 11)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/ifa_gmail_com/Angka.class b/online-compiler/java_files/ifa_gmail_com/Angka.class new file mode 100644 index 0000000..aec6420 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/Angka.java b/online-compiler/java_files/ifa_gmail_com/Angka.java new file mode 100644 index 0000000..498810f --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package ifa_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/ifa_gmail_com/BookStore.class b/online-compiler/java_files/ifa_gmail_com/BookStore.class new file mode 100644 index 0000000..9e95103 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/BookStore.java b/online-compiler/java_files/ifa_gmail_com/BookStore.java new file mode 100644 index 0000000..77f221a --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package ifa_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/Fibonacci.class b/online-compiler/java_files/ifa_gmail_com/Fibonacci.class new file mode 100644 index 0000000..4c45844 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/Fibonacci.java b/online-compiler/java_files/ifa_gmail_com/Fibonacci.java new file mode 100644 index 0000000..d3995bc --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package ifa_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..f2020f5 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..f125e89 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + ifa_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..6e4a230 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..b66a71c --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + ifa_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..af21bfa Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..0f28a61 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + ifa_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..7af8d8d Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..715e3b0 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + ifa_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..1557b79 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..c0dc266 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + ifa_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..058e05b Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..47a785a --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + ifa_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..56fbe5a Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..6cf71ff --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + ifa_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..1842869 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..7c61890 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + ifa_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..639d854 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..03744c0 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + ifa_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..2ae7e26 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..2f4df60 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package ifa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + ifa_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/ifa_gmail_com/LuckyFive.class b/online-compiler/java_files/ifa_gmail_com/LuckyFive.class new file mode 100644 index 0000000..3434030 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/LuckyFive.java b/online-compiler/java_files/ifa_gmail_com/LuckyFive.java new file mode 100644 index 0000000..f631ea8 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package ifa_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..d817929 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..9277fe8 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package ifa_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/NewsFeed.class b/online-compiler/java_files/ifa_gmail_com/NewsFeed.class new file mode 100644 index 0000000..d19c889 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/NewsFeed.java b/online-compiler/java_files/ifa_gmail_com/NewsFeed.java new file mode 100644 index 0000000..cb28d65 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package ifa_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/Order.class b/online-compiler/java_files/ifa_gmail_com/Order.class new file mode 100644 index 0000000..be1edfb Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/Order.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/Order.java b/online-compiler/java_files/ifa_gmail_com/Order.java new file mode 100644 index 0000000..40384f5 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/Order.java @@ -0,0 +1,15 @@ +package ifa_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/OrderCase.class b/online-compiler/java_files/ifa_gmail_com/OrderCase.class new file mode 100644 index 0000000..0dcae79 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/OrderCase.java b/online-compiler/java_files/ifa_gmail_com/OrderCase.java new file mode 100644 index 0000000..ff5bf6e --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package ifa_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/SecondPiramid.class b/online-compiler/java_files/ifa_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..79c80a4 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/SecondPiramid.java b/online-compiler/java_files/ifa_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..951729d --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package ifa_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/ifa_gmail_com/TipeData.class b/online-compiler/java_files/ifa_gmail_com/TipeData.class new file mode 100644 index 0000000..f405e40 Binary files /dev/null and b/online-compiler/java_files/ifa_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/ifa_gmail_com/TipeData.java b/online-compiler/java_files/ifa_gmail_com/TipeData.java new file mode 100644 index 0000000..1a43318 --- /dev/null +++ b/online-compiler/java_files/ifa_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package ifa_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/irul_gmail_com/.gitignore b/online-compiler/java_files/irul_gmail_com/.gitignore new file mode 100644 index 0000000..81cd574 --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/.gitignore @@ -0,0 +1,5 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitOrderTest.class +/MyClasss.class +/Order.class diff --git a/online-compiler/java_files/irul_gmail_com/HelloWorld.java b/online-compiler/java_files/irul_gmail_com/HelloWorld.java new file mode 100644 index 0000000..b23794c --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package irul_gmail_com; + +class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/irul_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/irul_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..a2bb92d --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package irul_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + irul_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/irul_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/irul_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..8901470 --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package irul_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + irul_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = irul_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/irul_gmail_com/MyClasss.java b/online-compiler/java_files/irul_gmail_com/MyClasss.java new file mode 100644 index 0000000..04a6541 --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/MyClasss.java @@ -0,0 +1,18 @@ +package irul_gmail_com; + +public class MyClasss { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/irul_gmail_com/Order.java b/online-compiler/java_files/irul_gmail_com/Order.java new file mode 100644 index 0000000..56de210 --- /dev/null +++ b/online-compiler/java_files/irul_gmail_com/Order.java @@ -0,0 +1,14 @@ +package irul_gmail_com; + +public class Order { + public static void main(String[] args) { + double itemCost = 30.99; + String order; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.class new file mode 100644 index 0000000..4c70d6a Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.java new file mode 100644 index 0000000..b7a767a --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabanbenarori_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Average.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Average.class new file mode 100644 index 0000000..1e73f87 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Average.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Average.java new file mode 100644 index 0000000..a95520f --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabanbenarori_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.class new file mode 100644 index 0000000..faf1e40 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.java new file mode 100644 index 0000000..976d81b --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabanbenarori_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.class b/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.class new file mode 100644 index 0000000..a8e416f Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.java b/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.java new file mode 100644 index 0000000..4230eaa --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabanbenarori_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.class new file mode 100644 index 0000000..103c65d Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.java new file mode 100644 index 0000000..ef3c4aa --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabanbenarori_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..9400ddd Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..e63a10c --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanbenarori_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..da627a9 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..0d757b1 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanbenarori_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..d89f51c Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..d222081 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabanbenarori_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabanbenarori_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..72d8890 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..b7ca4b2 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanbenarori_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..dabc1c7 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..c1ce3df --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabanbenarori_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..3f29501 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..2f8cc1e --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabanbenarori_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabanbenarori_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabanbenarori_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..9879eb9 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..01ec3f4 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabanbenarori_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..dded738 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..c4c153b --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabanbenarori_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..53396aa Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..5137768 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabanbenarori_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..639e32d Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..1c96726 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabanbenarori_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..ffb8e83 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..d125c27 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabanbenarori_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..0ab2f0f Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..4807322 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabanbenarori_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..37d7910 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..e7b7b04 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabanbenarori_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabanbenarori_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.class new file mode 100644 index 0000000..4a9e701 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.java new file mode 100644 index 0000000..9160494 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabanbenarori_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.class new file mode 100644 index 0000000..64ad90f Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.java new file mode 100644 index 0000000..e4867ab --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabanbenarori_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..9112e8a Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..d4d97ad --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabanbenarori_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.class new file mode 100644 index 0000000..c36a797 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.java new file mode 100644 index 0000000..8c48715 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabanbenarori_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Order.class b/online-compiler/java_files/jawabanbenarori_gmail_com/Order.class new file mode 100644 index 0000000..e92a978 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/Order.java b/online-compiler/java_files/jawabanbenarori_gmail_com/Order.java new file mode 100644 index 0000000..83ffb68 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabanbenarori_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.class b/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.class new file mode 100644 index 0000000..6d56f79 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.java b/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.java new file mode 100644 index 0000000..3e81670 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabanbenarori_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..16b5c42 Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..54f4e35 --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabanbenarori_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.class b/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.class new file mode 100644 index 0000000..0190a9e Binary files /dev/null and b/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.java b/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.java new file mode 100644 index 0000000..f2c5efe --- /dev/null +++ b/online-compiler/java_files/jawabanbenarori_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabanbenarori_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Angka.class b/online-compiler/java_files/jawabanlower_gmail_com/Angka.class new file mode 100644 index 0000000..1982c5b Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Angka.java b/online-compiler/java_files/jawabanlower_gmail_com/Angka.java new file mode 100644 index 0000000..6cdd98a --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabanlower_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Average.class b/online-compiler/java_files/jawabanlower_gmail_com/Average.class new file mode 100644 index 0000000..406f68c Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Average.java b/online-compiler/java_files/jawabanlower_gmail_com/Average.java new file mode 100644 index 0000000..f6745f4 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabanlower_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Bank.class b/online-compiler/java_files/jawabanlower_gmail_com/Bank.class new file mode 100644 index 0000000..815e54b Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Bank.java b/online-compiler/java_files/jawabanlower_gmail_com/Bank.java new file mode 100644 index 0000000..3a81b82 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabanlower_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/BookStore.class b/online-compiler/java_files/jawabanlower_gmail_com/BookStore.class new file mode 100644 index 0000000..e3513d3 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/BookStore.java b/online-compiler/java_files/jawabanlower_gmail_com/BookStore.java new file mode 100644 index 0000000..440fc89 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabanlower_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.class new file mode 100644 index 0000000..0fdd067 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.java new file mode 100644 index 0000000..65cc1a7 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabanlower_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..e92ae9e Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..79e3eef --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanlower_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..6d7cb6e Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..9c6fde4 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanlower_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..8a9871d Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..b34c492 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabanlower_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabanlower_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..c7d3fad Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..76a6540 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabanlower_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..9c99f2d Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..029ebdd --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabanlower_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..2d7c253 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..3f0bc8e --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabanlower_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabanlower_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabanlower_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..d2871be Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..1e15623 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabanlower_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..acb824e Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..63879eb --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabanlower_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..d089eef Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..b4d8feb --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabanlower_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..8474f79 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..ad58b4a --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabanlower_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..8b0e4d2 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..f7ef969 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabanlower_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..7669e65 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..e78b656 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabanlower_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..ab75eeb Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..3c53420 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabanlower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabanlower_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.class new file mode 100644 index 0000000..8b0e230 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.java new file mode 100644 index 0000000..08007c9 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabanlower_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.class new file mode 100644 index 0000000..467c150 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.java new file mode 100644 index 0000000..7ab6f7b --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabanlower_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..0c333b3 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..a27b650 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabanlower_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.class new file mode 100644 index 0000000..e687bff Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.java new file mode 100644 index 0000000..320fe0a --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabanlower_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Order.class b/online-compiler/java_files/jawabanlower_gmail_com/Order.class new file mode 100644 index 0000000..9a604b0 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/Order.java b/online-compiler/java_files/jawabanlower_gmail_com/Order.java new file mode 100644 index 0000000..3f2db5b --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabanlower_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.class b/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.class new file mode 100644 index 0000000..a9b6e35 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.java b/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.java new file mode 100644 index 0000000..dcd26eb --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabanlower_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..51f19ad Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..de5d46f --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabanlower_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabanlower_gmail_com/TipeData.class b/online-compiler/java_files/jawabanlower_gmail_com/TipeData.class new file mode 100644 index 0000000..d1c7281 Binary files /dev/null and b/online-compiler/java_files/jawabanlower_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabanlower_gmail_com/TipeData.java b/online-compiler/java_files/jawabanlower_gmail_com/TipeData.java new file mode 100644 index 0000000..fd3a1b4 --- /dev/null +++ b/online-compiler/java_files/jawabanlower_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabanlower_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Angka.class b/online-compiler/java_files/jawabansinonim_gmail_com/Angka.class new file mode 100644 index 0000000..14888be Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Angka.java b/online-compiler/java_files/jawabansinonim_gmail_com/Angka.java new file mode 100644 index 0000000..71adee5 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabansinonim_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Average.class b/online-compiler/java_files/jawabansinonim_gmail_com/Average.class new file mode 100644 index 0000000..33b76c1 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Average.java b/online-compiler/java_files/jawabansinonim_gmail_com/Average.java new file mode 100644 index 0000000..fdec3de --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabansinonim_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Bank.class b/online-compiler/java_files/jawabansinonim_gmail_com/Bank.class new file mode 100644 index 0000000..8c0c6d2 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Bank.java b/online-compiler/java_files/jawabansinonim_gmail_com/Bank.java new file mode 100644 index 0000000..90b9399 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabansinonim_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.class b/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.class new file mode 100644 index 0000000..c363325 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.java b/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.java new file mode 100644 index 0000000..42e0c2d --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabansinonim_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.class new file mode 100644 index 0000000..d733d36 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.java new file mode 100644 index 0000000..d72697d --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabansinonim_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..19f3842 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..8116a4c --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansinonim_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..45e1692 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..f83e595 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansinonim_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..e098643 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..9612884 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabansinonim_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabansinonim_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..d190702 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..5de05f6 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansinonim_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..8145782 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..e6fb4ee --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabansinonim_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..024d30a Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..d8cd15b --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabansinonim_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabansinonim_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabansinonim_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..b9146cf Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..9fa652c --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabansinonim_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..1f54f16 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..dca0dc3 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabansinonim_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..1dc749c Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..6c72b10 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabansinonim_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..b8387e9 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..e7db672 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabansinonim_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..f13b57b Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..3be1efd --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabansinonim_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..af99770 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..250821a --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabansinonim_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..69d8ed0 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..2542ecb --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabansinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabansinonim_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.class new file mode 100644 index 0000000..65fb492 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.java new file mode 100644 index 0000000..d8109cf --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabansinonim_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.class new file mode 100644 index 0000000..74cb3b0 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.java new file mode 100644 index 0000000..e8669e2 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabansinonim_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..b63f66f Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..d9d19f9 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabansinonim_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.class new file mode 100644 index 0000000..ed81944 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.java new file mode 100644 index 0000000..17f80de --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabansinonim_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Order.class b/online-compiler/java_files/jawabansinonim_gmail_com/Order.class new file mode 100644 index 0000000..ec89aa2 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/Order.java b/online-compiler/java_files/jawabansinonim_gmail_com/Order.java new file mode 100644 index 0000000..e9c483f --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabansinonim_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.class b/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.class new file mode 100644 index 0000000..3968f9c Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.java b/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.java new file mode 100644 index 0000000..46c93f5 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabansinonim_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..18dd076 Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..a26be23 --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabansinonim_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.class b/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.class new file mode 100644 index 0000000..17a7b4b Binary files /dev/null and b/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.java b/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.java new file mode 100644 index 0000000..b6c7cdb --- /dev/null +++ b/online-compiler/java_files/jawabansinonim_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabansinonim_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Angka.class b/online-compiler/java_files/jawabansteeming_gmail_com/Angka.class new file mode 100644 index 0000000..79e8673 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Angka.java b/online-compiler/java_files/jawabansteeming_gmail_com/Angka.java new file mode 100644 index 0000000..a29bea7 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabansteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Average.class b/online-compiler/java_files/jawabansteeming_gmail_com/Average.class new file mode 100644 index 0000000..620b065 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Average.java b/online-compiler/java_files/jawabansteeming_gmail_com/Average.java new file mode 100644 index 0000000..fb82ae0 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabansteeming_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Bank.class b/online-compiler/java_files/jawabansteeming_gmail_com/Bank.class new file mode 100644 index 0000000..868cda9 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Bank.java b/online-compiler/java_files/jawabansteeming_gmail_com/Bank.java new file mode 100644 index 0000000..749e177 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabansteeming_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.class b/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..ef2d79d Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.java b/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..d1e51d5 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabansteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.class new file mode 100644 index 0000000..ba95fbb Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.java new file mode 100644 index 0000000..afdbfbc --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabansteeming_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..1f163f2 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..c41fabe --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..3cddf83 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..c36c851 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansteeming_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..28ea329 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..c5febae --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabansteeming_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabansteeming_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..6d58f35 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..88ec1a4 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabansteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..4a49ded Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..c3a2b48 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabansteeming_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..c4948f7 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..4ea88b8 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabansteeming_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabansteeming_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabansteeming_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..48523ae Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..ea5b248 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabansteeming_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..4144717 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..752aa27 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabansteeming_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..c1dea00 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..c93f447 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabansteeming_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..828f812 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..1075f2e --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabansteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..34b33f8 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..8cd00f5 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabansteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..6868004 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..eae8a1f --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabansteeming_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..692e6c5 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..d6a5f2d --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabansteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabansteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.class new file mode 100644 index 0000000..26684d7 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.java new file mode 100644 index 0000000..4a3870d --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabansteeming_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.class new file mode 100644 index 0000000..fb062d7 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.java new file mode 100644 index 0000000..3970a84 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabansteeming_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..24c768b Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e93abfb --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabansteeming_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.class new file mode 100644 index 0000000..1ce6d96 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.java new file mode 100644 index 0000000..cbe54f2 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabansteeming_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Order.class b/online-compiler/java_files/jawabansteeming_gmail_com/Order.class new file mode 100644 index 0000000..6286acc Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/Order.java b/online-compiler/java_files/jawabansteeming_gmail_com/Order.java new file mode 100644 index 0000000..23bafbe --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabansteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.class b/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..9868566 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.java b/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..470bc17 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabansteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..cfbfb91 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..879fd8a --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabansteeming_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.class b/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..60e70e3 Binary files /dev/null and b/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.java b/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..91a3993 --- /dev/null +++ b/online-compiler/java_files/jawabansteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabansteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.class new file mode 100644 index 0000000..d879c1e Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.java new file mode 100644 index 0000000..80f9a70 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabantandabaca_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Average.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Average.class new file mode 100644 index 0000000..aee63a2 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Average.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Average.java new file mode 100644 index 0000000..3269f50 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabantandabaca_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.class new file mode 100644 index 0000000..ed13471 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.java new file mode 100644 index 0000000..a6ebb3d --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabantandabaca_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.class b/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.class new file mode 100644 index 0000000..e88b95a Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.java b/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.java new file mode 100644 index 0000000..f448b1b --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabantandabaca_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.class new file mode 100644 index 0000000..6a55a8f Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.java new file mode 100644 index 0000000..d3a6015 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabantandabaca_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..cc271a8 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..5e6a4c5 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabaca_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..14079bb Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..f7136b7 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabaca_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..63c1725 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..639b56f --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabantandabaca_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabantandabaca_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..c91bef5 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..fd86032 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabaca_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..5d0a6c7 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..4c4ad77 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabantandabaca_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..6fd6984 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..a89204e --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabantandabaca_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabantandabaca_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabantandabaca_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..e56f29e Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..4e52945 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabantandabaca_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..366795b Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..5e9c45e --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabantandabaca_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..d7f0689 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..b392c5d --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabantandabaca_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..4198dcd Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..e8e2a1b --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabantandabaca_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..69decc5 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..02de990 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabantandabaca_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..ee9df00 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..e7b0188 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabantandabaca_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..e6cb518 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..599b142 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabantandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabantandabaca_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.class new file mode 100644 index 0000000..04404e2 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.java new file mode 100644 index 0000000..75e9b44 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabantandabaca_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.class new file mode 100644 index 0000000..11118cf Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.java new file mode 100644 index 0000000..8663375 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabantandabaca_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..0f58d91 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e9b99fb --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabantandabaca_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.class new file mode 100644 index 0000000..0861014 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.java new file mode 100644 index 0000000..b81f886 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabantandabaca_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Order.class b/online-compiler/java_files/jawabantandabaca_gmail_com/Order.class new file mode 100644 index 0000000..0fa31e3 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/Order.java b/online-compiler/java_files/jawabantandabaca_gmail_com/Order.java new file mode 100644 index 0000000..7dd30f0 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabantandabaca_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.class b/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.class new file mode 100644 index 0000000..e653bab Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.java b/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.java new file mode 100644 index 0000000..de4e3bc --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabantandabaca_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..fc059dd Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..e78f1d6 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabantandabaca_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.class b/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.class new file mode 100644 index 0000000..6d1bee1 Binary files /dev/null and b/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.java b/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.java new file mode 100644 index 0000000..c3d35b6 --- /dev/null +++ b/online-compiler/java_files/jawabantandabaca_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabantandabaca_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.class new file mode 100644 index 0000000..5599b43 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.java new file mode 100644 index 0000000..ab71ff6 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabantandabacalower_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.class new file mode 100644 index 0000000..9b2a5a5 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.java new file mode 100644 index 0000000..f9b9d3c --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabantandabacalower_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.class new file mode 100644 index 0000000..5a21c66 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.java new file mode 100644 index 0000000..56ee490 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabantandabacalower_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.class new file mode 100644 index 0000000..8b8022f Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.java new file mode 100644 index 0000000..cce5034 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabantandabacalower_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.class new file mode 100644 index 0000000..7463e6a Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.java new file mode 100644 index 0000000..28615d1 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabantandabacalower_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..6b016a8 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..8d18961 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabacalower_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..cfd0e8c Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..8054365 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabacalower_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..cfe2e80 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..4cf9f4c --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabantandabacalower_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabantandabacalower_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..9631135 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..6c392f9 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandabacalower_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..ff9c554 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..b3dcccf --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabantandabacalower_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..d13b471 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..939663e --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabantandabacalower_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabantandabacalower_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabantandabacalower_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..d089dc3 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..3796438 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabantandabacalower_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..7e5da1d Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..bf8c9cc --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabantandabacalower_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..08ea1f5 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..ece8587 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabantandabacalower_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..85f807c Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..ef65159 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabantandabacalower_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..e3a21ee Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..2d977d4 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabantandabacalower_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..7f70ebf Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..0e209c6 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabantandabacalower_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..b68d189 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..0a739d8 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabantandabacalower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabantandabacalower_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.class new file mode 100644 index 0000000..fc3ca2f Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.java new file mode 100644 index 0000000..85933d5 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabantandabacalower_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.class new file mode 100644 index 0000000..a4e22d6 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.java new file mode 100644 index 0000000..47d8cb4 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabantandabacalower_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..9adc0e0 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..5d709dc --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabantandabacalower_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.class new file mode 100644 index 0000000..ce5214d Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.java new file mode 100644 index 0000000..0853885 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabantandabacalower_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.class new file mode 100644 index 0000000..b293a01 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.java new file mode 100644 index 0000000..acb71de --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabantandabacalower_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.class new file mode 100644 index 0000000..c332c33 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.java new file mode 100644 index 0000000..dbb45ea --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabantandabacalower_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..39a5d75 Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..b655d8d --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabantandabacalower_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.class b/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.class new file mode 100644 index 0000000..3b7a8bb Binary files /dev/null and b/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.java b/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.java new file mode 100644 index 0000000..aba6407 --- /dev/null +++ b/online-compiler/java_files/jawabantandabacalower_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabantandabacalower_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.class new file mode 100644 index 0000000..2ebbfaf Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.java new file mode 100644 index 0000000..da08639 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabantandalowersteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.class new file mode 100644 index 0000000..7fc436c Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.java new file mode 100644 index 0000000..23e5253 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabantandalowersteeming_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.class new file mode 100644 index 0000000..58e6a48 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.java new file mode 100644 index 0000000..ae2745c --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabantandalowersteeming_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..eff7872 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..07c707c --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabantandalowersteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.class new file mode 100644 index 0000000..0e0b678 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.java new file mode 100644 index 0000000..7fc6b68 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabantandalowersteeming_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..7fc6f0f Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..5073a0c --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowersteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..98e06c8 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..6c4a048 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowersteeming_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..bbb0d17 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..75402a4 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabantandalowersteeming_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabantandalowersteeming_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..c39d4d4 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..125c4ae --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowersteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..991c647 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..139d2dd --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabantandalowersteeming_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..f712a22 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..c20055e --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabantandalowersteeming_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabantandalowersteeming_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabantandalowersteeming_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..236097d Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..5b96bed --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabantandalowersteeming_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..5b8be22 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..59bbaed --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabantandalowersteeming_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..c6efdff Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..e7108d1 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabantandalowersteeming_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..b5b87ac Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..605f275 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabantandalowersteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..c9d6975 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..b6c7f25 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabantandalowersteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..07572db Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..5004035 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabantandalowersteeming_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..4a9afdf Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..4cbf1c6 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabantandalowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabantandalowersteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.class new file mode 100644 index 0000000..abf6d78 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.java new file mode 100644 index 0000000..cc57b90 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabantandalowersteeming_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.class new file mode 100644 index 0000000..5df3cdc Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.java new file mode 100644 index 0000000..eb5ece5 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabantandalowersteeming_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..4e07dd0 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..ed68bcf --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabantandalowersteeming_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.class new file mode 100644 index 0000000..b2ac972 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.java new file mode 100644 index 0000000..af60cae --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabantandalowersteeming_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.class new file mode 100644 index 0000000..eea8ca8 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.java new file mode 100644 index 0000000..5856840 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabantandalowersteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..26d3bea Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..2a744bf --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabantandalowersteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..2dffc65 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..0832d06 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabantandalowersteeming_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.class b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..aaf6cdb Binary files /dev/null and b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.java b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..ad67107 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowersteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabantandalowersteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.class new file mode 100644 index 0000000..8133cd6 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.java new file mode 100644 index 0000000..09cfcf1 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.class new file mode 100644 index 0000000..6aee2af Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.java new file mode 100644 index 0000000..b8501f4 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.class new file mode 100644 index 0000000..a385b29 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.java new file mode 100644 index 0000000..8a03822 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.class new file mode 100644 index 0000000..4237337 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.java new file mode 100644 index 0000000..5e874fd --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.class new file mode 100644 index 0000000..52ca390 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.java new file mode 100644 index 0000000..ae2a80f --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..1394613 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..3668209 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowerstopsteem_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..f19468a Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..0c30569 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowerstopsteem_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..b1e0f70 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..6dba36a --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawabantandalowerstopsteem_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawabantandalowerstopsteem_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..5e01bf0 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..fcdb601 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawabantandalowerstopsteem_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..40fe8d9 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..407acb5 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawabantandalowerstopsteem_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..4b28d83 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..0cd1f73 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawabantandalowerstopsteem_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawabantandalowerstopsteem_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawabantandalowerstopsteem_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..d087d7a Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..831c400 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawabantandalowerstopsteem_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..3a60198 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..bedd871 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawabantandalowerstopsteem_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..d5b0d20 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..41fc8d7 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawabantandalowerstopsteem_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..790dd76 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..4ef1bd0 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawabantandalowerstopsteem_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..a35bc33 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..534cf6c --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawabantandalowerstopsteem_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..956f79d Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..cfe3d43 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawabantandalowerstopsteem_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..4fba732 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..bc7589e --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawabantandalowerstopsteem_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawabantandalowerstopsteem_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.class new file mode 100644 index 0000000..f3a776f Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.java new file mode 100644 index 0000000..4209954 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.class new file mode 100644 index 0000000..ffbea2b Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.java new file mode 100644 index 0000000..d78d0be --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..5bf8090 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e62c39e --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.class new file mode 100644 index 0000000..a9ba6e2 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.java new file mode 100644 index 0000000..b45d4a3 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawabantandalowerstopsteem_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.class new file mode 100644 index 0000000..e2c522a Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.java new file mode 100644 index 0000000..ac9390f --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.class new file mode 100644 index 0000000..c22b2f3 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.java new file mode 100644 index 0000000..1279536 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..66af6fc Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..fcc469d --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.class b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.class new file mode 100644 index 0000000..2661c30 Binary files /dev/null and b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.java b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.java new file mode 100644 index 0000000..1bd5b87 --- /dev/null +++ b/online-compiler/java_files/jawabantandalowerstopsteem_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawabantandalowerstopsteem_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Angka.class b/online-compiler/java_files/jawavabstopword_gmail_com/Angka.class new file mode 100644 index 0000000..122902c Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Angka.java b/online-compiler/java_files/jawavabstopword_gmail_com/Angka.java new file mode 100644 index 0000000..7f0d23a --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package jawavabstopword_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Average.class b/online-compiler/java_files/jawavabstopword_gmail_com/Average.class new file mode 100644 index 0000000..60b3724 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Average.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Average.java b/online-compiler/java_files/jawavabstopword_gmail_com/Average.java new file mode 100644 index 0000000..4d813f7 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Average.java @@ -0,0 +1,18 @@ +package jawavabstopword_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Bank.class b/online-compiler/java_files/jawavabstopword_gmail_com/Bank.class new file mode 100644 index 0000000..ce22d23 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Bank.java b/online-compiler/java_files/jawavabstopword_gmail_com/Bank.java new file mode 100644 index 0000000..983ad0e --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package jawavabstopword_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.class b/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.class new file mode 100644 index 0000000..47b9a37 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.java b/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.java new file mode 100644 index 0000000..5f281e0 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package jawavabstopword_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.class b/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.class new file mode 100644 index 0000000..3f7b3a7 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.java b/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.java new file mode 100644 index 0000000..7d3d054 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package jawavabstopword_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..a54b9ba Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..4262163 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawavabstopword_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..758ad6b Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..47b42c6 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawavabstopword_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..2ecd62f Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..09701de --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = jawavabstopword_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + jawavabstopword_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..97bc48e Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..5a2b8bb --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + jawavabstopword_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..ac698b7 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..b4b6a73 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + jawavabstopword_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..4516aac Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..f729200 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = jawavabstopword_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = jawavabstopword_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + jawavabstopword_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..9dc1352 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..fe73907 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + jawavabstopword_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..64efc23 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..2873892 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + jawavabstopword_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..5539f89 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..8ec6162 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + jawavabstopword_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..4bad34a Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..e46ada1 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + jawavabstopword_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..9eeebaa Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..b57ff41 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + jawavabstopword_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..8899b94 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..7b34a90 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + jawavabstopword_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..783c832 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..5f55335 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package jawavabstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + jawavabstopword_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.class b/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.class new file mode 100644 index 0000000..7bd963b Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.java b/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.java new file mode 100644 index 0000000..f8c2666 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package jawavabstopword_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.class b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.class new file mode 100644 index 0000000..9210a01 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.java b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.java new file mode 100644 index 0000000..ce7d682 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package jawavabstopword_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..fd705ed Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..12f2973 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package jawavabstopword_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.class b/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.class new file mode 100644 index 0000000..6e09629 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.java b/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.java new file mode 100644 index 0000000..a736719 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package jawavabstopword_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Order.class b/online-compiler/java_files/jawavabstopword_gmail_com/Order.class new file mode 100644 index 0000000..fb2ab00 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/Order.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/Order.java b/online-compiler/java_files/jawavabstopword_gmail_com/Order.java new file mode 100644 index 0000000..7f6cc29 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/Order.java @@ -0,0 +1,15 @@ +package jawavabstopword_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.class b/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.class new file mode 100644 index 0000000..5913e48 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.java b/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.java new file mode 100644 index 0000000..a072c7d --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package jawavabstopword_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.class b/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..d9b51b0 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.java b/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..e4b5378 --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package jawavabstopword_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.class b/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.class new file mode 100644 index 0000000..21e6285 Binary files /dev/null and b/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.java b/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.java new file mode 100644 index 0000000..902d53b --- /dev/null +++ b/online-compiler/java_files/jawavabstopword_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package jawavabstopword_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.class new file mode 100644 index 0000000..6aa6383 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.java new file mode 100644 index 0000000..f9e6463 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.class new file mode 100644 index 0000000..830a7e1 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.java new file mode 100644 index 0000000..f6640d8 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Average.java @@ -0,0 +1,18 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.class new file mode 100644 index 0000000..0c31349 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.java new file mode 100644 index 0000000..0494737 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..3fa7a17 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..9ece69f --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.class new file mode 100644 index 0000000..cfe5ecd Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.java new file mode 100644 index 0000000..41ce0ec --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..7418e97 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..d838c50 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kunci4lowertandanonsistematissteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..48deda1 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..f61d422 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kunci4lowertandanonsistematissteeming_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..29390a2 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..292e4b2 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = kunci4lowertandanonsistematissteeming_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + kunci4lowertandanonsistematissteeming_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..de77adb Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..50f7c7e --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kunci4lowertandanonsistematissteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..32cc0df Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..9977472 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + kunci4lowertandanonsistematissteeming_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..6078cf1 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..8e062f9 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = kunci4lowertandanonsistematissteeming_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = kunci4lowertandanonsistematissteeming_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + kunci4lowertandanonsistematissteeming_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..1e0281c Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..b6c29fc --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + kunci4lowertandanonsistematissteeming_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..a317c42 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..0169e64 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + kunci4lowertandanonsistematissteeming_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..2468322 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..70c9229 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + kunci4lowertandanonsistematissteeming_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..653fda7 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..86df93c --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + kunci4lowertandanonsistematissteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..dfc6837 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..e59b49f --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + kunci4lowertandanonsistematissteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..874710e Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..50b1e72 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + kunci4lowertandanonsistematissteeming_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..13e549d Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..b972960 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + kunci4lowertandanonsistematissteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.class new file mode 100644 index 0000000..811d721 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.java new file mode 100644 index 0000000..e549f1b --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.class new file mode 100644 index 0000000..2d38a6c Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.java new file mode 100644 index 0000000..9cf6580 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..961eb50 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e61ec13 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.class new file mode 100644 index 0000000..27c17e3 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.java new file mode 100644 index 0000000..bea7ea1 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.class new file mode 100644 index 0000000..d3e682a Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.java new file mode 100644 index 0000000..3c1abf1 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..68a2082 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..3818ea2 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..c5ad083 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..3386f37 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.class b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..4e0a413 Binary files /dev/null and b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.java b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..b73f7c6 --- /dev/null +++ b/online-compiler/java_files/kunci4lowertandanonsistematissteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package kunci4lowertandanonsistematissteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.class new file mode 100644 index 0000000..dc109af Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.java new file mode 100644 index 0000000..870e014 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package kuncijawaban4_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Average.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Average.class new file mode 100644 index 0000000..4ae89b8 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Average.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Average.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Average.java new file mode 100644 index 0000000..cf9cab4 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Average.java @@ -0,0 +1,18 @@ +package kuncijawaban4_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.class new file mode 100644 index 0000000..dc72a63 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.java new file mode 100644 index 0000000..8052aaf --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package kuncijawaban4_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.class b/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.class new file mode 100644 index 0000000..a7395c0 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.java b/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.java new file mode 100644 index 0000000..a6ab553 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package kuncijawaban4_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.class new file mode 100644 index 0000000..f49c62d Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.java new file mode 100644 index 0000000..0a873db --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package kuncijawaban4_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..16b983a Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..fbb1861 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kuncijawaban4_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..c42d80c Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..fdf4587 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kuncijawaban4_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..bbef5fa Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..0b7acff --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = kuncijawaban4_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + kuncijawaban4_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..d9357ed Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..3d775da --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + kuncijawaban4_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..4c5b835 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..9347162 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + kuncijawaban4_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..376250a Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..07b7a2f --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = kuncijawaban4_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = kuncijawaban4_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + kuncijawaban4_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..21bf4b3 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..abb9721 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + kuncijawaban4_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..5ac4e4e Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..627a875 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + kuncijawaban4_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..35305d6 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..54b352e --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + kuncijawaban4_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..193f4b1 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..74201ac --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + kuncijawaban4_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..57ec8f3 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..6a83ec2 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + kuncijawaban4_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..228140a Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..95f9047 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + kuncijawaban4_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..7bb79a1 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..91a940b --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package kuncijawaban4_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + kuncijawaban4_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.class new file mode 100644 index 0000000..f1cb4a5 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.java new file mode 100644 index 0000000..b3822fa --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package kuncijawaban4_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.class b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.class new file mode 100644 index 0000000..eb3a091 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.java b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.java new file mode 100644 index 0000000..f24d37a --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package kuncijawaban4_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..84aa1b3 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..09b4af8 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package kuncijawaban4_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.class b/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.class new file mode 100644 index 0000000..58a35f8 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.java b/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.java new file mode 100644 index 0000000..1ed08b2 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package kuncijawaban4_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Order.class b/online-compiler/java_files/kuncijawaban4_gmail_com/Order.class new file mode 100644 index 0000000..c54c696 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/Order.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/Order.java b/online-compiler/java_files/kuncijawaban4_gmail_com/Order.java new file mode 100644 index 0000000..e3929c0 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/Order.java @@ -0,0 +1,15 @@ +package kuncijawaban4_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.class b/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.class new file mode 100644 index 0000000..5341a9a Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.java b/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.java new file mode 100644 index 0000000..ba285bd --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package kuncijawaban4_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.class b/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..f61cb03 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.java b/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..cfe9432 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package kuncijawaban4_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.class b/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.class new file mode 100644 index 0000000..c1bbeb6 Binary files /dev/null and b/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.java b/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.java new file mode 100644 index 0000000..9dc17d1 --- /dev/null +++ b/online-compiler/java_files/kuncijawaban4_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package kuncijawaban4_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lia_gmail_com/Angka.class b/online-compiler/java_files/lia_gmail_com/Angka.class new file mode 100644 index 0000000..9111c01 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Angka.java b/online-compiler/java_files/lia_gmail_com/Angka.java new file mode 100644 index 0000000..fe1c698 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lia_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lia_gmail_com/Average.class b/online-compiler/java_files/lia_gmail_com/Average.class new file mode 100644 index 0000000..bfb32ec Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Average.java b/online-compiler/java_files/lia_gmail_com/Average.java new file mode 100644 index 0000000..87b8ee6 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lia_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/Bank.class b/online-compiler/java_files/lia_gmail_com/Bank.class new file mode 100644 index 0000000..0a32721 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Bank.java b/online-compiler/java_files/lia_gmail_com/Bank.java new file mode 100644 index 0000000..c22d5c0 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lia_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lia_gmail_com/BookStore.class b/online-compiler/java_files/lia_gmail_com/BookStore.class new file mode 100644 index 0000000..649ac5b Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lia_gmail_com/BookStore.java b/online-compiler/java_files/lia_gmail_com/BookStore.java new file mode 100644 index 0000000..c896edb --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lia_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/Fibonacci.class b/online-compiler/java_files/lia_gmail_com/Fibonacci.class new file mode 100644 index 0000000..8635572 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Fibonacci.java b/online-compiler/java_files/lia_gmail_com/Fibonacci.java new file mode 100644 index 0000000..d2173a6 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lia_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..33aa26c Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..3dae530 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lia_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..87c7d0c Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..52735bf --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lia_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lia_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..66c30ef Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lia_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..bb5581f --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lia_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lia_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..745eaf7 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..b446578 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lia_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..49e17bd Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..1908714 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lia_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..5a2bc3e Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..c2b09fa --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lia_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lia_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lia_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..b5edae2 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..5c0b1c6 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lia_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..ebbe78e Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..185a4b0 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lia_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..060f099 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..1b38fb2 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lia_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..05a1514 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..16e5f7b --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lia_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..95c58a3 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..a1cbefb --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lia_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..d1998a0 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..c0c5d42 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lia_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..8dbd01d Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..6721d3e --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lia_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lia_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/Lingkaran.class b/online-compiler/java_files/lia_gmail_com/Lingkaran.class new file mode 100644 index 0000000..ce9fcc0 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Lingkaran.java b/online-compiler/java_files/lia_gmail_com/Lingkaran.java new file mode 100644 index 0000000..4c29946 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lia_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/LuckyFive.class b/online-compiler/java_files/lia_gmail_com/LuckyFive.class new file mode 100644 index 0000000..3dd621c Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lia_gmail_com/LuckyFive.java b/online-compiler/java_files/lia_gmail_com/LuckyFive.java new file mode 100644 index 0000000..a461af7 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lia_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..e5ed8d5 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..9eb0e35 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lia_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/NewsFeed.class b/online-compiler/java_files/lia_gmail_com/NewsFeed.class new file mode 100644 index 0000000..4b67e80 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lia_gmail_com/NewsFeed.java b/online-compiler/java_files/lia_gmail_com/NewsFeed.java new file mode 100644 index 0000000..96ee27c --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lia_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/Order.class b/online-compiler/java_files/lia_gmail_com/Order.class new file mode 100644 index 0000000..0f93b88 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lia_gmail_com/Order.java b/online-compiler/java_files/lia_gmail_com/Order.java new file mode 100644 index 0000000..ef5bc7f --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lia_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lia_gmail_com/OrderCase.class b/online-compiler/java_files/lia_gmail_com/OrderCase.class new file mode 100644 index 0000000..b71cf41 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lia_gmail_com/OrderCase.java b/online-compiler/java_files/lia_gmail_com/OrderCase.java new file mode 100644 index 0000000..7fb87ee --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lia_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lia_gmail_com/SecondPiramid.class b/online-compiler/java_files/lia_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..0d2cca2 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lia_gmail_com/SecondPiramid.java b/online-compiler/java_files/lia_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..fe97d25 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lia_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lia_gmail_com/TipeData.class b/online-compiler/java_files/lia_gmail_com/TipeData.class new file mode 100644 index 0000000..5cdec06 Binary files /dev/null and b/online-compiler/java_files/lia_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lia_gmail_com/TipeData.java b/online-compiler/java_files/lia_gmail_com/TipeData.java new file mode 100644 index 0000000..51de6a0 --- /dev/null +++ b/online-compiler/java_files/lia_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lia_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lib/hamcrest-core-1.3.jar b/online-compiler/java_files/lib/hamcrest-core-1.3.jar new file mode 100644 index 0000000..9d5fe16 Binary files /dev/null and b/online-compiler/java_files/lib/hamcrest-core-1.3.jar differ diff --git a/online-compiler/java_files/lib/junit-4.13.2.jar b/online-compiler/java_files/lib/junit-4.13.2.jar new file mode 100644 index 0000000..6da55d8 Binary files /dev/null and b/online-compiler/java_files/lib/junit-4.13.2.jar differ diff --git a/online-compiler/java_files/lisa_gmail_com/HelloWorld.class b/online-compiler/java_files/lisa_gmail_com/HelloWorld.class new file mode 100644 index 0000000..adebfe4 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/HelloWorld.java b/online-compiler/java_files/lisa_gmail_com/HelloWorld.java new file mode 100644 index 0000000..d120a46 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package lisa_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..5de0d2d Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..5f1405c --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + lisa_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..ac92506 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..2e91b33 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lisa_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + lisa_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..d1df7ea Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..118a56b --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lisa_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + lisa_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..3a61c95 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..8cfb619 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package lisa_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + lisa_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = lisa_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..9f465eb Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..73493b6 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lisa_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = lisa_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..af221ae Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..a93aeb4 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lisa_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = lisa_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.class new file mode 100644 index 0000000..3136fc3 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..bcd1c7c --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lisa_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = lisa_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + lisa_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..a37799c Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..0b01d87 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lisa_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = lisa_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.class new file mode 100644 index 0000000..08ab043 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..acf0d8f --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + lisa_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = lisa_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.class new file mode 100644 index 0000000..cc9ff29 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..16c363d --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + lisa_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = lisa_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.class b/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.class new file mode 100644 index 0000000..1533fce Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.java b/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.java new file mode 100644 index 0000000..6c368a6 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/JUnitTweetCounterTest.java @@ -0,0 +1,34 @@ +package lisa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTweetCounterTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTweetCounter() { + lisa_gmail_com.TweetCounter.main(null); + assertEquals("Tweet Length not same", "83", outputStream.toString()); + + String data = lisa_gmail_com.TweetCounter.Tweet(null); + assertEquals("tweet in String", "Liz Lemon, ninjas are kind of cool... I just dont know any personally. Get on that.", data); + } +} diff --git a/online-compiler/java_files/lisa_gmail_com/LuckyFive.class b/online-compiler/java_files/lisa_gmail_com/LuckyFive.class new file mode 100644 index 0000000..5e0f96c Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/LuckyFive.java b/online-compiler/java_files/lisa_gmail_com/LuckyFive.java new file mode 100644 index 0000000..8b60ecb --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package lisa_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..fb8dfe1 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..96fea9e --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package lisa_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + LuckyFiveSecond luck = new LuckyFiveSecond(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/MyClass.class b/online-compiler/java_files/lisa_gmail_com/MyClass.class new file mode 100644 index 0000000..5b68214 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/MyClass.java b/online-compiler/java_files/lisa_gmail_com/MyClass.java new file mode 100644 index 0000000..d653720 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package lisa_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/NewsFeed.class b/online-compiler/java_files/lisa_gmail_com/NewsFeed.class new file mode 100644 index 0000000..78189a7 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/NewsFeed.java b/online-compiler/java_files/lisa_gmail_com/NewsFeed.java new file mode 100644 index 0000000..413eac2 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/NewsFeed.java @@ -0,0 +1,20 @@ +package lisa_gmail_com; + +import java.awt.Checkbox; +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/Order.class b/online-compiler/java_files/lisa_gmail_com/Order.class new file mode 100644 index 0000000..34e7253 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/Order.java b/online-compiler/java_files/lisa_gmail_com/Order.java new file mode 100644 index 0000000..c19d2e6 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/Order.java @@ -0,0 +1,20 @@ +package lisa_gmail_com; + +public class Order { + + public static String condition(String order) { + double itemCost = 30.99; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + return order; + } + + public static void main(String[] args) { + String order = ""; + String result = condition(order); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/OrderCase.class b/online-compiler/java_files/lisa_gmail_com/OrderCase.class new file mode 100644 index 0000000..61c6907 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/OrderCase.java b/online-compiler/java_files/lisa_gmail_com/OrderCase.java new file mode 100644 index 0000000..a27c2ea --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package lisa_gmail_com; + + + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/OrderNest.class b/online-compiler/java_files/lisa_gmail_com/OrderNest.class new file mode 100644 index 0000000..a6cccbf Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/OrderNest.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/OrderNest.java b/online-compiler/java_files/lisa_gmail_com/OrderNest.java new file mode 100644 index 0000000..6559d35 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package lisa_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + return 0.85; + } else { + return 1.75; + } + } else { + return 0.50; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/Password.class b/online-compiler/java_files/lisa_gmail_com/Password.class new file mode 100644 index 0000000..c61f7b1 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/Password.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/Password.java b/online-compiler/java_files/lisa_gmail_com/Password.java new file mode 100644 index 0000000..1cc0171 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/Password.java @@ -0,0 +1,20 @@ +package lisa_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/Poetry.class b/online-compiler/java_files/lisa_gmail_com/Poetry.class new file mode 100644 index 0000000..17c00f8 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/Poetry.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/Poetry.java b/online-compiler/java_files/lisa_gmail_com/Poetry.java new file mode 100644 index 0000000..7f11442 --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/Poetry.java @@ -0,0 +1,18 @@ +package lisa_gmail_com; + +public class Poetry { + + public static String Poet() { + String line = "The Heav'ns and all the Constellations rung"; + return line; + } + + public static void main(String[] args) { + + String line = Poet(); + + // Change the arguments: + System.out.print(line.substring(4, 11)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lisa_gmail_com/TweetCounter.class b/online-compiler/java_files/lisa_gmail_com/TweetCounter.class new file mode 100644 index 0000000..df1b626 Binary files /dev/null and b/online-compiler/java_files/lisa_gmail_com/TweetCounter.class differ diff --git a/online-compiler/java_files/lisa_gmail_com/TweetCounter.java b/online-compiler/java_files/lisa_gmail_com/TweetCounter.java new file mode 100644 index 0000000..ba8391d --- /dev/null +++ b/online-compiler/java_files/lisa_gmail_com/TweetCounter.java @@ -0,0 +1,16 @@ +package lisa_gmail_com; + +public class TweetCounter { + + public static String Tweet(String tweet) { + tweet = "Liz Lemon, ninjas are kind of cool... I just dont know any personally. Get on that."; + return tweet; + } + + public static void main(String[] args) { + + String data = Tweet(null); + // What's the character count? + System.out.print(data.length()); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lower_gmail_com/Angka.class b/online-compiler/java_files/lower_gmail_com/Angka.class new file mode 100644 index 0000000..ea3429e Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Angka.java b/online-compiler/java_files/lower_gmail_com/Angka.java new file mode 100644 index 0000000..d9c3c28 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lower_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lower_gmail_com/Average.class b/online-compiler/java_files/lower_gmail_com/Average.class new file mode 100644 index 0000000..b826782 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Average.java b/online-compiler/java_files/lower_gmail_com/Average.java new file mode 100644 index 0000000..75f60c5 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lower_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/Bank.class b/online-compiler/java_files/lower_gmail_com/Bank.class new file mode 100644 index 0000000..eb742fe Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Bank.java b/online-compiler/java_files/lower_gmail_com/Bank.java new file mode 100644 index 0000000..d8971fa --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lower_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lower_gmail_com/BookStore.class b/online-compiler/java_files/lower_gmail_com/BookStore.class new file mode 100644 index 0000000..ff0a538 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lower_gmail_com/BookStore.java b/online-compiler/java_files/lower_gmail_com/BookStore.java new file mode 100644 index 0000000..478ccbd --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lower_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/Fibonacci.class b/online-compiler/java_files/lower_gmail_com/Fibonacci.class new file mode 100644 index 0000000..bfed825 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Fibonacci.java b/online-compiler/java_files/lower_gmail_com/Fibonacci.java new file mode 100644 index 0000000..e71c614 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lower_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..a737ee5 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..97af2e9 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lower_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..4b31ad0 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..dfa73ae --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lower_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lower_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lower_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..95f84b8 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lower_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..83fb974 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lower_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lower_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..80a6c0b Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..5e4aa46 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lower_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..48994b2 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..806d78c --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lower_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..c18f919 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..001d1a7 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lower_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lower_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lower_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..f74965d Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..6433e4b --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lower_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..2322ba1 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..f3d2305 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lower_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..9374687 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..b598011 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lower_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..4ac3c0c Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..ed226a9 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lower_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..e24e454 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..b223f0e --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lower_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..74dd3e2 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..ad62117 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lower_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..3d5e4f6 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..b040d81 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lower_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lower_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lower_gmail_com/Lingkaran.class b/online-compiler/java_files/lower_gmail_com/Lingkaran.class new file mode 100644 index 0000000..f387cf8 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Lingkaran.java b/online-compiler/java_files/lower_gmail_com/Lingkaran.java new file mode 100644 index 0000000..1a7a292 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lower_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/LuckyFive.class b/online-compiler/java_files/lower_gmail_com/LuckyFive.class new file mode 100644 index 0000000..bc4d3f6 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lower_gmail_com/LuckyFive.java b/online-compiler/java_files/lower_gmail_com/LuckyFive.java new file mode 100644 index 0000000..61d930d --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lower_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..5dd713d Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..46b1472 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lower_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/lower_gmail_com/NewsFeed.class b/online-compiler/java_files/lower_gmail_com/NewsFeed.class new file mode 100644 index 0000000..b80d0f4 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lower_gmail_com/NewsFeed.java b/online-compiler/java_files/lower_gmail_com/NewsFeed.java new file mode 100644 index 0000000..7e3b567 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lower_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/Order.class b/online-compiler/java_files/lower_gmail_com/Order.class new file mode 100644 index 0000000..859a6c3 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lower_gmail_com/Order.java b/online-compiler/java_files/lower_gmail_com/Order.java new file mode 100644 index 0000000..27b2999 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lower_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/OrderCase.class b/online-compiler/java_files/lower_gmail_com/OrderCase.class new file mode 100644 index 0000000..413cb01 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lower_gmail_com/OrderCase.java b/online-compiler/java_files/lower_gmail_com/OrderCase.java new file mode 100644 index 0000000..c7c43f0 --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lower_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lower_gmail_com/SecondPiramid.class b/online-compiler/java_files/lower_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..2243dc6 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lower_gmail_com/SecondPiramid.java b/online-compiler/java_files/lower_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..ca7029a --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lower_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lower_gmail_com/TipeData.class b/online-compiler/java_files/lower_gmail_com/TipeData.class new file mode 100644 index 0000000..22ac2b9 Binary files /dev/null and b/online-compiler/java_files/lower_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lower_gmail_com/TipeData.java b/online-compiler/java_files/lower_gmail_com/TipeData.java new file mode 100644 index 0000000..3768b1e --- /dev/null +++ b/online-compiler/java_files/lower_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lower_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Angka.class b/online-compiler/java_files/lowersteeming_gmail_com/Angka.class new file mode 100644 index 0000000..86a004c Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Angka.java b/online-compiler/java_files/lowersteeming_gmail_com/Angka.java new file mode 100644 index 0000000..85271d2 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowersteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Average.class b/online-compiler/java_files/lowersteeming_gmail_com/Average.class new file mode 100644 index 0000000..6e8f5b9 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Average.java b/online-compiler/java_files/lowersteeming_gmail_com/Average.java new file mode 100644 index 0000000..ddab07e --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lowersteeming_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Bank.class b/online-compiler/java_files/lowersteeming_gmail_com/Bank.class new file mode 100644 index 0000000..065352a Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Bank.java b/online-compiler/java_files/lowersteeming_gmail_com/Bank.java new file mode 100644 index 0000000..962d642 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lowersteeming_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/BookStore.class b/online-compiler/java_files/lowersteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..a006fc9 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/BookStore.java b/online-compiler/java_files/lowersteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..5fe0854 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowersteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.class b/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.class new file mode 100644 index 0000000..032229d Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.java b/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.java new file mode 100644 index 0000000..010e09d --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lowersteeming_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..1997cb5 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..da1497c --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowersteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..d61fc56 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..06de011 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowersteeming_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..610fd5e Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..25f9a85 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lowersteeming_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lowersteeming_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..f8ca129 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..dcfa721 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowersteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..1fd9793 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..72e74e1 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lowersteeming_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..a11c578 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..96499a4 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lowersteeming_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lowersteeming_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lowersteeming_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..fab3444 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..1c74cd2 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lowersteeming_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..9070768 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..4ca0b32 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lowersteeming_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..3166fc0 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..35e4635 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lowersteeming_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..42a1bb4 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..3217260 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowersteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..e0ec48b Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..f7b271a --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowersteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..a889d6d Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..60a1acb --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lowersteeming_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..df12ab5 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..e94ab0f --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowersteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowersteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.class b/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.class new file mode 100644 index 0000000..1456ed3 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.java b/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.java new file mode 100644 index 0000000..cf7758f --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lowersteeming_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.class b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.class new file mode 100644 index 0000000..1c9eeeb Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.java b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.java new file mode 100644 index 0000000..1dd098d --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lowersteeming_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..fcb1d98 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..3573072 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lowersteeming_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.class b/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.class new file mode 100644 index 0000000..81b62b1 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.java b/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.java new file mode 100644 index 0000000..12d9127 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lowersteeming_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Order.class b/online-compiler/java_files/lowersteeming_gmail_com/Order.class new file mode 100644 index 0000000..5b1fbfe Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/Order.java b/online-compiler/java_files/lowersteeming_gmail_com/Order.java new file mode 100644 index 0000000..bf2f537 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowersteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.class b/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..93dcbe8 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.java b/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..ba49143 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowersteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.class b/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..80f0552 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.java b/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..870de79 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lowersteeming_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lowersteeming_gmail_com/TipeData.class b/online-compiler/java_files/lowersteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..08bed26 Binary files /dev/null and b/online-compiler/java_files/lowersteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowersteeming_gmail_com/TipeData.java b/online-compiler/java_files/lowersteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..542f715 --- /dev/null +++ b/online-compiler/java_files/lowersteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowersteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Angka.class b/online-compiler/java_files/lowerstopword_gmail_com/Angka.class new file mode 100644 index 0000000..3e07061 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Angka.java b/online-compiler/java_files/lowerstopword_gmail_com/Angka.java new file mode 100644 index 0000000..d740d87 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowerstopword_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Average.class b/online-compiler/java_files/lowerstopword_gmail_com/Average.class new file mode 100644 index 0000000..215a721 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Average.java b/online-compiler/java_files/lowerstopword_gmail_com/Average.java new file mode 100644 index 0000000..bd6d36f --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lowerstopword_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Bank.class b/online-compiler/java_files/lowerstopword_gmail_com/Bank.class new file mode 100644 index 0000000..7daf656 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Bank.java b/online-compiler/java_files/lowerstopword_gmail_com/Bank.java new file mode 100644 index 0000000..7a714b4 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lowerstopword_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/BookStore.class b/online-compiler/java_files/lowerstopword_gmail_com/BookStore.class new file mode 100644 index 0000000..d454d78 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/BookStore.java b/online-compiler/java_files/lowerstopword_gmail_com/BookStore.java new file mode 100644 index 0000000..89efcc4 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowerstopword_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.class b/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.class new file mode 100644 index 0000000..04c56cf Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.java b/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.java new file mode 100644 index 0000000..1560d36 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lowerstopword_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..9b24062 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..bdcaea3 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowerstopword_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..9e5ffd9 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..ba5c028 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowerstopword_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..67bf9c8 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..84d74dc --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lowerstopword_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lowerstopword_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..f70c2b1 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..64af2d0 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowerstopword_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..3dde70d Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..883f0bd --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lowerstopword_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..a8fabfe Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..ede5d39 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lowerstopword_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lowerstopword_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lowerstopword_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..656928b Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..af1377a --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lowerstopword_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..c3e77b3 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..91cd100 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lowerstopword_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..cfb2294 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..6d77b4d --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lowerstopword_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..584583e Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..0749c18 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowerstopword_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..1c84f59 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..c4522e3 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowerstopword_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..83a50ee Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..12c4e34 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lowerstopword_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..42ea7bb Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..97b5d33 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowerstopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowerstopword_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.class b/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.class new file mode 100644 index 0000000..23af66a Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.java b/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.java new file mode 100644 index 0000000..99485a7 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lowerstopword_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.class b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.class new file mode 100644 index 0000000..6569ce2 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.java b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.java new file mode 100644 index 0000000..48ef20c --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lowerstopword_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..3eaf090 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..5cb07e8 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lowerstopword_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.class b/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.class new file mode 100644 index 0000000..e23f613 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.java b/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.java new file mode 100644 index 0000000..77e7246 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lowerstopword_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Order.class b/online-compiler/java_files/lowerstopword_gmail_com/Order.class new file mode 100644 index 0000000..9cfcb14 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/Order.java b/online-compiler/java_files/lowerstopword_gmail_com/Order.java new file mode 100644 index 0000000..feec769 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowerstopword_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.class b/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.class new file mode 100644 index 0000000..39f52ef Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.java b/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.java new file mode 100644 index 0000000..4ed0a35 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowerstopword_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.class b/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..e278305 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.java b/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..57d930b --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lowerstopword_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lowerstopword_gmail_com/TipeData.class b/online-compiler/java_files/lowerstopword_gmail_com/TipeData.class new file mode 100644 index 0000000..403a2c0 Binary files /dev/null and b/online-compiler/java_files/lowerstopword_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowerstopword_gmail_com/TipeData.java b/online-compiler/java_files/lowerstopword_gmail_com/TipeData.java new file mode 100644 index 0000000..93d54b0 --- /dev/null +++ b/online-compiler/java_files/lowerstopword_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowerstopword_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.class new file mode 100644 index 0000000..18c67d9 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.java new file mode 100644 index 0000000..68c4d2d --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowerstopwordsteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..f7ce1a3 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..b7d8a1d --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowerstopwordsteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..e019c49 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..d56ffe4 --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowerstopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowerstopwordsteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..8af087b Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..35ae477 --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowerstopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowerstopwordsteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..a8f28e5 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..653c75b --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowerstopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowerstopwordsteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..67d0ef1 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..71c978e --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowerstopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowerstopwordsteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..4729ccb Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..de6443d --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowerstopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowerstopwordsteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.class new file mode 100644 index 0000000..2b3b4ea Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.java new file mode 100644 index 0000000..50b140a --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowerstopwordsteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..672d69a Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..5e9647e --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowerstopwordsteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.class b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..cfcfa63 Binary files /dev/null and b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.java b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..5cdb866 --- /dev/null +++ b/online-compiler/java_files/lowerstopwordsteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowerstopwordsteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/Angka.class b/online-compiler/java_files/lowertandabaca_gmail_com/Angka.class new file mode 100644 index 0000000..2c8a57d Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/Angka.java b/online-compiler/java_files/lowertandabaca_gmail_com/Angka.java new file mode 100644 index 0000000..8aea07e --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandabaca_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.class b/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.class new file mode 100644 index 0000000..8887658 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.java b/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.java new file mode 100644 index 0000000..f8019eb --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandabaca_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..a361611 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..64baf38 --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabaca_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..d66d095 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..124b956 --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabaca_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..b751d54 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..910bbf5 --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandabaca_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..5de9e52 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..8cafa6b --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandabaca_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..b7f2ae3 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..e64bb25 --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandabaca_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandabaca_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/Order.class b/online-compiler/java_files/lowertandabaca_gmail_com/Order.class new file mode 100644 index 0000000..8e33032 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/Order.java b/online-compiler/java_files/lowertandabaca_gmail_com/Order.java new file mode 100644 index 0000000..a5f56c9 --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandabaca_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.class new file mode 100644 index 0000000..7ef0d2a Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.java new file mode 100644 index 0000000..0c2b3da --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandabaca_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.class b/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.class new file mode 100644 index 0000000..12c0673 Binary files /dev/null and b/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.java b/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.java new file mode 100644 index 0000000..8d3637f --- /dev/null +++ b/online-compiler/java_files/lowertandabaca_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandabaca_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.class new file mode 100644 index 0000000..c86c0c6 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.java new file mode 100644 index 0000000..7453f4b --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.class new file mode 100644 index 0000000..2811152 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.java new file mode 100644 index 0000000..fd7edab --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.class new file mode 100644 index 0000000..db35e46 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.java new file mode 100644 index 0000000..a2e28f9 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.class new file mode 100644 index 0000000..4ed6c51 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.java new file mode 100644 index 0000000..b04b22f --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandabacanonsistematis_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.class new file mode 100644 index 0000000..cd3361f Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.java new file mode 100644 index 0000000..a1b8d0d --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..0693be0 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..98305b3 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabacanonsistematis_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..31283a5 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..63e6e74 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabacanonsistematis_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..0821755 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..13341bd --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lowertandabacanonsistematis_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lowertandabacanonsistematis_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..a00a349 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..d026493 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabacanonsistematis_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..144cd1f Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..692a3bc --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lowertandabacanonsistematis_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..69336a7 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..03d9d19 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lowertandabacanonsistematis_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lowertandabacanonsistematis_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lowertandabacanonsistematis_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..e7467dd Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..82f15c1 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lowertandabacanonsistematis_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..113c3d6 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..33e7685 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lowertandabacanonsistematis_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..650cb29 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..d9088f6 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lowertandabacanonsistematis_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..8444a23 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..cbdb758 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandabacanonsistematis_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..4203556 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..ff3cf77 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandabacanonsistematis_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..c5cbdaa Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..a5669c2 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lowertandabacanonsistematis_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..5599891 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..7b295a7 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandabacanonsistematis_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandabacanonsistematis_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.class new file mode 100644 index 0000000..750a943 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.java new file mode 100644 index 0000000..70386f5 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.class new file mode 100644 index 0000000..64867f2 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.java new file mode 100644 index 0000000..0a4321f --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lowertandabacanonsistematis_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..41f6797 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..b0714d5 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lowertandabacanonsistematis_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.class new file mode 100644 index 0000000..46153f2 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.java new file mode 100644 index 0000000..df7465c --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lowertandabacanonsistematis_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.class new file mode 100644 index 0000000..a01d58c Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.java new file mode 100644 index 0000000..09aa7c4 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandabacanonsistematis_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.class new file mode 100644 index 0000000..2630963 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.java new file mode 100644 index 0000000..8f08765 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandabacanonsistematis_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..29a2659 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..af77bc8 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lowertandabacanonsistematis_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.class b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.class new file mode 100644 index 0000000..b8ecd34 Binary files /dev/null and b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.java b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.java new file mode 100644 index 0000000..06f59c1 --- /dev/null +++ b/online-compiler/java_files/lowertandabacanonsistematis_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandabacanonsistematis_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.class new file mode 100644 index 0000000..f445393 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.java new file mode 100644 index 0000000..ae8e58b --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandabacastopword_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.class new file mode 100644 index 0000000..5d3b141 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.java new file mode 100644 index 0000000..67d7c79 --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandabacastopword_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..45210b1 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..1e155a0 --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandabacastopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabacastopword_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..5d8df8b Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..8d72c22 --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandabacastopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandabacastopword_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..87b07f2 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..4cbe332 --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandabacastopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandabacastopword_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..aa168bf Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..f35e73a --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandabacastopword_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandabacastopword_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..c9da058 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..33c3e60 --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandabacastopword_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandabacastopword_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.class new file mode 100644 index 0000000..413cdf4 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.java new file mode 100644 index 0000000..a6d882b --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandabacastopword_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.class new file mode 100644 index 0000000..4f0829e Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.java new file mode 100644 index 0000000..8a51fed --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandabacastopword_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.class b/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.class new file mode 100644 index 0000000..c981149 Binary files /dev/null and b/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.java b/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.java new file mode 100644 index 0000000..e85175a --- /dev/null +++ b/online-compiler/java_files/lowertandabacastopword_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandabacastopword_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.class new file mode 100644 index 0000000..5ac565f Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.java new file mode 100644 index 0000000..33418ef --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.class new file mode 100644 index 0000000..22290c6 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.java new file mode 100644 index 0000000..9306306 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Average.java @@ -0,0 +1,18 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.class new file mode 100644 index 0000000..214d44c Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.java new file mode 100644 index 0000000..d1f3e58 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..c103695 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..f06408d --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.class new file mode 100644 index 0000000..c5b8419 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.java new file mode 100644 index 0000000..1566077 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..5b4fc87 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..44f6d16 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandanonsistematissteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..77cb069 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..cb4c305 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandanonsistematissteeming_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..52c2992 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..fb77938 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = lowertandanonsistematissteeming_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + lowertandanonsistematissteeming_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..8ceca20 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..00a5cee --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandanonsistematissteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..442caf7 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..57885b9 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + lowertandanonsistematissteeming_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..bad7fc6 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..2f02071 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = lowertandanonsistematissteeming_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = lowertandanonsistematissteeming_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + lowertandanonsistematissteeming_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..f0d1acb Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..98d4cf9 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + lowertandanonsistematissteeming_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..d1e3d01 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..6ebc204 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + lowertandanonsistematissteeming_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..41b606f Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..77a99b0 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + lowertandanonsistematissteeming_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..0418f16 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..553c73d --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandanonsistematissteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..f0665e8 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..8042f75 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandanonsistematissteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..83c004a Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..a50e00b --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + lowertandanonsistematissteeming_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..28ce340 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..f97729c --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandanonsistematissteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandanonsistematissteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.class new file mode 100644 index 0000000..b60014f Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.java new file mode 100644 index 0000000..7cdc671 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.class new file mode 100644 index 0000000..c709d39 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.java new file mode 100644 index 0000000..726d149 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..ed58c34 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..c18972b --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.class new file mode 100644 index 0000000..6a43d95 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.java new file mode 100644 index 0000000..7c8088c --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package lowertandanonsistematissteeming_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.class new file mode 100644 index 0000000..ff1b853 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.java new file mode 100644 index 0000000..fa4f5b2 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..fa40440 Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..3503057 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..0b25e6f Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..340acf0 --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.class b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..c2e600f Binary files /dev/null and b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.java b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..89e7c0b --- /dev/null +++ b/online-compiler/java_files/lowertandanonsistematissteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandanonsistematissteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.class b/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.class new file mode 100644 index 0000000..ab675d3 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.java b/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.java new file mode 100644 index 0000000..ec40e41 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandasteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.class b/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..123f180 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.java b/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..2cdf853 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandasteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..e68989a Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..1d77981 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandasteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandasteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..e2b6aa5 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..b1b1c80 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandasteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandasteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..a01764c Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..0c26fac --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandasteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandasteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..7018cf4 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..0767865 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandasteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandasteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..cc49058 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..71ab8cc --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandasteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandasteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/Order.class b/online-compiler/java_files/lowertandasteeming_gmail_com/Order.class new file mode 100644 index 0000000..e8606b8 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/Order.java b/online-compiler/java_files/lowertandasteeming_gmail_com/Order.java new file mode 100644 index 0000000..a78b95c --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandasteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..b6919e8 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..e44b600 --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandasteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.class b/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..30605f0 Binary files /dev/null and b/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.java b/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..3ce2d4a --- /dev/null +++ b/online-compiler/java_files/lowertandasteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandasteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.class new file mode 100644 index 0000000..9d82d16 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.java new file mode 100644 index 0000000..1cf9c88 --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package lowertandastopwordsteeming_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.class new file mode 100644 index 0000000..3d69780 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.java new file mode 100644 index 0000000..79c2d82 --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package lowertandastopwordsteeming_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..3562361 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..dcefd75 --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package lowertandastopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandastopwordsteeming_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..f663f89 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..1328dac --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package lowertandastopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + lowertandastopwordsteeming_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..9b8293a Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..c81542b --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package lowertandastopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + lowertandastopwordsteeming_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..248840a Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..57eaefb --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package lowertandastopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + lowertandastopwordsteeming_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..872fa63 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..0162186 --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package lowertandastopwordsteeming_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + lowertandastopwordsteeming_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.class new file mode 100644 index 0000000..2c6c5a5 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.java new file mode 100644 index 0000000..492afdd --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/Order.java @@ -0,0 +1,15 @@ +package lowertandastopwordsteeming_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.class new file mode 100644 index 0000000..03fde3d Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.java new file mode 100644 index 0000000..2a1d90d --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package lowertandastopwordsteeming_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.class b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.class new file mode 100644 index 0000000..1905565 Binary files /dev/null and b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.java b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.java new file mode 100644 index 0000000..10b32fa --- /dev/null +++ b/online-compiler/java_files/lowertandastopwordsteeming_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package lowertandastopwordsteeming_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.class b/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.class new file mode 100644 index 0000000..a06c157 Binary files /dev/null and b/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.java b/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.java new file mode 100644 index 0000000..5d1a853 --- /dev/null +++ b/online-compiler/java_files/nareshpratista_contact_gmail_com/Angka.java @@ -0,0 +1,11 @@ +package nareshpratista_contact_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } +} diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..4e04a46 Binary files /dev/null and b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..af99329 --- /dev/null +++ b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package nareshpratista_contact_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + nareshpratista_contact_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..ad417a5 Binary files /dev/null and b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..fc0fa0e --- /dev/null +++ b/online-compiler/java_files/nareshpratista_contact_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package nareshpratista_contact_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + nareshpratista_contact_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.class b/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.class new file mode 100644 index 0000000..472609c Binary files /dev/null and b/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.java b/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.java new file mode 100644 index 0000000..9cccbc8 --- /dev/null +++ b/online-compiler/java_files/nareshpratista_contact_gmail_com/TipeData.java @@ -0,0 +1,21 @@ +package nareshpratista_contact_gmail_com; + +public class TipeData { + public static void main(String args[]) { + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/normalisasi_gmail_com/Angka.class b/online-compiler/java_files/normalisasi_gmail_com/Angka.class new file mode 100644 index 0000000..442b8a2 Binary files /dev/null and b/online-compiler/java_files/normalisasi_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/normalisasi_gmail_com/Angka.java b/online-compiler/java_files/normalisasi_gmail_com/Angka.java new file mode 100644 index 0000000..5a3c699 --- /dev/null +++ b/online-compiler/java_files/normalisasi_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package normalisasi_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..6be7e1d Binary files /dev/null and b/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..2eede5f --- /dev/null +++ b/online-compiler/java_files/normalisasi_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package normalisasi_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + normalisasi_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..b8f4025 Binary files /dev/null and b/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..3b09e5f --- /dev/null +++ b/online-compiler/java_files/normalisasi_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package normalisasi_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + normalisasi_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/normalisasi_gmail_com/TipeData.class b/online-compiler/java_files/normalisasi_gmail_com/TipeData.class new file mode 100644 index 0000000..ae7f822 Binary files /dev/null and b/online-compiler/java_files/normalisasi_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/normalisasi_gmail_com/TipeData.java b/online-compiler/java_files/normalisasi_gmail_com/TipeData.java new file mode 100644 index 0000000..936c4ae --- /dev/null +++ b/online-compiler/java_files/normalisasi_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package normalisasi_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/Angka.class b/online-compiler/java_files/pelajar_gmail_com/Angka.class new file mode 100644 index 0000000..7613291 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/Angka.java b/online-compiler/java_files/pelajar_gmail_com/Angka.java new file mode 100644 index 0000000..c4de160 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package pelajar_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/pelajar_gmail_com/BookStore.class b/online-compiler/java_files/pelajar_gmail_com/BookStore.class new file mode 100644 index 0000000..2f5e876 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/BookStore.java b/online-compiler/java_files/pelajar_gmail_com/BookStore.java new file mode 100644 index 0000000..9168e09 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package pelajar_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..0400e30 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..9f443ea --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + pelajar_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..f433c15 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..7f4e38c --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + pelajar_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..2391d15 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..4df4149 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + pelajar_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..43cd58d Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..0565d13 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + pelajar_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..f6674dd Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..59fed7a --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + pelajar_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..51e2f65 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..63c14fa --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package pelajar_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + pelajar_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/pelajar_gmail_com/LuckyFive.class b/online-compiler/java_files/pelajar_gmail_com/LuckyFive.class new file mode 100644 index 0000000..b523f68 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/LuckyFive.java b/online-compiler/java_files/pelajar_gmail_com/LuckyFive.java new file mode 100644 index 0000000..14599ba --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package pelajar_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/Order.class b/online-compiler/java_files/pelajar_gmail_com/Order.class new file mode 100644 index 0000000..64d0ad4 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/Order.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/Order.java b/online-compiler/java_files/pelajar_gmail_com/Order.java new file mode 100644 index 0000000..c695ac9 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/Order.java @@ -0,0 +1,16 @@ +package pelajar_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} + diff --git a/online-compiler/java_files/pelajar_gmail_com/OrderCase.class b/online-compiler/java_files/pelajar_gmail_com/OrderCase.class new file mode 100644 index 0000000..d297114 Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/OrderCase.java b/online-compiler/java_files/pelajar_gmail_com/OrderCase.java new file mode 100644 index 0000000..386f3a7 --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package pelajar_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/pelajar_gmail_com/TipeData.class b/online-compiler/java_files/pelajar_gmail_com/TipeData.class new file mode 100644 index 0000000..53c719d Binary files /dev/null and b/online-compiler/java_files/pelajar_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/pelajar_gmail_com/TipeData.java b/online-compiler/java_files/pelajar_gmail_com/TipeData.java new file mode 100644 index 0000000..e8d8d9e --- /dev/null +++ b/online-compiler/java_files/pelajar_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package pelajar_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/Angka.class b/online-compiler/java_files/percobaan1_gmail_com/Angka.class new file mode 100644 index 0000000..466ffec Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/Angka.java b/online-compiler/java_files/percobaan1_gmail_com/Angka.java new file mode 100644 index 0000000..d866041 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package percobaan1_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/BookStore.class b/online-compiler/java_files/percobaan1_gmail_com/BookStore.class new file mode 100644 index 0000000..3b4ef13 Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/BookStore.java b/online-compiler/java_files/percobaan1_gmail_com/BookStore.java new file mode 100644 index 0000000..2c832f7 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package percobaan1_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..3b4217a Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..f615ef4 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package percobaan1_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + percobaan1_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..7c67a85 Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..9d05c40 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package percobaan1_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + percobaan1_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..e740b6b Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..b4ad3ad --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package percobaan1_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + percobaan1_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..f50a2ba Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..984f4c5 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package percobaan1_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + percobaan1_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..a76bc5b Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..7e01ad1 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package percobaan1_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + percobaan1_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/percobaan1_gmail_com/Order.class b/online-compiler/java_files/percobaan1_gmail_com/Order.class new file mode 100644 index 0000000..d5f8a82 Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/Order.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/Order.java b/online-compiler/java_files/percobaan1_gmail_com/Order.java new file mode 100644 index 0000000..11c3cb8 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/Order.java @@ -0,0 +1,15 @@ +package percobaan1_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/OrderCase.class b/online-compiler/java_files/percobaan1_gmail_com/OrderCase.class new file mode 100644 index 0000000..d6beba5 Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/OrderCase.java b/online-compiler/java_files/percobaan1_gmail_com/OrderCase.java new file mode 100644 index 0000000..535c541 --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package percobaan1_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/percobaan1_gmail_com/TipeData.class b/online-compiler/java_files/percobaan1_gmail_com/TipeData.class new file mode 100644 index 0000000..61777ee Binary files /dev/null and b/online-compiler/java_files/percobaan1_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/percobaan1_gmail_com/TipeData.java b/online-compiler/java_files/percobaan1_gmail_com/TipeData.java new file mode 100644 index 0000000..3f6ff5d --- /dev/null +++ b/online-compiler/java_files/percobaan1_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package percobaan1_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/Angka.class b/online-compiler/java_files/percobaan2_gmail_com/Angka.class new file mode 100644 index 0000000..b8e39f6 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/Angka.java b/online-compiler/java_files/percobaan2_gmail_com/Angka.java new file mode 100644 index 0000000..3e45824 --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package percobaan2_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/BookStore.class b/online-compiler/java_files/percobaan2_gmail_com/BookStore.class new file mode 100644 index 0000000..15b77a4 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/BookStore.java b/online-compiler/java_files/percobaan2_gmail_com/BookStore.java new file mode 100644 index 0000000..b228dee --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package percobaan2_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..462f21e Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..8d4ee75 --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package percobaan2_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + percobaan2_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..ab30371 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..e38527e --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package percobaan2_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + percobaan2_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..5be0e07 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..961863a --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package percobaan2_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + percobaan2_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..e843373 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..a31aeb0 --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package percobaan2_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + percobaan2_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..a7dc4f2 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..1fd8747 --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package percobaan2_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + percobaan2_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/percobaan2_gmail_com/Order.class b/online-compiler/java_files/percobaan2_gmail_com/Order.class new file mode 100644 index 0000000..9148b0c Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/Order.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/Order.java b/online-compiler/java_files/percobaan2_gmail_com/Order.java new file mode 100644 index 0000000..0d4a4bf --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/Order.java @@ -0,0 +1,15 @@ +package percobaan2_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/OrderCase.class b/online-compiler/java_files/percobaan2_gmail_com/OrderCase.class new file mode 100644 index 0000000..34aea91 Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/OrderCase.java b/online-compiler/java_files/percobaan2_gmail_com/OrderCase.java new file mode 100644 index 0000000..51fe43e --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package percobaan2_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/percobaan2_gmail_com/TipeData.class b/online-compiler/java_files/percobaan2_gmail_com/TipeData.class new file mode 100644 index 0000000..24d0aae Binary files /dev/null and b/online-compiler/java_files/percobaan2_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/percobaan2_gmail_com/TipeData.java b/online-compiler/java_files/percobaan2_gmail_com/TipeData.java new file mode 100644 index 0000000..207e3ae --- /dev/null +++ b/online-compiler/java_files/percobaan2_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package percobaan2_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..bd77fe8 Binary files /dev/null and b/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..9de43eb --- /dev/null +++ b/online-compiler/java_files/resh_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package resh_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + resh_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/resh_gmail_com/TipeData.class b/online-compiler/java_files/resh_gmail_com/TipeData.class new file mode 100644 index 0000000..b7481fe Binary files /dev/null and b/online-compiler/java_files/resh_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/resh_gmail_com/TipeData.java b/online-compiler/java_files/resh_gmail_com/TipeData.java new file mode 100644 index 0000000..d105cde --- /dev/null +++ b/online-compiler/java_files/resh_gmail_com/TipeData.java @@ -0,0 +1,23 @@ +package resh_gmail_com; + +public class TipeData { + public static void main(String args[]) { + // Tambahkan tipe data untuk variabel + int panjang, lebar, tinggi, vBalok, lBalok; + + // Inisialisasi nilai + panjang = 10; + lebar = 6; + tinggi = 7; + + // Rumus volume balok + vBalok = panjang * lebar * tinggi; + + // Rumus luas permukaan balok + lBalok = 2 * (panjang * lebar + panjang * tinggi + lebar * tinggi); + + // Output hasil + System.out.print("Volume balok = " + vBalok + ", "); + System.out.print("Luas permukaan balok = " + lBalok); + } +} diff --git a/online-compiler/java_files/revisi_gmail_com/Angka.class b/online-compiler/java_files/revisi_gmail_com/Angka.class new file mode 100644 index 0000000..3b944f1 Binary files /dev/null and b/online-compiler/java_files/revisi_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/revisi_gmail_com/Angka.java b/online-compiler/java_files/revisi_gmail_com/Angka.java new file mode 100644 index 0000000..d0f1c14 --- /dev/null +++ b/online-compiler/java_files/revisi_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package revisi_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..35b36d3 Binary files /dev/null and b/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..3b3498e --- /dev/null +++ b/online-compiler/java_files/revisi_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package revisi_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + revisi_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..c3d9ae0 Binary files /dev/null and b/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..aa4fa3f --- /dev/null +++ b/online-compiler/java_files/revisi_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package revisi_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + revisi_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/revisi_gmail_com/TipeData.class b/online-compiler/java_files/revisi_gmail_com/TipeData.class new file mode 100644 index 0000000..9956c08 Binary files /dev/null and b/online-compiler/java_files/revisi_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/revisi_gmail_com/TipeData.java b/online-compiler/java_files/revisi_gmail_com/TipeData.java new file mode 100644 index 0000000..4a023eb --- /dev/null +++ b/online-compiler/java_files/revisi_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package revisi_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..ac41cfe Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..8fa5b0c --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package rika_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + rika_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + rika_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..906c4fb Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..504991e --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package rika_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + rika_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = rika_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..0862c07 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..735759e --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package rika_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + rika_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = rika_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.class b/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.class new file mode 100644 index 0000000..6d9a7d4 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.class differ diff --git a/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..9df7b77 --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package rika_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + rika_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = rika_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.class b/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.class new file mode 100644 index 0000000..0a29a97 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.class differ diff --git a/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..367a6df --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package rika_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + rika_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = rika_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/rika_gmail_com/LuckyFive.class b/online-compiler/java_files/rika_gmail_com/LuckyFive.class new file mode 100644 index 0000000..e366f80 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/rika_gmail_com/LuckyFive.java b/online-compiler/java_files/rika_gmail_com/LuckyFive.java new file mode 100644 index 0000000..d5c712d --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package rika_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rika_gmail_com/MyClass.class b/online-compiler/java_files/rika_gmail_com/MyClass.class new file mode 100644 index 0000000..a396745 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/rika_gmail_com/MyClass.java b/online-compiler/java_files/rika_gmail_com/MyClass.java new file mode 100644 index 0000000..52877e5 --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package rika_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y ; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rika_gmail_com/NewsFeed.class b/online-compiler/java_files/rika_gmail_com/NewsFeed.class new file mode 100644 index 0000000..7daede8 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/rika_gmail_com/NewsFeed.java b/online-compiler/java_files/rika_gmail_com/NewsFeed.java new file mode 100644 index 0000000..ee0d492 --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/NewsFeed.java @@ -0,0 +1,20 @@ +package rika_gmail_com; + +import java.awt.Checkbox; +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rika_gmail_com/Password.class b/online-compiler/java_files/rika_gmail_com/Password.class new file mode 100644 index 0000000..4954fd5 Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/Password.class differ diff --git a/online-compiler/java_files/rika_gmail_com/Password.java b/online-compiler/java_files/rika_gmail_com/Password.java new file mode 100644 index 0000000..fc66754 --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/Password.java @@ -0,0 +1,20 @@ +package rika_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + + } diff --git a/online-compiler/java_files/rika_gmail_com/Poetry.class b/online-compiler/java_files/rika_gmail_com/Poetry.class new file mode 100644 index 0000000..a33a2fe Binary files /dev/null and b/online-compiler/java_files/rika_gmail_com/Poetry.class differ diff --git a/online-compiler/java_files/rika_gmail_com/Poetry.java b/online-compiler/java_files/rika_gmail_com/Poetry.java new file mode 100644 index 0000000..8c4a5da --- /dev/null +++ b/online-compiler/java_files/rika_gmail_com/Poetry.java @@ -0,0 +1,18 @@ +package rika_gmail_com; + +public class Poetry { + + public static String Poet() { + String line = "The Heav'ns and all the Constellations rung"; + return line; + } + + public static void main(String[] args) { + + String line = Poet(); + + // Change the arguments: + System.out.print(line.substring(4,12)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/.gitignore b/online-compiler/java_files/riko_gmail_com/.gitignore new file mode 100644 index 0000000..8e201df --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/.gitignore @@ -0,0 +1,13 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitMyClassTest.class +/JUnitOrderCaseTest.class +/JUnitOrderTest.class +/JUnitPasswordTest.class +/JUnitPoetryTest.class +/MyClass.class +/MyClasss.class +/Order.class +/OrderCase.class +/Password.class +/Poetry.class diff --git a/online-compiler/java_files/riko_gmail_com/HelloWorld.java b/online-compiler/java_files/riko_gmail_com/HelloWorld.java new file mode 100644 index 0000000..259b161 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/HelloWorld.java @@ -0,0 +1,8 @@ +package riko_gmail_com; + +public class HelloWorld { + + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/riko_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..1a6de22 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package riko_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + riko_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/riko_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/riko_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..1470970 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package riko_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + riko_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = riko_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/riko_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..f0ba55d --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package riko_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + riko_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = riko_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/riko_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/riko_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..b65e827 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package riko_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + riko_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = riko_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/riko_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/riko_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..8135e55 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package riko_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + riko_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = riko_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/riko_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/riko_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..9880af0 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package riko_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + riko_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = riko_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/riko_gmail_com/MyClass.java b/online-compiler/java_files/riko_gmail_com/MyClass.java new file mode 100644 index 0000000..c2001a6 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package riko_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/MyClasss.java b/online-compiler/java_files/riko_gmail_com/MyClasss.java new file mode 100644 index 0000000..c11e6a7 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/MyClasss.java @@ -0,0 +1,18 @@ +package riko_gmail_com; + +public class MyClasss { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/Order.java b/online-compiler/java_files/riko_gmail_com/Order.java new file mode 100644 index 0000000..1b04cd0 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/Order.java @@ -0,0 +1,15 @@ +package riko_gmail_com; + +public class Order { + public static void main(String[] args) { + double itemCost = 30.99; + String order; + + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/OrderCase.java b/online-compiler/java_files/riko_gmail_com/OrderCase.java new file mode 100644 index 0000000..a2af9fb --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/OrderCase.java @@ -0,0 +1,45 @@ +package riko_gmail_com; + +public class OrderCase { + boolean isFilled; + double billAmount; + String shipping; + + public OrderCase(boolean filled, double cost, String shippingMethod) { + isFilled = filled; + billAmount = cost; + shipping = shippingMethod; + } + + public void ship() { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping()); + } else { + System.out.print("Order not ready"); + } + } + + public double calculateShipping() { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + OrderCase book = new OrderCase(true, 9.99, "Express"); + + book.ship(); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/riko_gmail_com/Password.java b/online-compiler/java_files/riko_gmail_com/Password.java new file mode 100644 index 0000000..855b57b --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/Password.java @@ -0,0 +1,17 @@ +package riko_gmail_com; + +public class Password { + + public static void main(String[] args) { + + String password = "correcthorsebatterystaple"; + + // Write the code: + System.out.print(password.compareTo("correcthorsebatterystaple")); + System.out.print(password.equals("correcthorsebatterystaple")); + + } +} + + + diff --git a/online-compiler/java_files/riko_gmail_com/Poetry.java b/online-compiler/java_files/riko_gmail_com/Poetry.java new file mode 100644 index 0000000..669a0e6 --- /dev/null +++ b/online-compiler/java_files/riko_gmail_com/Poetry.java @@ -0,0 +1,12 @@ +package riko_gmail_com; + +public class Poetry { + + public static void main(String[] args) { + + String line = "The Heav'ns and all the Constellations rung"; + + System.out.print(line.substring(4,12)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossa_gmail_com/Angka.class b/online-compiler/java_files/rossa_gmail_com/Angka.class new file mode 100644 index 0000000..ede647d Binary files /dev/null and b/online-compiler/java_files/rossa_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/rossa_gmail_com/Angka.java b/online-compiler/java_files/rossa_gmail_com/Angka.java new file mode 100644 index 0000000..3fd6c80 --- /dev/null +++ b/online-compiler/java_files/rossa_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package rossa_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..09c3689 Binary files /dev/null and b/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..c747630 --- /dev/null +++ b/online-compiler/java_files/rossa_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package rossa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + rossa_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..0d78cf6 Binary files /dev/null and b/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..d257709 --- /dev/null +++ b/online-compiler/java_files/rossa_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package rossa_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + rossa_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossa_gmail_com/TipeData.class b/online-compiler/java_files/rossa_gmail_com/TipeData.class new file mode 100644 index 0000000..32e8f40 Binary files /dev/null and b/online-compiler/java_files/rossa_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/rossa_gmail_com/TipeData.java b/online-compiler/java_files/rossa_gmail_com/TipeData.java new file mode 100644 index 0000000..46cc395 --- /dev/null +++ b/online-compiler/java_files/rossa_gmail_com/TipeData.java @@ -0,0 +1,21 @@ +package rossa_gmail_com; + +public class TipeData { + public static void main(String args[]) { + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.class b/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.class new file mode 100644 index 0000000..ebb7ae5 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.java b/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.java new file mode 100644 index 0000000..e83c076 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package rossaakmalia66_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.class b/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.class new file mode 100644 index 0000000..be7b342 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.java b/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.java new file mode 100644 index 0000000..7e52295 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package rossaakmalia66_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..ef9f94d Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..f34a15b --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + rossaakmalia66_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..beefe0f Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..880f09f --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + rossaakmalia66_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..cdf31ab Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..bc63b03 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + rossaakmalia66_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..577e838 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..0879580 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + rossaakmalia66_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..735a914 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..d0ddb39 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + rossaakmalia66_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..0b50d4e Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..6fa8f64 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + rossaakmalia66_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..b776673 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..1e93a28 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package rossaakmalia66_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + rossaakmalia66_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.class b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.class new file mode 100644 index 0000000..b69cf66 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.java b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.java new file mode 100644 index 0000000..bb7eb8c --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package rossaakmalia66_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} \ No newline at end of file diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..a4e7ac8 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..5ad4971 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package rossaakmalia66_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/Order.class b/online-compiler/java_files/rossaakmalia66_gmail_com/Order.class new file mode 100644 index 0000000..f6ad35d Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/Order.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/Order.java b/online-compiler/java_files/rossaakmalia66_gmail_com/Order.java new file mode 100644 index 0000000..1c921b4 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/Order.java @@ -0,0 +1,15 @@ +package rossaakmalia66_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.class b/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.class new file mode 100644 index 0000000..7bd5947 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.java b/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.java new file mode 100644 index 0000000..24af634 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package rossaakmalia66_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.class b/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.class new file mode 100644 index 0000000..0dab7d5 Binary files /dev/null and b/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.java b/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.java new file mode 100644 index 0000000..3992678 --- /dev/null +++ b/online-compiler/java_files/rossaakmalia66_gmail_com/TipeData.java @@ -0,0 +1,21 @@ +package rossaakmalia66_gmail_com; + +public class TipeData { + public static void main(String args[]) { + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/.gitignore b/online-compiler/java_files/seli_gmail_com/.gitignore new file mode 100644 index 0000000..22d5f77 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/.gitignore @@ -0,0 +1,7 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitOrderCaseTest.class +/JUnitOrderTest.class +/MyClasss.class +/Order.class +/OrderCase.class diff --git a/online-compiler/java_files/seli_gmail_com/HelloWorld.java b/online-compiler/java_files/seli_gmail_com/HelloWorld.java new file mode 100644 index 0000000..99943b7 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package seli_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/seli_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..a88453a --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package seli_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + seli_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..a3e94cb Binary files /dev/null and b/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..e69387c --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package seli_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + seli_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + seli_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..251f17c Binary files /dev/null and b/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..5c21e67 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package seli_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + seli_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = seli_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/seli_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/seli_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..e511b8f --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package seli_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + seli_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = seli_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/seli_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/seli_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..5e0c856 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package seli_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + seli_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/seli_gmail_com/LuckyFive.class b/online-compiler/java_files/seli_gmail_com/LuckyFive.class new file mode 100644 index 0000000..0a31838 Binary files /dev/null and b/online-compiler/java_files/seli_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/seli_gmail_com/LuckyFive.java b/online-compiler/java_files/seli_gmail_com/LuckyFive.java new file mode 100644 index 0000000..faa2746 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package seli_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/MyClasss.java b/online-compiler/java_files/seli_gmail_com/MyClasss.java new file mode 100644 index 0000000..5d2d609 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/MyClasss.java @@ -0,0 +1,18 @@ +package seli_gmail_com; + +public class MyClasss { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/NewsFeed.class b/online-compiler/java_files/seli_gmail_com/NewsFeed.class new file mode 100644 index 0000000..24cd343 Binary files /dev/null and b/online-compiler/java_files/seli_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/seli_gmail_com/NewsFeed.java b/online-compiler/java_files/seli_gmail_com/NewsFeed.java new file mode 100644 index 0000000..e6cd23d --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/NewsFeed.java @@ -0,0 +1,19 @@ +package seli_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/Order.java b/online-compiler/java_files/seli_gmail_com/Order.java new file mode 100644 index 0000000..b8db57d --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/Order.java @@ -0,0 +1,14 @@ +package seli_gmail_com; + +public class Order { + public static void main(String[] args) { + double itemCost = 30.99; + String order; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/seli_gmail_com/OrderCase.java b/online-compiler/java_files/seli_gmail_com/OrderCase.java new file mode 100644 index 0000000..57a1fe1 --- /dev/null +++ b/online-compiler/java_files/seli_gmail_com/OrderCase.java @@ -0,0 +1,45 @@ +package seli_gmail_com; + +public class OrderCase { + boolean isFilled; + double billAmount; + String shipping; + + public OrderCase(boolean filled, double cost, String shippingMethod) { + isFilled = filled; + billAmount = cost; + shipping = shippingMethod; + } + + public void ship() { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping()); + } else { + System.out.print("Order not ready"); + } + } + + public double calculateShipping() { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + OrderCase book = new OrderCase(true, 9.99, "Express"); + + book.ship(); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/sinonim_gmail_com/Angka.class b/online-compiler/java_files/sinonim_gmail_com/Angka.class new file mode 100644 index 0000000..bffe860 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Angka.java b/online-compiler/java_files/sinonim_gmail_com/Angka.java new file mode 100644 index 0000000..0426f9a --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package sinonim_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/sinonim_gmail_com/Average.class b/online-compiler/java_files/sinonim_gmail_com/Average.class new file mode 100644 index 0000000..510c866 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Average.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Average.java b/online-compiler/java_files/sinonim_gmail_com/Average.java new file mode 100644 index 0000000..66d9d40 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Average.java @@ -0,0 +1,18 @@ +package sinonim_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/Bank.class b/online-compiler/java_files/sinonim_gmail_com/Bank.class new file mode 100644 index 0000000..02f4497 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Bank.java b/online-compiler/java_files/sinonim_gmail_com/Bank.java new file mode 100644 index 0000000..5d7750d --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package sinonim_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/BookStore.class b/online-compiler/java_files/sinonim_gmail_com/BookStore.class new file mode 100644 index 0000000..c293c3e Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/BookStore.java b/online-compiler/java_files/sinonim_gmail_com/BookStore.java new file mode 100644 index 0000000..cd71177 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package sinonim_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/Fibonacci.class b/online-compiler/java_files/sinonim_gmail_com/Fibonacci.class new file mode 100644 index 0000000..fa5f488 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Fibonacci.java b/online-compiler/java_files/sinonim_gmail_com/Fibonacci.java new file mode 100644 index 0000000..1fad4c1 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package sinonim_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..3cd1f8a Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..49e9c14 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + sinonim_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..fbfeccd Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..9f56363 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + sinonim_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..40c121d Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..e4be7fb --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = sinonim_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + sinonim_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..51845fd Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..20f5bf1 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + sinonim_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..5cb375d Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..9d3758d --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + sinonim_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..5196c36 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..504b52c --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = sinonim_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = sinonim_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + sinonim_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..07ca5a6 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..f3f53c1 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + sinonim_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..81db2e4 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..d834a89 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + sinonim_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..99fa306 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..8d3759d --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + sinonim_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..d192fda Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..367f853 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + sinonim_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..7a75634 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..eaf9e4d --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + sinonim_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..f54d1d3 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..fa81d5b --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + sinonim_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..703f2e7 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..385727b --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package sinonim_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + sinonim_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/sinonim_gmail_com/Lingkaran.class b/online-compiler/java_files/sinonim_gmail_com/Lingkaran.class new file mode 100644 index 0000000..ffed5e6 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Lingkaran.java b/online-compiler/java_files/sinonim_gmail_com/Lingkaran.java new file mode 100644 index 0000000..8ff022f --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package sinonim_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/LuckyFive.class b/online-compiler/java_files/sinonim_gmail_com/LuckyFive.class new file mode 100644 index 0000000..b7137b1 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/LuckyFive.java b/online-compiler/java_files/sinonim_gmail_com/LuckyFive.java new file mode 100644 index 0000000..ba68f88 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package sinonim_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..0b804b2 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..9ee0f24 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package sinonim_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/NewsFeed.class b/online-compiler/java_files/sinonim_gmail_com/NewsFeed.class new file mode 100644 index 0000000..3c169d8 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/NewsFeed.java b/online-compiler/java_files/sinonim_gmail_com/NewsFeed.java new file mode 100644 index 0000000..96c6df0 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package sinonim_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/Order.class b/online-compiler/java_files/sinonim_gmail_com/Order.class new file mode 100644 index 0000000..5d8b55a Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/Order.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/Order.java b/online-compiler/java_files/sinonim_gmail_com/Order.java new file mode 100644 index 0000000..0706006 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/Order.java @@ -0,0 +1,15 @@ +package sinonim_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/OrderCase.class b/online-compiler/java_files/sinonim_gmail_com/OrderCase.class new file mode 100644 index 0000000..c715ceb Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/OrderCase.java b/online-compiler/java_files/sinonim_gmail_com/OrderCase.java new file mode 100644 index 0000000..7322164 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package sinonim_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.class b/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..0ca4c62 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.java b/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..bc26408 --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package sinonim_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/sinonim_gmail_com/TipeData.class b/online-compiler/java_files/sinonim_gmail_com/TipeData.class new file mode 100644 index 0000000..84e2f07 Binary files /dev/null and b/online-compiler/java_files/sinonim_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/sinonim_gmail_com/TipeData.java b/online-compiler/java_files/sinonim_gmail_com/TipeData.java new file mode 100644 index 0000000..4568f3a --- /dev/null +++ b/online-compiler/java_files/sinonim_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package sinonim_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/siskanyoba_gmail_com/.gitignore b/online-compiler/java_files/siskanyoba_gmail_com/.gitignore new file mode 100644 index 0000000..e9f12bc --- /dev/null +++ b/online-compiler/java_files/siskanyoba_gmail_com/.gitignore @@ -0,0 +1,2 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class diff --git a/online-compiler/java_files/siskanyoba_gmail_com/HelloWorld.java b/online-compiler/java_files/siskanyoba_gmail_com/HelloWorld.java new file mode 100644 index 0000000..8b64636 --- /dev/null +++ b/online-compiler/java_files/siskanyoba_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package siskanyoba_gmail_com; + +class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/siskanyoba_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/siskanyoba_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..f67c2c6 --- /dev/null +++ b/online-compiler/java_files/siskanyoba_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package siskanyoba_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + siskanyoba_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Angka.class b/online-compiler/java_files/steemingbaru_gmail_com/Angka.class new file mode 100644 index 0000000..c0d9845 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Angka.java b/online-compiler/java_files/steemingbaru_gmail_com/Angka.java new file mode 100644 index 0000000..41119c6 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package steemingbaru_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Average.class b/online-compiler/java_files/steemingbaru_gmail_com/Average.class new file mode 100644 index 0000000..12ab852 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Average.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Average.java b/online-compiler/java_files/steemingbaru_gmail_com/Average.java new file mode 100644 index 0000000..2b8bbc2 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Average.java @@ -0,0 +1,18 @@ +package steemingbaru_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Bank.class b/online-compiler/java_files/steemingbaru_gmail_com/Bank.class new file mode 100644 index 0000000..0cc24c6 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Bank.java b/online-compiler/java_files/steemingbaru_gmail_com/Bank.java new file mode 100644 index 0000000..967387c --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package steemingbaru_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/BookStore.class b/online-compiler/java_files/steemingbaru_gmail_com/BookStore.class new file mode 100644 index 0000000..11a4112 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/BookStore.java b/online-compiler/java_files/steemingbaru_gmail_com/BookStore.java new file mode 100644 index 0000000..3acd9e1 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package steemingbaru_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.class b/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.class new file mode 100644 index 0000000..dedbdd1 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.java b/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.java new file mode 100644 index 0000000..0de92c4 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package steemingbaru_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..73d606e Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..4eea56e --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + steemingbaru_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..1f5411d Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..7f78264 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + steemingbaru_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..71ee92a Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..2157712 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = steemingbaru_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + steemingbaru_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..b5f62a0 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..7477b18 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + steemingbaru_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..760ca32 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..cfa47a0 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + steemingbaru_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..dce8eaf Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..387a756 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = steemingbaru_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = steemingbaru_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + steemingbaru_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..ea6d1ad Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..db56dc7 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + steemingbaru_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..405c618 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..c7faaab --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + steemingbaru_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..f1faf71 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..158dc3f --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + steemingbaru_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..e72d525 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..3e98a58 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + steemingbaru_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..39431d7 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..d6949ea --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + steemingbaru_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..d42a1b5 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..43e64d1 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + steemingbaru_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..300561b Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..8fc650f --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package steemingbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + steemingbaru_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.class b/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.class new file mode 100644 index 0000000..0694d5b Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.java b/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.java new file mode 100644 index 0000000..b234cce --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package steemingbaru_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi, r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.class b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.class new file mode 100644 index 0000000..7fbc7eb Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.java b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.java new file mode 100644 index 0000000..6efb56c --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package steemingbaru_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..b3f0d56 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..0bd1d01 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package steemingbaru_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.class b/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.class new file mode 100644 index 0000000..355ad5c Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.java b/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.java new file mode 100644 index 0000000..041695e --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package steemingbaru_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Order.class b/online-compiler/java_files/steemingbaru_gmail_com/Order.class new file mode 100644 index 0000000..1a96235 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/Order.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/Order.java b/online-compiler/java_files/steemingbaru_gmail_com/Order.java new file mode 100644 index 0000000..ac250d5 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/Order.java @@ -0,0 +1,15 @@ +package steemingbaru_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.class b/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.class new file mode 100644 index 0000000..7ea593f Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.java b/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.java new file mode 100644 index 0000000..377c2e7 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package steemingbaru_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.class b/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..3f0d9eb Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.java b/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..b31e30f --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package steemingbaru_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/steemingbaru_gmail_com/TipeData.class b/online-compiler/java_files/steemingbaru_gmail_com/TipeData.class new file mode 100644 index 0000000..3d3b999 Binary files /dev/null and b/online-compiler/java_files/steemingbaru_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/steemingbaru_gmail_com/TipeData.java b/online-compiler/java_files/steemingbaru_gmail_com/TipeData.java new file mode 100644 index 0000000..71e8f70 --- /dev/null +++ b/online-compiler/java_files/steemingbaru_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package steemingbaru_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/Angka.class b/online-compiler/java_files/test0106_gmail_com/Angka.class new file mode 100644 index 0000000..5ccda08 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Angka.java b/online-compiler/java_files/test0106_gmail_com/Angka.java new file mode 100644 index 0000000..3158d36 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package test0106_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/Average.class b/online-compiler/java_files/test0106_gmail_com/Average.class new file mode 100644 index 0000000..91e2b48 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Average.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Average.java b/online-compiler/java_files/test0106_gmail_com/Average.java new file mode 100644 index 0000000..31a4f01 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Average.java @@ -0,0 +1,18 @@ +package test0106_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/Bank.class b/online-compiler/java_files/test0106_gmail_com/Bank.class new file mode 100644 index 0000000..b0427a2 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Bank.java b/online-compiler/java_files/test0106_gmail_com/Bank.java new file mode 100644 index 0000000..5fec67c --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package test0106_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/BookStore.class b/online-compiler/java_files/test0106_gmail_com/BookStore.class new file mode 100644 index 0000000..389cc8f Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/BookStore.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/BookStore.java b/online-compiler/java_files/test0106_gmail_com/BookStore.java new file mode 100644 index 0000000..dd213df --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/BookStore.java @@ -0,0 +1,30 @@ +package test0106_gmail_com; + +public class BookStore { + + public static void main(String args[]) { + boolean isMember = true; + int total = 200000; + int diskon =0; + + if(isMember == true) { + if(total < 100000) { + diskon = 10; + } else if(total >= 100000 && total <= 150000) { + diskon = 15; + } else if(total > 150000) { + diskon = 20; + } + } else { + if(total < 100000) { + diskon = 5; + } else if(total >= 100000 && total <= 150000) { + diskon = 10; + } else if(total > 150000) { + diskon = 15; + } + + } + System.out.print("diskon yang didapatkan adalah " + diskon + "%"); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/Fibonacci.class b/online-compiler/java_files/test0106_gmail_com/Fibonacci.class new file mode 100644 index 0000000..349f310 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Fibonacci.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Fibonacci.java b/online-compiler/java_files/test0106_gmail_com/Fibonacci.java new file mode 100644 index 0000000..4a7ae75 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Fibonacci.java @@ -0,0 +1,21 @@ +package test0106_gmail_com; + +public class Fibonacci { + public static void main(String[] args) { + int n = 6; + int first = 0; + int second = 1; + int i = 1; + + System.out.print("Deret Fibonacci: \n"); + System.out.print(first + " " + second + " "); + + do { + int next = first + second; + System.out.print(next + " "); + first = second ; + second = next; + i++; + } while (i <= n); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..b1d9426 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..660f94f --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test0106_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..1d4f671 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..e508b9b --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test0106_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..ac50a99 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..fc3e66a --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = test0106_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + test0106_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.class new file mode 100644 index 0000000..36f68a5 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.java new file mode 100644 index 0000000..a20d216 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitBookStoreTest.java @@ -0,0 +1,33 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test0106_gmail_com.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.class new file mode 100644 index 0000000..2bc82e4 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.java new file mode 100644 index 0000000..e639cad --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitFibonacciTest.java @@ -0,0 +1,33 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + test0106_gmail_com.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.class new file mode 100644 index 0000000..d73a6d7 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.java new file mode 100644 index 0000000..075ccae --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitLingkaranTest.java @@ -0,0 +1,40 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = test0106_gmail_com.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = test0106_gmail_com.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + test0106_gmail_com.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..247fbd5 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..52d5516 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test0106_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..cea559f Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..e12ad3f --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,31 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + test0106_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..fee6c65 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..28be915 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,32 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test0106_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..d786978 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..5d4acb0 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test0106_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..87e56bc Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..a7e656b --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + test0106_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..76b52ff Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..e15d9f2 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + test0106_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..feddde4 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..ddcdb61 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package test0106_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + test0106_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/Lingkaran.class b/online-compiler/java_files/test0106_gmail_com/Lingkaran.class new file mode 100644 index 0000000..f27ab84 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Lingkaran.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Lingkaran.java b/online-compiler/java_files/test0106_gmail_com/Lingkaran.java new file mode 100644 index 0000000..0b36d8e --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Lingkaran.java @@ -0,0 +1,25 @@ +package test0106_gmail_com; + +public class Lingkaran { + public static double luasLingkaran(double phi, int r) { + double luas = phi * r *r; + return luas; + } + + public static double kelilingLingkaran(double phi, int r) { + double keliling = 2 * phi * r; + return keliling; + } + + public static void tampil() { + double phi = 3.14; + int r = 14; + double luas = luasLingkaran(phi,r); + double keliling = kelilingLingkaran(phi, r); + System.out.print("Luas Lingkaran = " + luas + "\n" + "Keliling Lingkaran = " + keliling); + } + + public static void main(String args[]) { + tampil(); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/LuckyFive.class b/online-compiler/java_files/test0106_gmail_com/LuckyFive.class new file mode 100644 index 0000000..69c8168 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/LuckyFive.java b/online-compiler/java_files/test0106_gmail_com/LuckyFive.java new file mode 100644 index 0000000..f8098c8 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/LuckyFive.java @@ -0,0 +1,11 @@ +package test0106_gmail_com; + +public class LuckyFive { + + public static void main(String[] args) { + int number = 6; + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..79ac259 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..ec814ee --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package test0106_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/NewsFeed.class b/online-compiler/java_files/test0106_gmail_com/NewsFeed.class new file mode 100644 index 0000000..3bcbc7d Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/NewsFeed.java b/online-compiler/java_files/test0106_gmail_com/NewsFeed.java new file mode 100644 index 0000000..250a74e --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/NewsFeed.java @@ -0,0 +1,12 @@ +package test0106_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + + public static void main(String[] args) { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/Order.class b/online-compiler/java_files/test0106_gmail_com/Order.class new file mode 100644 index 0000000..424ae82 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/Order.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/Order.java b/online-compiler/java_files/test0106_gmail_com/Order.java new file mode 100644 index 0000000..ea57a68 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/Order.java @@ -0,0 +1,14 @@ +package test0106_gmail_com; + +public class Order { + public static void main(String[] args) { + double itemCost = 30.99; + String order; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0106_gmail_com/OrderCase.class b/online-compiler/java_files/test0106_gmail_com/OrderCase.class new file mode 100644 index 0000000..ade124c Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/OrderCase.java b/online-compiler/java_files/test0106_gmail_com/OrderCase.java new file mode 100644 index 0000000..8e36766 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package test0106_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/SecondPiramid.class b/online-compiler/java_files/test0106_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..7e848b3 Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/SecondPiramid.java b/online-compiler/java_files/test0106_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..c940403 --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package test0106_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/test0106_gmail_com/TipeData.class b/online-compiler/java_files/test0106_gmail_com/TipeData.class new file mode 100644 index 0000000..807d11d Binary files /dev/null and b/online-compiler/java_files/test0106_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/test0106_gmail_com/TipeData.java b/online-compiler/java_files/test0106_gmail_com/TipeData.java new file mode 100644 index 0000000..6a9cafa --- /dev/null +++ b/online-compiler/java_files/test0106_gmail_com/TipeData.java @@ -0,0 +1,21 @@ +package test0106_gmail_com; + +public class TipeData { + public static void main(String args[]) { + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/Angka.class b/online-compiler/java_files/test06042_gmail_com/Angka.class new file mode 100644 index 0000000..5e448fe Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/Angka.java b/online-compiler/java_files/test06042_gmail_com/Angka.java new file mode 100644 index 0000000..88e1ec3 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package test06042_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/test06042_gmail_com/Average.class b/online-compiler/java_files/test06042_gmail_com/Average.class new file mode 100644 index 0000000..ab79ff0 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/Average.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/Average.java b/online-compiler/java_files/test06042_gmail_com/Average.java new file mode 100644 index 0000000..e9a55fb --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/Average.java @@ -0,0 +1,18 @@ +package test06042_gmail_com; + +public class Average { + public static void main(String args[]) { + double[][] nilai = {{75, 80, 85}, {90, 95, 100}, {70, 75, 80}}; + double total = 0; + int jumlahData = 0; + + for(int i = 0; i < nilai.length; i++) { + for(int j = 0; j < nilai[i].length; j++) { + total += nilai[i][j]; + jumlahData++; + } + } + double rataRata = total/jumlahData; + System.out.print(rataRata); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/Bank.class b/online-compiler/java_files/test06042_gmail_com/Bank.class new file mode 100644 index 0000000..34bed16 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/Bank.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/Bank.java b/online-compiler/java_files/test06042_gmail_com/Bank.java new file mode 100644 index 0000000..c46022f --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/Bank.java @@ -0,0 +1,22 @@ +package test06042_gmail_com; + +public class Bank { + static double hitungBunga(double saldo, double bunga, int tahun) { + if(tahun == 0) { + return saldo; + } else { + double bungaTahunan = saldo * (bunga / 100); + double total = saldo + bungaTahunan; + return hitungBunga(total, bunga, tahun - 1); + } + } + + public static void main(String args[]) { + double saldoAwal = 1000000; + int tahun = 5; + double bunga = 6; + + System.out.print("Jumlah uang setelah " + tahun + " tahun: " + hitungBunga(saldoAwal,bunga, tahun)); + + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/HelloWorld.class b/online-compiler/java_files/test06042_gmail_com/HelloWorld.class new file mode 100644 index 0000000..7240fd3 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/HelloWorld.java b/online-compiler/java_files/test06042_gmail_com/HelloWorld.java new file mode 100644 index 0000000..0ca0bea --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test06042_gmail_com; + +public class HelloWorld{ + public static void main(String[] args){ + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..59189fc Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..8235868 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test06042_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.class new file mode 100644 index 0000000..4eef3e7 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.java new file mode 100644 index 0000000..14b01d9 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitAverageTest.java @@ -0,0 +1,33 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test06042_gmail_com.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.class new file mode 100644 index 0000000..98ad090 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.java new file mode 100644 index 0000000..f931023 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitBankTest.java @@ -0,0 +1,36 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = test06042_gmail_com.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + test06042_gmail_com.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..553d8e9 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..06eef86 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test06042_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..49bd5da Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..bd2f924 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,31 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test06042_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.class new file mode 100644 index 0000000..715cd2a Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.java new file mode 100644 index 0000000..44b1640 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitManipulateVariableTest.java @@ -0,0 +1,34 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + + +public class JUnitManipulateVariableTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + testing.ManipulateVariable.main(null); + assertEquals("Result Wrong", "Pembelian Gula berjumlah 3 sehingga harga yang dibayarkan adalah 120000", outputStream.toString()); + + } +} + diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..a4e2ac0 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..c2c0a45 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test06042_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test06042_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test06042_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..0b11598 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..f540a3f --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test06042_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = test06042_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..3027593 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..95919e4 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + test06042_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = test06042_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.class new file mode 100644 index 0000000..5c835d9 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.java new file mode 100644 index 0000000..e030bde --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitSecondPiramidTest.java @@ -0,0 +1,34 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + test06042_gmail_com.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..272188a Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..b2af931 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package test06042_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + test06042_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..94b1f7b Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e3ed968 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,14 @@ +package test06042_gmail_com; + +public class LuckyFiveSecond { + + public static void main(String[] args) { + int number = 6; + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.class b/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.class new file mode 100644 index 0000000..6e7e1b1 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.java b/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.java new file mode 100644 index 0000000..d1c0c71 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/ManipulateVariable.java @@ -0,0 +1,11 @@ +package test06042_gmail_com; + +public class ManipulateVariable { + public static void main(String args[]) { + int jumlah = 3; + String barang = "Gula"; + int harga = 40000; + + System.out.print("Pembelian " + barang + " berjumlah " + jumlah + " sehingga harga yang dibayarkan adalah " + harga*jumlah); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/MyClass.class b/online-compiler/java_files/test06042_gmail_com/MyClass.class new file mode 100644 index 0000000..946301c Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/MyClass.java b/online-compiler/java_files/test06042_gmail_com/MyClass.java new file mode 100644 index 0000000..d0e9a44 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test06042_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y ; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/Order.class b/online-compiler/java_files/test06042_gmail_com/Order.class new file mode 100644 index 0000000..c6d5db1 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/Order.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/Order.java b/online-compiler/java_files/test06042_gmail_com/Order.java new file mode 100644 index 0000000..07d159c --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/Order.java @@ -0,0 +1,20 @@ +package test06042_gmail_com; + +public class Order { + + public static String condition(String order) { + double itemCost = 30.99; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + return order; + } + + public static void main(String[] args) { + String order = ""; + String result = condition(order); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/OrderCase.class b/online-compiler/java_files/test06042_gmail_com/OrderCase.class new file mode 100644 index 0000000..d31ee48 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/OrderCase.java b/online-compiler/java_files/test06042_gmail_com/OrderCase.java new file mode 100644 index 0000000..074460f --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package test06042_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test06042_gmail_com/SecondPiramid.class b/online-compiler/java_files/test06042_gmail_com/SecondPiramid.class new file mode 100644 index 0000000..18debd3 Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/SecondPiramid.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/SecondPiramid.java b/online-compiler/java_files/test06042_gmail_com/SecondPiramid.java new file mode 100644 index 0000000..444107c --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/SecondPiramid.java @@ -0,0 +1,14 @@ +package test06042_gmail_com; + +public class SecondPiramid { + public static void main(String args[]) { + String output = ""; + for(int i = 1; i <= 5; i++) { + for(int j = 1; j <= i ; j++) { + output += "*"; + } + output += "\n"; + } + System.out.print(output); + } +} diff --git a/online-compiler/java_files/test06042_gmail_com/TipeData.class b/online-compiler/java_files/test06042_gmail_com/TipeData.class new file mode 100644 index 0000000..d1cbeed Binary files /dev/null and b/online-compiler/java_files/test06042_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/test06042_gmail_com/TipeData.java b/online-compiler/java_files/test06042_gmail_com/TipeData.java new file mode 100644 index 0000000..b5681d0 --- /dev/null +++ b/online-compiler/java_files/test06042_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package test06042_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/HelloWorld.class b/online-compiler/java_files/test0703_gmail_com/HelloWorld.class new file mode 100644 index 0000000..e49ab7e Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/HelloWorld.java b/online-compiler/java_files/test0703_gmail_com/HelloWorld.java new file mode 100644 index 0000000..7f958d7 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test0703_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..3c9dfae Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..4f132f8 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test0703_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test0703_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..7a78d3c Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..4dcc3d1 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package test0703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test0703_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test0703_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..54c907c Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..e9c1721 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test0703_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test0703_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test0703_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..0cfd04f Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..e0408a0 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package test0703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test0703_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = test0703_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.class new file mode 100644 index 0000000..949c3e7 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..6fe4fd6 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package test0703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + test0703_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = test0703_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.class b/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.class new file mode 100644 index 0000000..8ff63b9 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..1616006 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package test0703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + test0703_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = test0703_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..905e555 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..46bae0e --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package test0703_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + LuckyFiveSecond luck = new LuckyFiveSecond(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/MyClass.class b/online-compiler/java_files/test0703_gmail_com/MyClass.class new file mode 100644 index 0000000..1ff5d87 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/MyClass.java b/online-compiler/java_files/test0703_gmail_com/MyClass.java new file mode 100644 index 0000000..94761da --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test0703_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/NewsFeed.class b/online-compiler/java_files/test0703_gmail_com/NewsFeed.class new file mode 100644 index 0000000..bcd9a18 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/NewsFeed.java b/online-compiler/java_files/test0703_gmail_com/NewsFeed.java new file mode 100644 index 0000000..fc399a7 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/NewsFeed.java @@ -0,0 +1,19 @@ +package test0703_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/Password.class b/online-compiler/java_files/test0703_gmail_com/Password.class new file mode 100644 index 0000000..560f627 Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/Password.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/Password.java b/online-compiler/java_files/test0703_gmail_com/Password.java new file mode 100644 index 0000000..4fde84a --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/Password.java @@ -0,0 +1,20 @@ +package test0703_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + + } \ No newline at end of file diff --git a/online-compiler/java_files/test0703_gmail_com/Poetry.class b/online-compiler/java_files/test0703_gmail_com/Poetry.class new file mode 100644 index 0000000..4a8e57e Binary files /dev/null and b/online-compiler/java_files/test0703_gmail_com/Poetry.class differ diff --git a/online-compiler/java_files/test0703_gmail_com/Poetry.java b/online-compiler/java_files/test0703_gmail_com/Poetry.java new file mode 100644 index 0000000..4335050 --- /dev/null +++ b/online-compiler/java_files/test0703_gmail_com/Poetry.java @@ -0,0 +1,18 @@ +package test0703_gmail_com; + +public class Poetry { + + public static String Poet() { + String line = "The Heav'ns and all the Constellations rung"; + return line; + } + + public static void main(String[] args) { + + String line = Poet(); + + // Change the arguments: + System.out.print(line.substring(4, 11)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/Angka.class b/online-compiler/java_files/test0903_gmail_com/Angka.class new file mode 100644 index 0000000..e271c58 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/Angka.java b/online-compiler/java_files/test0903_gmail_com/Angka.java new file mode 100644 index 0000000..6c08352 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package test0903_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/test0903_gmail_com/HelloWorld.class b/online-compiler/java_files/test0903_gmail_com/HelloWorld.class new file mode 100644 index 0000000..be2902c Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/HelloWorld.java b/online-compiler/java_files/test0903_gmail_com/HelloWorld.java new file mode 100644 index 0000000..96f88e5 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test0903_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..343b2dd Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..d0eb74e --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test0903_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..d7923c8 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..7abe0bc --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test0903_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..8e9a83b Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..8d968f7 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test0903_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test0903_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..b8c0503 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..7514729 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + test0903_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test0903_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..b654f42 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..61eb700 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test0903_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test0903_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test0903_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..a76b11f Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..33fa45b --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test0903_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = test0903_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..3f5bf91 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..992c6ca --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test0903_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = test0903_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.class new file mode 100644 index 0000000..968da88 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..632eef3 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test0903_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = test0903_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + test0903_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.class b/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.class new file mode 100644 index 0000000..a91ff6e Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..1eeb6ed --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package test0903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + test0903_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = test0903_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/test0903_gmail_com/LuckyFive.class b/online-compiler/java_files/test0903_gmail_com/LuckyFive.class new file mode 100644 index 0000000..8ada666 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/LuckyFive.java b/online-compiler/java_files/test0903_gmail_com/LuckyFive.java new file mode 100644 index 0000000..da3e256 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package test0903_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..740a65b Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..affb1ee --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package test0903_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + LuckyFiveSecond luck = new LuckyFiveSecond(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/MyClass.class b/online-compiler/java_files/test0903_gmail_com/MyClass.class new file mode 100644 index 0000000..29cca07 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/MyClass.java b/online-compiler/java_files/test0903_gmail_com/MyClass.java new file mode 100644 index 0000000..d8f6af6 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test0903_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x+y ; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/NewsFeed.class b/online-compiler/java_files/test0903_gmail_com/NewsFeed.class new file mode 100644 index 0000000..8ac69d7 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/NewsFeed.java b/online-compiler/java_files/test0903_gmail_com/NewsFeed.java new file mode 100644 index 0000000..239dbef --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/NewsFeed.java @@ -0,0 +1,19 @@ +package test0903_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/OrderCase.class b/online-compiler/java_files/test0903_gmail_com/OrderCase.class new file mode 100644 index 0000000..368d5b4 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/OrderCase.java b/online-compiler/java_files/test0903_gmail_com/OrderCase.java new file mode 100644 index 0000000..6fa2d17 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package test0903_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 9; + break; + case "Express": + shippingCost = 9; + break; + default: + shippingCost = 9; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/OrderNest.class b/online-compiler/java_files/test0903_gmail_com/OrderNest.class new file mode 100644 index 0000000..0211cfb Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/OrderNest.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/OrderNest.java b/online-compiler/java_files/test0903_gmail_com/OrderNest.java new file mode 100644 index 0000000..598bbb8 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package test0903_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + return 0.85; + } else { + return 1.75; + } + } else { + return 0.5; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } \ No newline at end of file diff --git a/online-compiler/java_files/test0903_gmail_com/Password.class b/online-compiler/java_files/test0903_gmail_com/Password.class new file mode 100644 index 0000000..7f66347 Binary files /dev/null and b/online-compiler/java_files/test0903_gmail_com/Password.class differ diff --git a/online-compiler/java_files/test0903_gmail_com/Password.java b/online-compiler/java_files/test0903_gmail_com/Password.java new file mode 100644 index 0000000..9748fd7 --- /dev/null +++ b/online-compiler/java_files/test0903_gmail_com/Password.java @@ -0,0 +1,20 @@ +package test0903_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + + } \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/HelloWorld.class b/online-compiler/java_files/test1503_gmail_com/HelloWorld.class new file mode 100644 index 0000000..2886c9e Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/HelloWorld.java b/online-compiler/java_files/test1503_gmail_com/HelloWorld.java new file mode 100644 index 0000000..afdac29 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test1503_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..5e7db73 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..e12dbc7 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test1503_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..b034f76 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..4377cde --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test1503_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test1503_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..c1e7879 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..d8b78f9 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + test1503_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test1503_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..88cdb5e Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..63b99a3 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test1503_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test1503_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test1503_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..175b39f Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..b99c4e2 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test1503_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = test1503_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..a614e1d Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..1b1cf3e --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test1503_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = test1503_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.class new file mode 100644 index 0000000..48fec35 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..5374bdd --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test1503_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = test1503_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + test1503_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..4e33538 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..e0a5529 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package test1503_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + test1503_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = test1503_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/test1503_gmail_com/LuckyFive.class b/online-compiler/java_files/test1503_gmail_com/LuckyFive.class new file mode 100644 index 0000000..60f68ee Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/LuckyFive.java b/online-compiler/java_files/test1503_gmail_com/LuckyFive.java new file mode 100644 index 0000000..0ea654b --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package test1503_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..77c85e8 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..3e61042 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package test1503_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + // Deklarasikan method loop + luck.loop(isikan dengan angka); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/MyClass.class b/online-compiler/java_files/test1503_gmail_com/MyClass.class new file mode 100644 index 0000000..eaa1e58 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/MyClass.java b/online-compiler/java_files/test1503_gmail_com/MyClass.java new file mode 100644 index 0000000..179ab89 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test1503_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} diff --git a/online-compiler/java_files/test1503_gmail_com/NewsFeed.class b/online-compiler/java_files/test1503_gmail_com/NewsFeed.class new file mode 100644 index 0000000..3737d31 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/NewsFeed.java b/online-compiler/java_files/test1503_gmail_com/NewsFeed.java new file mode 100644 index 0000000..aa64b47 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/NewsFeed.java @@ -0,0 +1,20 @@ +package test1503_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = samplefeed.getTopics(); + + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/Order.class b/online-compiler/java_files/test1503_gmail_com/Order.class new file mode 100644 index 0000000..d12545a Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/Order.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/Order.java b/online-compiler/java_files/test1503_gmail_com/Order.java new file mode 100644 index 0000000..d4f97d9 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/Order.java @@ -0,0 +1,20 @@ +package test1503_gmail_com; + +public class Order { + + public static String condition(String order) { + double itemCost = 30.99; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + return order; + } + + public static void main(String[] args) { + String order = ""; + String result = condition(order); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/OrderCase.class b/online-compiler/java_files/test1503_gmail_com/OrderCase.class new file mode 100644 index 0000000..7b0f4bb Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/OrderCase.java b/online-compiler/java_files/test1503_gmail_com/OrderCase.java new file mode 100644 index 0000000..16976b0 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package test1503_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 9; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1503_gmail_com/OrderNest.class b/online-compiler/java_files/test1503_gmail_com/OrderNest.class new file mode 100644 index 0000000..20fc984 Binary files /dev/null and b/online-compiler/java_files/test1503_gmail_com/OrderNest.class differ diff --git a/online-compiler/java_files/test1503_gmail_com/OrderNest.java b/online-compiler/java_files/test1503_gmail_com/OrderNest.java new file mode 100644 index 0000000..1c88333 --- /dev/null +++ b/online-compiler/java_files/test1503_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package test1503_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + // write here + } else { + // write here + } + } else { + return 0.50; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } \ No newline at end of file diff --git a/online-compiler/java_files/test1505_gmail_com/Angka.class b/online-compiler/java_files/test1505_gmail_com/Angka.class new file mode 100644 index 0000000..8442d80 Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/Angka.java b/online-compiler/java_files/test1505_gmail_com/Angka.java new file mode 100644 index 0000000..9ab3099 --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package test1505_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/test1505_gmail_com/HelloWorld.class b/online-compiler/java_files/test1505_gmail_com/HelloWorld.class new file mode 100644 index 0000000..e21d6c9 Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/HelloWorld.java b/online-compiler/java_files/test1505_gmail_com/HelloWorld.java new file mode 100644 index 0000000..6c99460 --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test1505_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..14ade4f Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..921bbfa --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package test1505_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + test1505_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..307cabf Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..75fbf2b --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test1505_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test1505_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..115204d Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..a7d0f0c --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test1505_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test1505_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test1505_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1505_gmail_com/MyClass.class b/online-compiler/java_files/test1505_gmail_com/MyClass.class new file mode 100644 index 0000000..0bcaba5 Binary files /dev/null and b/online-compiler/java_files/test1505_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test1505_gmail_com/MyClass.java b/online-compiler/java_files/test1505_gmail_com/MyClass.java new file mode 100644 index 0000000..556defe --- /dev/null +++ b/online-compiler/java_files/test1505_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test1505_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/HelloWorld.class b/online-compiler/java_files/test1703_gmail_com/HelloWorld.class new file mode 100644 index 0000000..8940398 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/HelloWorld.java b/online-compiler/java_files/test1703_gmail_com/HelloWorld.java new file mode 100644 index 0000000..741067c --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test1703_gmail_com; + +public class HelloWorld{ + public static void main(String[] args){ + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..7150e01 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..9663162 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test1703_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test1703_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..f3928e4 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..ffe22ec --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test1703_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test1703_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test1703_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..912acdd Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..5871738 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package test1703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test1703_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = test1703_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..2616a19 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..c5908f7 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package test1703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test1703_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = test1703_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.class new file mode 100644 index 0000000..d87b957 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..7338b6e --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package test1703_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test1703_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = test1703_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + test1703_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..ac56c46 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..951c8aa --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package test1703_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + test1703_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = test1703_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/test1703_gmail_com/MyClass.class b/online-compiler/java_files/test1703_gmail_com/MyClass.class new file mode 100644 index 0000000..465cdb6 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/MyClass.java b/online-compiler/java_files/test1703_gmail_com/MyClass.java new file mode 100644 index 0000000..9be312f --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/MyClass.java @@ -0,0 +1,20 @@ +package test1703_gmail_com; + +package junit; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x+y ; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/NewsFeed.class b/online-compiler/java_files/test1703_gmail_com/NewsFeed.class new file mode 100644 index 0000000..b1b6e2d Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/NewsFeed.java b/online-compiler/java_files/test1703_gmail_com/NewsFeed.java new file mode 100644 index 0000000..9dc25d9 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/NewsFeed.java @@ -0,0 +1,20 @@ +package test1703_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = samplefeed.getTopics(); + + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/Order.class b/online-compiler/java_files/test1703_gmail_com/Order.class new file mode 100644 index 0000000..ccad451 Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/Order.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/Order.java b/online-compiler/java_files/test1703_gmail_com/Order.java new file mode 100644 index 0000000..02d49f8 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/Order.java @@ -0,0 +1,20 @@ +package test1703_gmail_com; + +public class Order { + + public static String condition(String order) { + double itemCost = 30.99; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + return order; + } + + public static void main(String[] args) { + String order = ""; + String result = condition(order); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test1703_gmail_com/OrderCase.class b/online-compiler/java_files/test1703_gmail_com/OrderCase.class new file mode 100644 index 0000000..347f7bb Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/OrderCase.java b/online-compiler/java_files/test1703_gmail_com/OrderCase.java new file mode 100644 index 0000000..f381a29 --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package test1703_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 9; + break; + case "Express": + shippingCost = 9; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} diff --git a/online-compiler/java_files/test1703_gmail_com/OrderNest.class b/online-compiler/java_files/test1703_gmail_com/OrderNest.class new file mode 100644 index 0000000..fa47ced Binary files /dev/null and b/online-compiler/java_files/test1703_gmail_com/OrderNest.class differ diff --git a/online-compiler/java_files/test1703_gmail_com/OrderNest.java b/online-compiler/java_files/test1703_gmail_com/OrderNest.java new file mode 100644 index 0000000..3eedd4f --- /dev/null +++ b/online-compiler/java_files/test1703_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package test1703_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + return 0.85; + } else { + return 1.75; + } + } else { + return 0.50; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } diff --git a/online-compiler/java_files/test2903_gmail_com/HelloWorld.class b/online-compiler/java_files/test2903_gmail_com/HelloWorld.class new file mode 100644 index 0000000..262edf8 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/HelloWorld.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/HelloWorld.java b/online-compiler/java_files/test2903_gmail_com/HelloWorld.java new file mode 100644 index 0000000..3b2f294 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test2903_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.class new file mode 100644 index 0000000..60686d1 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..d3edbfa --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test2903_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.class new file mode 100644 index 0000000..1691a74 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..d79c83e --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + test2903_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test2903_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.class new file mode 100644 index 0000000..a7a3d73 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..75e15ac --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + test2903_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + test2903_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.class new file mode 100644 index 0000000..5034875 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..0d19c20 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package test2903_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + test2903_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = test2903_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.class new file mode 100644 index 0000000..29b8bdd Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..3bdd6e3 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + test2903_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = test2903_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..07da7e5 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..924bb43 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test2903_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = test2903_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.class new file mode 100644 index 0000000..c7ccfe1 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..856903a --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + test2903_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = test2903_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + test2903_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..599b5a5 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..39eeaeb --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitOrderTest.java @@ -0,0 +1,36 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + test2903_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + String result = test2903_gmail_com.Order.condition(null); + assertEquals("is result = High Value Item!", "High Value Item!", String.valueOf(result)); + } + +} diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.class b/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.class new file mode 100644 index 0000000..04ed51b Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..9bc85d0 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package test2903_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + test2903_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = test2903_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/LuckyFive.class b/online-compiler/java_files/test2903_gmail_com/LuckyFive.class new file mode 100644 index 0000000..18bff9f Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/LuckyFive.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/LuckyFive.java b/online-compiler/java_files/test2903_gmail_com/LuckyFive.java new file mode 100644 index 0000000..3841dc7 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package test2903_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.class b/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.class new file mode 100644 index 0000000..d6c8159 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..e29d3b0 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package test2903_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + LuckyFiveSecond luck = new LuckyFiveSecond(); + luck.loop(6); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/MyClass.class b/online-compiler/java_files/test2903_gmail_com/MyClass.class new file mode 100644 index 0000000..05bb307 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/MyClass.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/MyClass.java b/online-compiler/java_files/test2903_gmail_com/MyClass.java new file mode 100644 index 0000000..c4eb502 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package test2903_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/NewsFeed.class b/online-compiler/java_files/test2903_gmail_com/NewsFeed.class new file mode 100644 index 0000000..bad354a Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/NewsFeed.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/NewsFeed.java b/online-compiler/java_files/test2903_gmail_com/NewsFeed.java new file mode 100644 index 0000000..834607d --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/NewsFeed.java @@ -0,0 +1,19 @@ +package test2903_gmail_com; + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/Order.class b/online-compiler/java_files/test2903_gmail_com/Order.class new file mode 100644 index 0000000..407203d Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/Order.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/Order.java b/online-compiler/java_files/test2903_gmail_com/Order.java new file mode 100644 index 0000000..d49edbb --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/Order.java @@ -0,0 +1,20 @@ +package test2903_gmail_com; + +public class Order { + + public static String condition(String order) { + double itemCost = 30.99; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + return order; + } + + public static void main(String[] args) { + String order = ""; + String result = condition(order); + System.out.print(result); + } +} diff --git a/online-compiler/java_files/test2903_gmail_com/OrderCase.class b/online-compiler/java_files/test2903_gmail_com/OrderCase.class new file mode 100644 index 0000000..b480197 Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/OrderCase.java b/online-compiler/java_files/test2903_gmail_com/OrderCase.java new file mode 100644 index 0000000..f8b9e63 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package test2903_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/OrderNest.class b/online-compiler/java_files/test2903_gmail_com/OrderNest.class new file mode 100644 index 0000000..63532da Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/OrderNest.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/OrderNest.java b/online-compiler/java_files/test2903_gmail_com/OrderNest.java new file mode 100644 index 0000000..a94e52e --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package test2903_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + return 0.85; + } else { + return 1.75; + } + } else { + return 0.50; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } \ No newline at end of file diff --git a/online-compiler/java_files/test2903_gmail_com/Password.class b/online-compiler/java_files/test2903_gmail_com/Password.class new file mode 100644 index 0000000..e763d8f Binary files /dev/null and b/online-compiler/java_files/test2903_gmail_com/Password.class differ diff --git a/online-compiler/java_files/test2903_gmail_com/Password.java b/online-compiler/java_files/test2903_gmail_com/Password.java new file mode 100644 index 0000000..264b9b3 --- /dev/null +++ b/online-compiler/java_files/test2903_gmail_com/Password.java @@ -0,0 +1,20 @@ +package test2903_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + + } \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitAngkaTest.java.txt b/online-compiler/java_files/test_cases/JUnitAngkaTest.java.txt new file mode 100644 index 0000000..dc9b194 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitAngkaTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + {{user_package}}.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitAverageTest.java.txt b/online-compiler/java_files/test_cases/JUnitAverageTest.java.txt new file mode 100644 index 0000000..dd7df30 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitAverageTest.java.txt @@ -0,0 +1,33 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAverageTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + {{user_package}}.Average.main(null); + double expectedOutput = 83.33; + assertEquals("Output not the same",expectedOutput,Double.parseDouble(outputStream.toString()), 0.01); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitBankTest.java.txt b/online-compiler/java_files/test_cases/JUnitBankTest.java.txt new file mode 100644 index 0000000..b8c1d16 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitBankTest.java.txt @@ -0,0 +1,36 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBankTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataBunga = {{user_package}}.Bank.hitungBunga(1000000, 6, 5); + double expectedOutputBunga = 1338225.5776; + assertEquals("calculate not the same",expectedOutputBunga,Double.valueOf(dataBunga), 0.01); + + {{user_package}}.Bank.main(null); + String expectedOutput = "Jumlah uang setelah 5 tahun: " + dataBunga; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitBookStoreTest.java.txt b/online-compiler/java_files/test_cases/JUnitBookStoreTest.java.txt new file mode 100644 index 0000000..66010d8 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitBookStoreTest.java.txt @@ -0,0 +1,33 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitBookStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + {{user_package}}.BookStore.main(null); + String expectedOutput = "diskon yang didapatkan adalah 20%"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/test_cases/JUnitFibonacciTest.java.txt b/online-compiler/java_files/test_cases/JUnitFibonacciTest.java.txt new file mode 100644 index 0000000..33ba359 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitFibonacciTest.java.txt @@ -0,0 +1,33 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitFibonacciTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isFibonnaci() { + {{user_package}}.Fibonacci.main(null); + String expectedOutput = "Deret Fibonacci: \n0 1 1 2 3 5 8 13 "; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} diff --git a/online-compiler/java_files/test_cases/JUnitHelloWorldTest.java.txt b/online-compiler/java_files/test_cases/JUnitHelloWorldTest.java.txt new file mode 100644 index 0000000..ce94a40 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitHelloWorldTest.java.txt @@ -0,0 +1,29 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + {{user_package}}.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitLingkaranTest.java.txt b/online-compiler/java_files/test_cases/JUnitLingkaranTest.java.txt new file mode 100644 index 0000000..cdb027a --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitLingkaranTest.java.txt @@ -0,0 +1,40 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLingkaranTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLingkaran() { + double dataLuas = {{user_package}}.Lingkaran.luasLingkaran(3.14, 14); + double expectedOutputLuas = 615.44; + assertEquals("calculate luas not the same",expectedOutputLuas,Double.valueOf(dataLuas), 0.01); + + double dataKeliling = {{user_package}}.Lingkaran.kelilingLingkaran(3.14, 14); + double expectedOutputKeliling = 87.92; + assertEquals("calculate luas not the same",expectedOutputKeliling,Double.valueOf(dataKeliling), 0.01); + + {{user_package}}.Lingkaran.main(null); + String expectedOutput = "Luas Lingkaran = " + dataLuas + "\n" + "Keliling Lingkaran = " + dataKeliling; + assertEquals("Output not same", expectedOutput, outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitLoopingTest.java.txt b/online-compiler/java_files/test_cases/JUnitLoopingTest.java.txt new file mode 100644 index 0000000..2875026 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitLoopingTest.java.txt @@ -0,0 +1,29 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLoopingTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLooped5time() { + {{user_package}}.Looping.loop(5); + assertEquals("Is Looped 5 times", "01234", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitLuckyFiveSecondTest.java.txt b/online-compiler/java_files/test_cases/JUnitLuckyFiveSecondTest.java.txt new file mode 100644 index 0000000..8d33040 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitLuckyFiveSecondTest.java.txt @@ -0,0 +1,31 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + {{user_package}}.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitLuckyFiveTest.java.txt b/online-compiler/java_files/test_cases/JUnitLuckyFiveTest.java.txt new file mode 100644 index 0000000..20e7580 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitLuckyFiveTest.java.txt @@ -0,0 +1,31 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + {{user_package}}.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitMyClassTest.java.txt b/online-compiler/java_files/test_cases/JUnitMyClassTest.java.txt new file mode 100644 index 0000000..391241e --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitMyClassTest.java.txt @@ -0,0 +1,36 @@ +package {{user_package}}; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + {{user_package}}.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = {{user_package}}.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitNewsFeedTest.java.txt b/online-compiler/java_files/test_cases/JUnitNewsFeedTest.java.txt new file mode 100644 index 0000000..ab658de --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitNewsFeedTest.java.txt @@ -0,0 +1,32 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + {{user_package}}.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitOrderCaseTest.java.txt b/online-compiler/java_files/test_cases/JUnitOrderCaseTest.java.txt new file mode 100644 index 0000000..e5978a4 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitOrderCaseTest.java.txt @@ -0,0 +1,30 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + {{user_package}}.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitOrderNestTest.java.txt b/online-compiler/java_files/test_cases/JUnitOrderNestTest.java.txt new file mode 100644 index 0000000..f6fece6 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitOrderNestTest.java.txt @@ -0,0 +1,36 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + {{user_package}}.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = {{user_package}}.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + {{user_package}}.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/test_cases/JUnitOrderTest.java.txt b/online-compiler/java_files/test_cases/JUnitOrderTest.java.txt new file mode 100644 index 0000000..aad2915 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitOrderTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + {{user_package}}.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/test_cases/JUnitPasswordTest.java.txt b/online-compiler/java_files/test_cases/JUnitPasswordTest.java.txt new file mode 100644 index 0000000..6f1e971 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitPasswordTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + {{user_package}}.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = {{user_package}}.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitPoetryTest.java.txt b/online-compiler/java_files/test_cases/JUnitPoetryTest.java.txt new file mode 100644 index 0000000..c19cdd3 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitPoetryTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + {{user_package}}.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = {{user_package}}.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/test_cases/JUnitSecondPiramidTest.java.txt b/online-compiler/java_files/test_cases/JUnitSecondPiramidTest.java.txt new file mode 100644 index 0000000..47dc531 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitSecondPiramidTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitSecondPiramidTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPiramid() { + {{user_package}}.SecondPiramid.main(null); + String expectedOutput = "*\n**\n***\n****\n*****\n"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } + +} \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitStoreTest.java.txt b/online-compiler/java_files/test_cases/JUnitStoreTest.java.txt new file mode 100644 index 0000000..3750ded --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitStoreTest.java.txt @@ -0,0 +1,25 @@ +package {{user_package}}; +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitStoreTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + + @Test + public void isStoreTest() { + System.out.println("Test is Succes and completed"); + {{user_package}}.Store.main(null); + assertEquals("Main Constructor", "I am inside the constructor method", outputStream.toString()); + } + +} diff --git a/online-compiler/java_files/test_cases/JUnitTipeDataTest.java.txt b/online-compiler/java_files/test_cases/JUnitTipeDataTest.java.txt new file mode 100644 index 0000000..3e62ab0 --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitTipeDataTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + {{user_package}}.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test_cases/JUnitTweetCounterTest.java.txt b/online-compiler/java_files/test_cases/JUnitTweetCounterTest.java.txt new file mode 100644 index 0000000..93015ba --- /dev/null +++ b/online-compiler/java_files/test_cases/JUnitTweetCounterTest.java.txt @@ -0,0 +1,34 @@ +package {{user_package}}; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTweetCounterTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTweetCounter() { + {{user_package}}.TweetCounter.main(null); + assertEquals("Tweet Length not same", "83", outputStream.toString()); + + String data = {{user_package}}.TweetCounter.Tweet(null); + assertEquals("tweet in String", "Liz Lemon, ninjas are kind of cool... I just dont know any personally. Get on that.", data); + } +} diff --git a/online-compiler/java_files/test_gmail_com/.gitignore b/online-compiler/java_files/test_gmail_com/.gitignore new file mode 100644 index 0000000..e9f12bc --- /dev/null +++ b/online-compiler/java_files/test_gmail_com/.gitignore @@ -0,0 +1,2 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class diff --git a/online-compiler/java_files/test_gmail_com/HelloWorld.java b/online-compiler/java_files/test_gmail_com/HelloWorld.java new file mode 100644 index 0000000..57e062e --- /dev/null +++ b/online-compiler/java_files/test_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package test_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/test_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/test_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..73464bb --- /dev/null +++ b/online-compiler/java_files/test_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package test_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + test_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/.gitignore b/online-compiler/java_files/testing_gmail_com/.gitignore new file mode 100644 index 0000000..dd28fee --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/.gitignore @@ -0,0 +1,22 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class +/JUnitLuckyFiveSecondTest.class +/JUnitLuckyFiveTest.class +/JUnitMyClassTest.class +/JUnitNewsFeedTest.class +/JUnitOrderCaseTest.class +/JUnitOrderNestTest.class +/JUnitOrderTest.class +/JUnitPasswordTest.class +/JUnitPoetryTest.class +/JUnitTweetCounterTest.class +/LuckyFive.class +/LuckyFiveSecond.class +/MyClass.class +/NewsFeed.class +/Order.class +/OrderCase.class +/OrderNest.class +/Password.class +/Poetry.class +/TweetCounter.class diff --git a/online-compiler/java_files/testing_gmail_com/HelloWorld.java b/online-compiler/java_files/testing_gmail_com/HelloWorld.java new file mode 100644 index 0000000..c0b6caf --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package testing_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/testing_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..2127acd --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + testing_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveSecondTest.java b/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveSecondTest.java new file mode 100644 index 0000000..3d174fa --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveSecondTest.java @@ -0,0 +1,33 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveSecondTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFiveSecond() { + testing_gmail_com.LuckyFiveSecond.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + testing_gmail_com.LuckyFiveSecond.loop(6); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveTest.java b/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveTest.java new file mode 100644 index 0000000..d36033c --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitLuckyFiveTest.java @@ -0,0 +1,33 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitLuckyFiveTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isLuckyFive() { + testing_gmail_com.LuckyFive.main(null); + assertEquals("Is Loop not same", "12345", outputStream.toString()); + + testing_gmail_com.LuckyFive.loop(6); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitMyClassTest.java b/online-compiler/java_files/testing_gmail_com/JUnitMyClassTest.java new file mode 100644 index 0000000..11f5cfa --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitMyClassTest.java @@ -0,0 +1,36 @@ +package testing_gmail_com; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class JUnitMyClassTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void myResultTest() { + testing_gmail_com.MyClass.main(null); + assertEquals("MyClass Double Result", "30.5", outputStream.toString()); + + double result = testing_gmail_com.MyClass.add(20, 10.5); + assertEquals("is result = 30.5", "30.5", String.valueOf(result)); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/JUnitNewsFeedTest.java b/online-compiler/java_files/testing_gmail_com/JUnitNewsFeedTest.java new file mode 100644 index 0000000..55ed776 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitNewsFeedTest.java @@ -0,0 +1,36 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Arrays; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitNewsFeedTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isNewsFeed() { + testing_gmail_com.NewsFeed.main(null); + assertEquals("Topic not same", "[Opinion, Tech, Science, Health]", outputStream.toString()); + + String[] result = testing_gmail_com.NewsFeed.getTopics(); + String finalres = Arrays.toString(result); + assertEquals("is Topics", "[Opinion, Tech, Science, Health]", finalres); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/testing_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..8588c78 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,33 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + testing_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + + double data = testing_gmail_com.OrderCase.calculateShipping("Express"); + assertEquals("Result from CalculateShipping", "1.75" ,String.valueOf(data)); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitOrderNestTest.java b/online-compiler/java_files/testing_gmail_com/JUnitOrderNestTest.java new file mode 100644 index 0000000..2610829 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitOrderNestTest.java @@ -0,0 +1,36 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderNestTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + testing_gmail_com.OrderNest.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 0.85", outputStream.toString()); + + double data1 = testing_gmail_com.OrderNest.calculateShipping("Express", "ship50"); + assertEquals("Calculate Shipping not same", "0.85" ,String.valueOf(data1)); + + testing_gmail_com.OrderNest.ship(true, "Express", "ship50"); + + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/testing_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..cf5d359 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitOrderTest.java @@ -0,0 +1,35 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + testing_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + + } + +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitPasswordTest.java b/online-compiler/java_files/testing_gmail_com/JUnitPasswordTest.java new file mode 100644 index 0000000..a9d2675 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitPasswordTest.java @@ -0,0 +1,34 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPasswordTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPassword() { + testing_gmail_com.Password.main(null); + assertEquals("Password not same", "0true", outputStream.toString()); + + String data = testing_gmail_com.Password.pass(); + assertEquals("String Password not same", "correcthorsebatterystaple" ,data); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitPoetryTest.java b/online-compiler/java_files/testing_gmail_com/JUnitPoetryTest.java new file mode 100644 index 0000000..9fe882d --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitPoetryTest.java @@ -0,0 +1,34 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitPoetryTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isPoetry() { + testing_gmail_com.Poetry.main(null); + assertEquals("Poetry not same", "Heav'ns", outputStream.toString()); + + String data = testing_gmail_com.Poetry.Poet(); + assertEquals("Poetry class", "The Heav'ns and all the Constellations rung", data); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/JUnitTweetCounterTest.java b/online-compiler/java_files/testing_gmail_com/JUnitTweetCounterTest.java new file mode 100644 index 0000000..7b9de52 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/JUnitTweetCounterTest.java @@ -0,0 +1,34 @@ +package testing_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTweetCounterTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTweetCounter() { + testing_gmail_com.TweetCounter.main(null); + assertEquals("Tweet Length not same", "83", outputStream.toString()); + + String data = testing_gmail_com.TweetCounter.Tweet(null); + assertEquals("tweet in String", "Liz Lemon, ninjas are kind of cool... I just dont know any personally. Get on that.", data); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/LuckyFive.java b/online-compiler/java_files/testing_gmail_com/LuckyFive.java new file mode 100644 index 0000000..4e76e6f --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/LuckyFive.java @@ -0,0 +1,15 @@ +package testing_gmail_com; + +public class LuckyFive { + + public static void loop(int number) { + for(int i = 1; i < number; i++) { + System.out.print(i); + } + } + + public static void main(String[] args) { + LuckyFive luck = new LuckyFive(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/LuckyFiveSecond.java b/online-compiler/java_files/testing_gmail_com/LuckyFiveSecond.java new file mode 100644 index 0000000..8ee37bb --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/LuckyFiveSecond.java @@ -0,0 +1,17 @@ +package testing_gmail_com; + +public class LuckyFiveSecond { + + public static void loop(int number) { + int i = 1; + while (i < number) { + System.out.print(i); + i++; + } + } + + public static void main(String[] args) { + LuckyFiveSecond luck = new LuckyFiveSecond(); + luck.loop(6); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/MyClass.java b/online-compiler/java_files/testing_gmail_com/MyClass.java new file mode 100644 index 0000000..2141080 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/MyClass.java @@ -0,0 +1,18 @@ +package testing_gmail_com; + +public class MyClass { + + public static double add(int x, double y) { + + double result = x + y; + return result; + } + + public static void main(String args[]) { + + int x = 20; + double y = 10.5; + double result = add(x,y); + System.out.print(result); + } +} diff --git a/online-compiler/java_files/testing_gmail_com/NewsFeed.java b/online-compiler/java_files/testing_gmail_com/NewsFeed.java new file mode 100644 index 0000000..083d8d0 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/NewsFeed.java @@ -0,0 +1,20 @@ +package testing_gmail_com; + + +import java.util.Arrays; + +public class NewsFeed { + public NewsFeed() {} + + public static String[] getTopics() { + String[] topics = {"Opinion", "Tech", "Science", "Health"}; + return topics; + } + + public static void main(String[] args) { + NewsFeed samplefeed = new NewsFeed(); + String[] topics = NewsFeed.getTopics(); + String topicArray = Arrays.toString(topics); + System.out.print(topicArray); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/Order.java b/online-compiler/java_files/testing_gmail_com/Order.java new file mode 100644 index 0000000..24a485d --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/Order.java @@ -0,0 +1,8 @@ +package testing_gmail_com; + +public class Order { + public static void main(String[] args) { + + System.out.print("High Value Item!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/OrderCase.java b/online-compiler/java_files/testing_gmail_com/OrderCase.java new file mode 100644 index 0000000..8744e8d --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/OrderCase.java @@ -0,0 +1,32 @@ +package testing_gmail_com; + +import java.util.Arrays; + +public class OrderCase { + + public static double calculateShipping(String shipping) { + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + return shippingCost; + } + + public static void main(String[] args) { + // do not alter the main method! + String shipping = "Express"; + calculateShipping(shipping); + + double result = calculateShipping(shipping); + System.out.print("Shipping cost: " + result); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/OrderNest.java b/online-compiler/java_files/testing_gmail_com/OrderNest.java new file mode 100644 index 0000000..3894377 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/OrderNest.java @@ -0,0 +1,43 @@ +package testing_gmail_com; + +public class OrderNest { + boolean isFilled; + String shipping; + String couponCode; + + public OrderNest(boolean filled, String shippingMethod, String coupon) { + isFilled = filled; + shipping = shippingMethod; + couponCode = coupon; + } + + public static void ship(boolean isFilled, String shipping, String couponCode) { + if (isFilled) { + System.out.print("Shipping cost: " + calculateShipping(shipping, couponCode)); + } else { + System.out.print("Order not ready"); + } + } + + public static double calculateShipping(String shipping, String couponCode) { + if (shipping.equals("Regular")) { + return 0; + } else if (shipping.equals("Express")) { + // Add your code here + if (couponCode == "ship50"){ + return .85; + } else { + return 1.75; + } + } else { + return .50; + } + } + + public static void main(String[] args) { + // do not alter the main method! + OrderNest book = new OrderNest(true, "Express", "ship50"); + + book.ship(true, "Express", "ship50"); + } + } \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/Password.java b/online-compiler/java_files/testing_gmail_com/Password.java new file mode 100644 index 0000000..edb1242 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/Password.java @@ -0,0 +1,20 @@ +package testing_gmail_com; + +public class Password { + + public static String pass() { + String password = "correcthorsebatterystaple"; + return password; + } + + public static void main(String[] args) { + + String pass = pass(); + + // Write the code: + System.out.print(pass.compareTo("correcthorsebatterystaple")); + System.out.print(pass.equals("correcthorsebatterystaple")); + + } + + } \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/Poetry.java b/online-compiler/java_files/testing_gmail_com/Poetry.java new file mode 100644 index 0000000..6841a73 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/Poetry.java @@ -0,0 +1,18 @@ +package testing_gmail_com; + +public class Poetry { + + public static String Poet() { + String line = "The Heav'ns and all the Constellations rung"; + return line; + } + + public static void main(String[] args) { + + String line = Poet(); + + // Change the arguments: + System.out.print(line.substring(4, 11)); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/testing_gmail_com/TweetCounter.java b/online-compiler/java_files/testing_gmail_com/TweetCounter.java new file mode 100644 index 0000000..a264324 --- /dev/null +++ b/online-compiler/java_files/testing_gmail_com/TweetCounter.java @@ -0,0 +1,16 @@ +package testing_gmail_com; + +public class TweetCounter { + + public static String Tweet(String tweet) { + tweet = "Liz Lemon, ninjas are kind of cool... I just dont know any personally. Get on that."; + return tweet; + } + + public static void main(String[] args) { + + String data = Tweet(null); + // What's the character count? + System.out.print(data.length()); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/tobing_gmail_com/.gitignore b/online-compiler/java_files/tobing_gmail_com/.gitignore new file mode 100644 index 0000000..e9f12bc --- /dev/null +++ b/online-compiler/java_files/tobing_gmail_com/.gitignore @@ -0,0 +1,2 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class diff --git a/online-compiler/java_files/tobing_gmail_com/HelloWorld.java b/online-compiler/java_files/tobing_gmail_com/HelloWorld.java new file mode 100644 index 0000000..74c4492 --- /dev/null +++ b/online-compiler/java_files/tobing_gmail_com/HelloWorld.java @@ -0,0 +1,7 @@ +package tobing_gmail_com; + +public class HelloWorld { + public static void main(String[] args) { + System.out.print("Hello World!"); + } +} \ No newline at end of file diff --git a/online-compiler/java_files/tobing_gmail_com/JUnitHelloWorldTest.java b/online-compiler/java_files/tobing_gmail_com/JUnitHelloWorldTest.java new file mode 100644 index 0000000..92153d8 --- /dev/null +++ b/online-compiler/java_files/tobing_gmail_com/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package tobing_gmail_com; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + tobing_gmail_com.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/user/.gitignore b/online-compiler/java_files/user/.gitignore new file mode 100644 index 0000000..e9f12bc --- /dev/null +++ b/online-compiler/java_files/user/.gitignore @@ -0,0 +1,2 @@ +/HelloWorld.class +/JUnitHelloWorldTest.class diff --git a/online-compiler/java_files/user/HelloWorld.java b/online-compiler/java_files/user/HelloWorld.java new file mode 100644 index 0000000..c379fa8 --- /dev/null +++ b/online-compiler/java_files/user/HelloWorld.java @@ -0,0 +1,7 @@ +package user; + +public class HelloWorld{ +public static void main(String[] args){ + System.out.print("Hello World!"); +} +} \ No newline at end of file diff --git a/online-compiler/java_files/user/JUnitHelloWorldTest.java b/online-compiler/java_files/user/JUnitHelloWorldTest.java new file mode 100644 index 0000000..f90d5cd --- /dev/null +++ b/online-compiler/java_files/user/JUnitHelloWorldTest.java @@ -0,0 +1,29 @@ +package user; + +import static org.junit.Assert.assertEquals; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitHelloWorldTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isHelloWorld() { + user.HelloWorld.main(null); + assertEquals("Is Hello World not same", "Hello World!", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..57ccdfe Binary files /dev/null and b/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..cae3110 --- /dev/null +++ b/online-compiler/java_files/user2_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package user2_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + user2_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/user2_gmail_com/TipeData.class b/online-compiler/java_files/user2_gmail_com/TipeData.class new file mode 100644 index 0000000..66a91c5 Binary files /dev/null and b/online-compiler/java_files/user2_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/user2_gmail_com/TipeData.java b/online-compiler/java_files/user2_gmail_com/TipeData.java new file mode 100644 index 0000000..ac05227 --- /dev/null +++ b/online-compiler/java_files/user2_gmail_com/TipeData.java @@ -0,0 +1,24 @@ +package user2_gmail_com; + +public class TipeData { + public static void main(String args[]) { + // Menentukan tipe data untuk variabel + int panjang, lebar, tinggi; + int vBalok, lBalok; + + // Memberikan nilai pada variabel + panjang = 10; + lebar = 6; + tinggi = 7; + + // Menghitung volume balok + vBalok = panjang * lebar * tinggi; + + // Menghitung luas permukaan balok + lBalok = 2 * (panjang * lebar + panjang * tinggi + lebar * tinggi); + + // Menampilkan hasil + System.out.print("Volume balok = " + vBalok + ", "); + System.out.print("Luas permukaan balok = " + lBalok); + } +} diff --git a/online-compiler/java_files/userbaru_gmail_com/Angka.class b/online-compiler/java_files/userbaru_gmail_com/Angka.class new file mode 100644 index 0000000..c4e7c8a Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/Angka.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/Angka.java b/online-compiler/java_files/userbaru_gmail_com/Angka.java new file mode 100644 index 0000000..f5ccbea --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/Angka.java @@ -0,0 +1,12 @@ +package userbaru_gmail_com; + +public class Angka { + public static void main(String args[]) { + int nilai = 80; + + if(nilai > 70) { + System.out.print("Selamat anda lulus!"); + } + } + +} diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.class b/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.class new file mode 100644 index 0000000..5a2dcc0 Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.java b/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.java new file mode 100644 index 0000000..4d6457d --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/JUnitAngkaTest.java @@ -0,0 +1,34 @@ +package userbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitAngkaTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isAngka() { + userbaru_gmail_com.Angka.main(null); + String expectedOutput = "Selamat anda lulus!"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.class b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.class new file mode 100644 index 0000000..678f8f2 Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.java b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.java new file mode 100644 index 0000000..5ad8acc --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderCaseTest.java @@ -0,0 +1,30 @@ +package userbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderCaseTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myOrderCaseResult() { + userbaru_gmail_com.OrderCase.main(null); + assertEquals("ShippingCost not same", "Shipping cost: 1.75", outputStream.toString()); + } +} diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.class b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.class new file mode 100644 index 0000000..7bc44bb Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.java b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.java new file mode 100644 index 0000000..d483d32 --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/JUnitOrderTest.java @@ -0,0 +1,34 @@ +package userbaru_gmail_com; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +public class JUnitOrderTest { + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + @Test + public void myResultTest() { + userbaru_gmail_com.Order.main(null); + assertEquals("itemCost Condition not same", "High Value Item!", outputStream.toString()); + + } + +} diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.class b/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.class new file mode 100644 index 0000000..f54b52b Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.java b/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.java new file mode 100644 index 0000000..10767af --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/JUnitTipeDataTest.java @@ -0,0 +1,34 @@ +package userbaru_gmail_com; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class JUnitTipeDataTest { + + private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + private final PrintStream oPrintStream = System.out; + + @Before + public void setUpStream() { + System.setOut(new PrintStream(outputStream)); + } + + @After + public void restoreStream() { + System.setOut(oPrintStream); + } + + @Test + public void isTipeData() { + userbaru_gmail_com.TipeData.main(null); + String expectedOutput = "Volume balok = 420, Luas permukaan balok = 344"; + assertEquals("Output not the same", expectedOutput, outputStream.toString()); + + } +} \ No newline at end of file diff --git a/online-compiler/java_files/userbaru_gmail_com/Order.class b/online-compiler/java_files/userbaru_gmail_com/Order.class new file mode 100644 index 0000000..c7b3a46 Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/Order.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/Order.java b/online-compiler/java_files/userbaru_gmail_com/Order.java new file mode 100644 index 0000000..a2ca5de --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/Order.java @@ -0,0 +1,15 @@ +package userbaru_gmail_com; + +public class Order { + + public static void main(String[] args) { + double itemCost = 30.99; + String order = ""; + if(itemCost > 24.00) { + order = "High Value Item!"; + } else { + order = "Low Value Item!"; + } + System.out.print(order); + } +} diff --git a/online-compiler/java_files/userbaru_gmail_com/OrderCase.class b/online-compiler/java_files/userbaru_gmail_com/OrderCase.class new file mode 100644 index 0000000..57978c9 Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/OrderCase.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/OrderCase.java b/online-compiler/java_files/userbaru_gmail_com/OrderCase.java new file mode 100644 index 0000000..d84e81d --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/OrderCase.java @@ -0,0 +1,22 @@ +package userbaru_gmail_com; + +public class OrderCase { + + public static void main(String[] args) { + String shipping = "Express"; + double shippingCost; + // declare switch statement here + switch (shipping) { + case "Regular": + shippingCost = 0; + break; + case "Express": + shippingCost = 1.75; + break; + default: + shippingCost = 0.50; + } + System.out.print("Shipping cost: " + shippingCost); + + } +} diff --git a/online-compiler/java_files/userbaru_gmail_com/TipeData.class b/online-compiler/java_files/userbaru_gmail_com/TipeData.class new file mode 100644 index 0000000..3c91b4a Binary files /dev/null and b/online-compiler/java_files/userbaru_gmail_com/TipeData.class differ diff --git a/online-compiler/java_files/userbaru_gmail_com/TipeData.java b/online-compiler/java_files/userbaru_gmail_com/TipeData.java new file mode 100644 index 0000000..25eda3b --- /dev/null +++ b/online-compiler/java_files/userbaru_gmail_com/TipeData.java @@ -0,0 +1,22 @@ +package userbaru_gmail_com; + +public class TipeData { + public static void main(String args[]) { + + int panjang, lebar, tinggi, vBalok, lBalok; + + panjang = 10; + lebar = 6; + tinggi = 7; + + // volume balok + vBalok = panjang * lebar * tinggi; + + // Luas permukaan balok + lBalok = 2*(panjang * lebar + panjang * tinggi + lebar * tinggi); + + System.out.print("Volume balok = "+ vBalok + ", "); + System.out.print("Luas permukaan balok = "+ lBalok); + + } +} diff --git a/online-compiler/lib/FileCreator.py b/online-compiler/lib/FileCreator.py new file mode 100644 index 0000000..9168e36 --- /dev/null +++ b/online-compiler/lib/FileCreator.py @@ -0,0 +1,56 @@ +import re + + +class FileCreator: + + __main_dir = "java_files" + filename = None + package_name = None + destination = None + code = None + + def __init__(self, filename, package_name, user_dir, code): + self.filename = filename + self.package_name = package_name + self.destination = "{}/{}/".format(self.__main_dir, user_dir) + self.code = code + + def create_file(self): + des = self.destination + dest_file = "{}/{}.java".format(des, self.filename) + + try: + f = open(dest_file, "w") + f.write("package {}; \n\n".format(self.package_name)) + f.write(self.code) + f.close() + + except OSError as err: + print(err) + return err + + def create_test_file(self): + + # test file name base on class name of write code by user + + test_filename = "JUnit{}Test".format(self.filename) # JUnitHelloWorldTest.java + fdir = "java_files/test_cases/{}".format(test_filename) + + test_file = open("{}.java.txt".format(fdir), "r+") + file_content = test_file.read() + + # replace {{user_package}} as defined package + reg = "{{user_package}}" + final_content = re.sub(reg, string=file_content, repl=self.package_name) + + test_file.close() + + try: + destination = "java_files/{0}/{1}.java".format(self.package_name, test_filename) + java_test_file = open(destination, "w") + java_test_file.write(final_content) + java_test_file.close() + except OSError as e: + print(e) + + diff --git a/online-compiler/lib/FileUploader.py b/online-compiler/lib/FileUploader.py new file mode 100644 index 0000000..e668972 --- /dev/null +++ b/online-compiler/lib/FileUploader.py @@ -0,0 +1,15 @@ +class FileUploader: + + __main_dir = "java_files/test_cases" + + def __init__(self, filename, file): + self.filename = filename + self.file = file + + def upload(self): + loc = "{0}/{1}".format(self.__main_dir, self.filename) + with open(loc, "wb+") as f: + for chunk in self.file.chunks(): + f.write(chunk) + + return "success" diff --git a/online-compiler/lib/__pycache__/FileCreator.cpython-310.pyc b/online-compiler/lib/__pycache__/FileCreator.cpython-310.pyc new file mode 100644 index 0000000..4504933 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileCreator.cpython-310.pyc differ diff --git a/online-compiler/lib/__pycache__/FileCreator.cpython-311.pyc b/online-compiler/lib/__pycache__/FileCreator.cpython-311.pyc new file mode 100644 index 0000000..c1bd317 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileCreator.cpython-311.pyc differ diff --git a/online-compiler/lib/__pycache__/FileCreator.cpython-312.pyc b/online-compiler/lib/__pycache__/FileCreator.cpython-312.pyc new file mode 100644 index 0000000..1435049 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileCreator.cpython-312.pyc differ diff --git a/online-compiler/lib/__pycache__/FileCreator.cpython-39.pyc b/online-compiler/lib/__pycache__/FileCreator.cpython-39.pyc new file mode 100644 index 0000000..5127465 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileCreator.cpython-39.pyc differ diff --git a/online-compiler/lib/__pycache__/FileUploader.cpython-310.pyc b/online-compiler/lib/__pycache__/FileUploader.cpython-310.pyc new file mode 100644 index 0000000..df15965 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileUploader.cpython-310.pyc differ diff --git a/online-compiler/lib/__pycache__/FileUploader.cpython-311.pyc b/online-compiler/lib/__pycache__/FileUploader.cpython-311.pyc new file mode 100644 index 0000000..7946e2a Binary files /dev/null and b/online-compiler/lib/__pycache__/FileUploader.cpython-311.pyc differ diff --git a/online-compiler/lib/__pycache__/FileUploader.cpython-312.pyc b/online-compiler/lib/__pycache__/FileUploader.cpython-312.pyc new file mode 100644 index 0000000..5bf691b Binary files /dev/null and b/online-compiler/lib/__pycache__/FileUploader.cpython-312.pyc differ diff --git a/online-compiler/lib/__pycache__/FileUploader.cpython-39.pyc b/online-compiler/lib/__pycache__/FileUploader.cpython-39.pyc new file mode 100644 index 0000000..7c13cb5 Binary files /dev/null and b/online-compiler/lib/__pycache__/FileUploader.cpython-39.pyc differ diff --git a/online-compiler/lib/__pycache__/java_runner.cpython-310.pyc b/online-compiler/lib/__pycache__/java_runner.cpython-310.pyc new file mode 100644 index 0000000..bdace83 Binary files /dev/null and b/online-compiler/lib/__pycache__/java_runner.cpython-310.pyc differ diff --git a/online-compiler/lib/__pycache__/java_runner.cpython-311.pyc b/online-compiler/lib/__pycache__/java_runner.cpython-311.pyc new file mode 100644 index 0000000..03ce90c Binary files /dev/null and b/online-compiler/lib/__pycache__/java_runner.cpython-311.pyc differ diff --git a/online-compiler/lib/__pycache__/java_runner.cpython-312.pyc b/online-compiler/lib/__pycache__/java_runner.cpython-312.pyc new file mode 100644 index 0000000..2031d0a Binary files /dev/null and b/online-compiler/lib/__pycache__/java_runner.cpython-312.pyc differ diff --git a/online-compiler/lib/__pycache__/java_runner.cpython-39.pyc b/online-compiler/lib/__pycache__/java_runner.cpython-39.pyc new file mode 100644 index 0000000..d044d6e Binary files /dev/null and b/online-compiler/lib/__pycache__/java_runner.cpython-39.pyc differ diff --git a/online-compiler/lib/java_runner.py b/online-compiler/lib/java_runner.py new file mode 100644 index 0000000..25df48a --- /dev/null +++ b/online-compiler/lib/java_runner.py @@ -0,0 +1,144 @@ +import os +import re +import subprocess +from lib.FileCreator import FileCreator + + +class JavaRunner: + + __main_directory = "java_files/" + filename = str + test_filename = str + + def __init__(self, user_directory, code): + self.user_directory = self.get_user_dir(user_directory) + self.code = code + + def get_user_dir(self, user_mail): + replace_at = re.sub('@+', "_", user_mail) + replace_dot = re.sub('\.', "_", replace_at) + return replace_dot + + def check_and_create_dir(self): + directory_name = "{}/{}".format(self.__main_directory, self.user_directory) + dir_is_exist = os.path.isdir(directory_name) + + if not dir_is_exist: + os.mkdir(directory_name) + + def create_file(self): + class_regx = r'(?<=class )\w+' + file = re.search(class_regx, self.code) + filename = file.group(0) + + self.filename = filename + self.test_filename = "JUnit{}Test".format(filename) + try: + pack_name = "{}".format(self.user_directory) + fc = FileCreator(filename=self.filename, package_name=pack_name, user_dir=self.user_directory, + code=self.code) + fc.create_file() + + fc.create_test_file() + + except OSError as e: + print(e) + + finally: + return self.compile_file() + + def compile_file(self): + compile_command = "javac java_files/{}/{}.java".format(self.user_directory, self.filename) + + try: + output = subprocess.run(compile_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError as err: + output = err + print(output) + return output + + def run_file(self): + # windows + run_command = "cd java_files && java --version && java -cp .;{0}/{1} {0}.{1}".format(self.user_directory, self.filename) + # linux + # run_command = "cd java_files && java --version && java -cp .:{0}/{1} {0}.{1}".format(self.user_directory, self.filename) + try: + output = subprocess.run(run_command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + + except subprocess.CalledProcessError as err: + output = err + + finally: + os.remove("java_files/{}/{}.class".format(self.user_directory, self.filename)) + + print(output) + return output + + def run_test(self): + junit_file = "lib/junit-4.13.2.jar" + hamcrest_file = "lib/hamcrest-core-1.3.jar" + + #windows + run_compile_test = "cd java_files && javac -cp .;{0};{1} {2}/{3}.java".\ + format(junit_file, hamcrest_file, self.user_directory, self.test_filename) + run_test_command = "cd java_files && java -cp .;{0};{1};{2}/{3} org.junit.runner.JUnitCore {2}.{3}".\ + format(junit_file, hamcrest_file, self.user_directory, self.test_filename) # + + #linux + # run_compile_test = "cd java_files && javac -cp .:{0}:{1} {2}/{3}.java".\ + # format(junit_file, hamcrest_file, self.user_directory, self.test_filename) + # run_test_command = "cd java_files && java -cp .:{0}:{1}:{2}/{3} org.junit.runner.JUnitCore {2}.{3}".\ + # format(junit_file, hamcrest_file, self.user_directory, self.test_filename) # + + try: + output = subprocess.run(run_compile_test, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError as err: + output = err + print(output) + + try: + output = subprocess.run(run_test_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError as err: + output = err + + print(output) + return output + + def run(self): + self.check_and_create_dir() + + create_n_compile = self.create_file() + + if create_n_compile.returncode == 1: + return {"java": create_n_compile.stderr.decode("utf-8"), "test_output": "TEST FAILED!"} + + final_output = self.run_file() + + test_output = None + point = 0 + + if final_output.returncode == 1: + java = final_output.stderr.decode("utf-8") + else: + java = final_output.stdout.decode("utf-8") + + o = self.run_test() + if o.returncode == 0: + test_output = o.stdout.decode("utf-8") + + matcher = r'(OK \(\d+ test\))' + ok_matcher = re.compile(matcher) + res = ok_matcher.search(test_output) + + # add point of found OK ( test) + point = len(res.groups()) * 10 + else: + test_output = o.stderr.decode("utf-8") or o.stdout.decode("utf-8") + + output = { + "java": java, + "test_output": test_output, + "point": point + } + + return output diff --git a/online-compiler/manage.py b/online-compiler/manage.py new file mode 100644 index 0000000..fe183ce --- /dev/null +++ b/online-compiler/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'onlinecompiler.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/online-compiler/onlinecompiler/__init__.py b/online-compiler/onlinecompiler/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/online-compiler/onlinecompiler/__pycache__/__init__.cpython-310.pyc b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..ca095cb Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-310.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/__init__.cpython-311.pyc b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..74419f2 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-311.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/__init__.cpython-312.pyc b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..198a73f Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-312.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/__init__.cpython-313.pyc b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..cb9f67d Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-313.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/__init__.cpython-39.pyc b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..1c0ff09 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/__init__.cpython-39.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/settings.cpython-310.pyc b/online-compiler/onlinecompiler/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000..02e783d Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/settings.cpython-310.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/settings.cpython-311.pyc b/online-compiler/onlinecompiler/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000..9d49fd2 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/settings.cpython-311.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/settings.cpython-312.pyc b/online-compiler/onlinecompiler/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000..5b52327 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/settings.cpython-312.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/settings.cpython-313.pyc b/online-compiler/onlinecompiler/__pycache__/settings.cpython-313.pyc new file mode 100644 index 0000000..a6c99b4 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/settings.cpython-313.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/settings.cpython-39.pyc b/online-compiler/onlinecompiler/__pycache__/settings.cpython-39.pyc new file mode 100644 index 0000000..36a330b Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/settings.cpython-39.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/urls.cpython-310.pyc b/online-compiler/onlinecompiler/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000..6e66758 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/urls.cpython-310.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/urls.cpython-311.pyc b/online-compiler/onlinecompiler/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000..6568a0a Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/urls.cpython-311.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/urls.cpython-312.pyc b/online-compiler/onlinecompiler/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000..2174051 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/urls.cpython-312.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/urls.cpython-313.pyc b/online-compiler/onlinecompiler/__pycache__/urls.cpython-313.pyc new file mode 100644 index 0000000..c3370f1 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/urls.cpython-313.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/urls.cpython-39.pyc b/online-compiler/onlinecompiler/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..9e961c6 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/urls.cpython-39.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-310.pyc b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000..3a1b4e1 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-310.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-311.pyc b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-311.pyc new file mode 100644 index 0000000..f1a55dc Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-311.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-312.pyc b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-312.pyc new file mode 100644 index 0000000..90bab3a Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-312.pyc differ diff --git a/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-39.pyc b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-39.pyc new file mode 100644 index 0000000..27b01e6 Binary files /dev/null and b/online-compiler/onlinecompiler/__pycache__/wsgi.cpython-39.pyc differ diff --git a/online-compiler/onlinecompiler/asgi.py b/online-compiler/onlinecompiler/asgi.py new file mode 100644 index 0000000..11273da --- /dev/null +++ b/online-compiler/onlinecompiler/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for onlinecompiler project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'onlinecompiler.settings') + +application = get_asgi_application() diff --git a/online-compiler/onlinecompiler/settings.py b/online-compiler/onlinecompiler/settings.py new file mode 100644 index 0000000..826e535 --- /dev/null +++ b/online-compiler/onlinecompiler/settings.py @@ -0,0 +1,128 @@ +""" +Django settings for onlinecompiler project. + +Generated by 'django-admin startproject' using Django 4.0.5. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.0/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-)g(vi0cse)^t#rm0%=(m(tob+x%z#*_zl3s0ni74m9i5cx%%+c' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['compilery.herokuapp.com', "localhost", "127.0.0.1"] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'corsheaders' +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'corsheaders.middleware.CorsMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'onlinecompiler.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'onlinecompiler.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.0/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +CORS_ALLOW_ALL_ORIGINS = True # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect +CORS_ALLOW_CREDENTIALS = True diff --git a/online-compiler/onlinecompiler/urls.py b/online-compiler/onlinecompiler/urls.py new file mode 100644 index 0000000..c775380 --- /dev/null +++ b/online-compiler/onlinecompiler/urls.py @@ -0,0 +1,22 @@ +"""onlinecompiler URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include + +urlpatterns = [ + path('admin/', admin.site.urls), + path('compiler/', include("compiler.urls")) +] diff --git a/online-compiler/onlinecompiler/wsgi.py b/online-compiler/onlinecompiler/wsgi.py new file mode 100644 index 0000000..7322779 --- /dev/null +++ b/online-compiler/onlinecompiler/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for onlinecompiler project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'onlinecompiler.settings') + +application = get_wsgi_application() diff --git a/online-compiler/python b/online-compiler/python new file mode 100644 index 0000000..e69de29 diff --git a/online-compiler/requirements.txt b/online-compiler/requirements.txt new file mode 100644 index 0000000..59ed872 --- /dev/null +++ b/online-compiler/requirements.txt @@ -0,0 +1,7 @@ +django +django-cors +django-cors-headers +transformers +sentence_transformers +PySastrawi +nltk \ No newline at end of file