/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ include ('shortcodes.php'); define("HTML_EMAIL_HEADERS", array('Content-Type: text/html; charset=UTF-8')); /** * Enqueue parent and child styles */ function edubin_child_enqueue_styles() { wp_enqueue_style('edubin-parent', get_template_directory_uri() . '/style.css'); wp_enqueue_style('edubin-child', get_stylesheet_directory_uri() . '/style.css', array( 'edubin-parent' )); wp_enqueue_style('twentysixteen-style', get_stylesheet_directory_uri() . '/custom.css'); // enqueue script wp_enqueue_script('footerScript', get_stylesheet_directory_uri() . '/assets/js/jquery.validation.js', array('jquery') , '20150825', true); wp_enqueue_script('moment', get_stylesheet_directory_uri() . '/assets/js/moment.min.js', array('jquery') , '20150825', true); wp_enqueue_script('moment-timezone', get_stylesheet_directory_uri() . '/assets/js/moment-timezone.min.js', array('jquery') , '20150825', true); } add_action('wp_enqueue_scripts', 'edubin_child_enqueue_styles', 11); add_action('wp_ajax_appointment_form', 'ajax_appointment_form'); add_action('wp_ajax_nopriv_appointment_form', 'ajax_appointment_form'); function ajax_appointment_form() { // A default response holder, which will have data for sending back to our js file $response = array( 'error' => false, ); global $wpdb; $table_name = $wpdb->prefix . 'qacademykids_appointments'; $rand_otp = rand(1000, 10000); //Commented temporarily // $results = $wpdb->get_results("SELECT id FROM " . $table_name . " where verified='0' AND parent_phone='" . $_POST['parent_phone'] . "'"); //Enabled temporarily /* $results = $wpdb->get_results("SELECT id FROM " . $table_name . " where verified='1' AND parent_phone='" . $_POST['parent_phone'] . "'"); if (!empty($results)){ // $update = $wpdb->query($wpdb->prepare("UPDATE " . $table_name . " SET parent_phone='" . $_POST['parent_phone'] . "', otp = ".$rand_otp." WHERE id='" . $results[0]->id . "'")); // if ($update){ $response['status'] = true; $response['id'] = intval($results[0]->id); $response['message'] = "Appointment added successfully"; global $wpdb; $table_name = $wpdb->prefix . 'qacademykids_appointments'; $apnt_results = $wpdb->get_results("SELECT * FROM " . $table_name . " where id='" . $response['id'] . "'"); if (!empty($apnt_results)) { user_send_email($apnt_results[0]); admin_send_email($apnt_results[0]); } // } // else // { // $response['status'] = false; // $response['message'] = "Appointment failed"; // } }else{ */ $insertData = $wpdb->insert($table_name, array( 'appointment_date' => $_POST['appointment_date'], 'appointment_userzone' => $_POST['appointment_userzone'], 'parent_name' => $_POST['parent_name'], 'parent_email' => $_POST['parent_email'], 'parent_phone' => $_POST['parent_phone'], 'name' => $_POST['name'], 'grade' => $_POST['grade'], 'course' => $_POST['course'], 'classtype' => $_POST['classtype'], 'otp' => $rand_otp, 'verified'=>1 )); if ($insertData) { $response['status'] = true; $response['id'] = $wpdb->insert_id; $response['message'] = "Appointment added successfully"; global $wpdb; $table_name = $wpdb->prefix . 'qacademykids_appointments'; $apnt_results = $wpdb->get_results("SELECT * FROM " . $table_name . " where id='" . $response['id'] . "'"); if (!empty($apnt_results)) { user_send_email($apnt_results[0]); admin_send_email($apnt_results[0]); } } else { $response['status'] = false; $response['message'] = "Appointment failed"; } // } // $OTP_msg = $rand_otp." is your OTP to verify the Mobile number at qacademykids.com."; // $ch = curl_init(); // curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Authorization:Basic QUNkNjJkNmZkMTYyZTZhNDIwMmRhY2ExMmE3NjgxNTk0ODozYTI4ZTQ3NmM5NjUyMTQyNjc3YzU5OThkYTA5NTMxOQ==')); // curl_setopt($ch, CURLOPT_URL,"https://api.twilio.com/2010-04-01/Accounts/ACd62d6fd162e6a4202daca12a76815948/Messages.json"); // curl_setopt($ch, CURLOPT_POST, 1); //curl_setopt($ch, CURLOPT_POSTFIELDS, // "From=whatsapp:+14155238886&To=whatsapp:+919952642738&Body=OTP 2568"); // curl_setopt($ch, CURLOPT_POSTFIELDS, // http_build_query(array('MessagingServiceSid' => 'MGa01cb69010017e60cf511c2f264b97eb','To'=>'+91'.$_POST['parent_phone'],'Body'=>$OTP_msg))); // Receive server response ... // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // $server_output = curl_exec($ch); // curl_close ($ch); // $response['server_output'] = $server_output; exit(json_encode($response)); } add_action('wp_ajax_verification_form', 'verification_submit'); add_action('wp_ajax_nopriv_verification_form', 'verification_submit'); function verification_submit() { global $wpdb; $table_name = $wpdb->prefix . 'qacademykids_appointments'; $results = $wpdb->get_results("SELECT * FROM " . $table_name . " where id='" . $_POST['appointment_id'] . "'"); if (!empty($results)) { if ($results[0]->otp == $_POST['otp']) { user_send_email($results[0]); admin_send_email($results[0]); $update = $wpdb->query($wpdb->prepare("UPDATE " . $table_name . " SET verified='1' WHERE id='" . $_POST['appointment_id'] . "'")); $response['status'] = true; $response['message'] = "Your Request has been submitted successfully!"; } else { $response['status'] = false; $response['message'] = "Invalid OTP"; } } else { $response['status'] = false; $response['message'] = "Invalid OTP"; } exit(json_encode($response)); } function user_send_email($data){ $to = $data->parent_email; //get_option('admin_email'); $subject = "Booked Your Free Class"; $heading = "Booked Your Free Class"; $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: QAcademy kids <'.get_option('admin_email').'>', 'Reply-To: info@qacademy.ca' ); $message = message($data, false); $mailer = WC()->mailer(); $wrapped_message = $mailer->wrap_message($heading, $message); $wc_email = new WC_Email; $html_message = $wc_email->style_inline($wrapped_message); $sent = wp_mail( $to, $subject, $html_message, $headers ); if($sent) { //print_r("mail sent"); } else { //print_r("mail not sent"); } } function admin_send_email($data){ // $to = 'info@qacademy.ca'; $to = 'admin@qacademykids.com'; $subject = "Booked New Free Class"; $heading = "Booked New Free Class"; $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: QAcademy kids <'.$data->parent_email.'>', 'Reply-To: '.$data->parent_email.' ', 'Bcc: zavosh@qacademykids.com, samar.swain@msquare.media, renz.pangco@msquaremedia.com' ); $message = message($data, true); $mailer = WC()->mailer(); $wrapped_message = $mailer->wrap_message($heading, $message); $wc_email = new WC_Email; $html_message = $wc_email->style_inline($wrapped_message); $sent = wp_mail( $to, $subject, $html_message, $headers ); if($sent) { //print_r("mail sent"); } else { //print_r("mail not sent"); } } function message($data, $is_admin){ $date = $data->appointment_userzone; if($is_admin){ $date = $data->appointment_date; } $msg = '

Booking Details

Parents Email : '.$data->parent_email.'
Parents Name : '.$data->parent_name.'
Parents Mobile : '.$data->parent_phone.'
Child Name : '.$data->name.'
Grade : '.grade_name($data->grade).'
Class : '.$data->course.'
Class Type : '.$data->classtype.'
'; return $msg; } add_filter( 'woocommerce_order_button_html', 'custom_order_button_html'); function custom_order_button_html( $button ) { // The text of the button $order_button_text = __('Pay Securely', 'woocommerce'); // HERE your Javascript Event // $js_event = "fbq('track', 'AddPaymentInfo');"; // HERE you make changes (Replacing the code of the button): $button = ''; return $button; } add_filter( 'postmeta_form_limit', 'meta_limit_increase' ); function meta_limit_increase( $limit ) { return 50; } add_action( 'woocommerce_checkout_order_processed', 'parent_details_update', 1, 1 ); function parent_details_update( $order_id ){ if($order_id){ $order = wc_get_order( $order_id ); $order->update_meta_data('additional_parent_email', $order->get_billing_email()); $order->update_meta_data('additional_parent_name', $order->get_billing_first_name()); $order->update_meta_data('additional_parent_mobile', $order->get_billing_phone()); $order->update_meta_data('additional_kids_name', $order->get_billing_company()); $order->save(); } } function grade_name($grader){ $grade = "-"; if($grader == 1){ $grade = "Kids / Age 6-9 | Grade 1-4"; }elseif($grader == 2){ $grade = "Tweens / Age 10-12 | Grade 5-7"; }elseif($grader == 3){ $grade = "Teens / Age 13-18+ | Grade 8-12"; } return $grade; } //Blog wp_localize_script( 'twentyfifteen-script', 'ajax_posts', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'noposts' => __('No older posts found', 'twentyfifteen'), )); function more_post_ajax(){ $ppp = (isset($_POST["ppp"])) ? $_POST["ppp"] : 2; $page = (isset($_POST['pageNumber'])) ? $_POST['pageNumber'] : 0; $cat = (isset($_POST['cat'])) ? $_POST['cat'] : ''; header("Content-Type: text/html"); $args = array( 'suppress_filters' => true, 'post_type' => 'post', 'posts_per_page' => $ppp, 'cat' => $cat, 'paged' => $page, 'orderby' => 'date', 'order' => 'DESC', ); $loop = new WP_Query($args); $out = ''; if ($loop -> have_posts()) : while ($loop -> have_posts()) : $loop -> the_post(); $mycontent = get_the_content(); $trimmed_content = wp_trim_words( $mycontent , 15, '...
[explore]
' ); $out .= '
'.get_the_post_thumbnail().'

'.get_the_title().'

'.$trimmed_content.'

'; endwhile; endif; // wp_reset_postdata(); die($out); } add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax'); add_action('wp_ajax_more_post_ajax', 'more_post_ajax'); @ini_set( 'upload_max_size' , '512M' ); @ini_set( 'post_max_size', '512M'); @ini_set( 'max_execution_time', '300' ); add_filter( 'woocommerce_cart_item_subtotal', 'ts_show_product_discount_order_summary', 10, 3 ); function ts_show_product_discount_order_summary( $total, $cart_item, $cart_item_key ) { //Get product object $_product = $cart_item['data']; //Check if sale price is not empty if( '' !== $_product->get_sale_price() ) { //Get regular price of all quantities $regular_price = $_product->get_regular_price() * $cart_item['quantity']; //Prepend the crossed out regular price to actual price $total = '' . wc_price( $regular_price ) . '' . $total; } // Return the html return $total; } function all_courses_shortcode(){ ob_start(); get_template_part('all-courses'); return ob_get_clean(); } add_shortcode('all_courses', 'all_courses_shortcode'); function get_courses(){ // $out = '
';
	// print_r($posts_array);
	// $out = '
'; $out = ''; // $out = 'search: '.$_POST["searchText"]; $searchText = (isset($_POST['searchText'])) ? $_POST['searchText'] : ''; $sortby = (isset($_POST['sortby'])) ? $_POST['sortby'] : 'ID, ASC'; $sort = explode(',',$sortby); // $out .= $sort[0].' '.$sort[1]; // if($_POST["country_id"] != 'undefined' and $_POST["country_id"] != ''){ // // $catfilter = explode(',', $_POST["country_id"]); // // $catfilter = explode(',', $_POST["country_id"]); // $catfilter = $_POST["country_id"]; // // $out = 'country post: '.print_r($country); // }else{ // $catfilter = '-1'; // } if($_POST["country_id"] != 'undefined' and $_POST["country_id"] != ''){ $country = explode(',', $_POST["country_id"]); $operator = 'IN'; }else{ $country = array(-1); $operator = 'NOT IN'; } if($_POST["level_id"] != 'undefined' and $_POST["level_id"] != ''){ $level_id = explode(',', $_POST["level_id"]); $level_op = 'IN'; }else{ $level_id = array('test'); $level_op = 'NOT IN'; } header("Content-Type: text/html"); $args2 = array( 'suppress_filters' => false, 'post_type' => 'courses', 'posts_per_page' => -1, 'numberposts' => -1, 'orderby' => $sort[0], 'order' => $sort[1], 's' => $_POST['searchText'], // 'cat' => $catfilter, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'course-category', 'field' => 'term_id', 'terms' => $country, 'operator' => $operator, ) , ) , 'meta_query' => array( 'relation' => 'AND', array( 'key' => '_tutor_course_level', 'value' => $level_id, 'compare' => $level_op, ), // array( // 'key' => '_tutor_course_price_type', // 'value' => array('free'), // 'compare' => 'IN', // ), // array( // 'key' => 'featured', // 'value' => '1', // 'compare' => '=', // ), ), // 'tax_query' => array( // array ( // 'taxonomy' => 'country', // 'field' => 'term_id', // 'terms' => $country, // ) // ), ); $loop = new WP_Query($args2); // $sort = explode(',',$sortby); $count = $loop->found_posts; // $out .= $count.' = '.$sortby.'asdasd-'; // $out .= $results->request; // $out .= $sort[0].' '.$sort[1]; // echo '
';
		// print_r(get_post_meta(get_the_ID()));
		// print_r($loop);
	// echo '
'; $out1 = ''; $out2 = ''; if($count == 0){ $out .= 'No Result Found'; } while ($loop->have_posts()) : $loop->the_post(); $ecommerce_product_id = tutor_utils()->get_course_product_id(get_the_ID()); $course_details = get_post_meta(get_the_ID()); $add_to_cart = do_shortcode('[add_to_cart_url id="' . $ecommerce_product_id . '"]'); $class_text = ($course_details['classes'][0] > 1)?" Classes": " Class"; $hours_text = ($course_details['hours'][0] > 1)?" hours": " hour"; $per_class_duration = ($course_details['duration_for_on_campus'][0] != "")?$course_details['duration_for_on_campus'][0]:$course_details['hours'][0] . $hours_text.'/ Class '; $class_available_from_text = ($course_details['class_available_from'][0] != "")? '

' . $course_details['class_available_from'][0] . '

':""; $price_per_class_text = ($course_details['price_per_class'][0] != "")?'Per class fee: $' . $course_details['price_per_class'][0] . '':""; $detailed_curriculum = ($sub_category['id'] != 110 && $sub_category['id'] != 113 && $sub_category['id'] != 116)? 'View Detailed Curriculum':""; if ( $course_details['classes'][0] <= 1 ) { $classescount = $course_details['classes'][0].' Class'; }else{ $classescount = $course_details['classes'][0].' Classes'; } $out2 .= '
'; $out2 .= '
'; $out2 .= '

' . get_the_title() . '

'.$classescount.'
Certificate
'; // $out2 .= '
'; // $out2 .= ''; // $out2 .= '
'; // $out2 .= '
'; // $out2 .= '
'; // $out2 .= '
'; // $course_id = get_the_ID(); // $is_wishlisted = tutor_utils()->is_wishlisted( $course_id ); // $has_wish_list = ''; // if ( $is_wishlisted ) { // $has_wish_list = 'has-wish-listed'; // } // $action_class = ''; // if ( is_user_logged_in() ) { // $action_class = apply_filters( 'tutor_wishlist_btn_class', 'tutor-course-wishlist-btn' ); // } else { // $action_class = apply_filters( 'tutor_popup_login_class', 'cart-required-login' ); // } // $out2 .= '' . get_tutor_course_level() . ''; // $out2 .= $mostpopular; // $out2 .= ' '; // $out2 .= '
'; // // $out2 .= get_the_ID(); // $out2 .= '
'; // $out2 .= get_the_title(); // $out2 .= '
'; // $out2 .= '
'; // $mycontent = get_the_content(); // $trimmed_content = wp_trim_words( $mycontent , 25, '...' ); // $out2 .= $trimmed_content; // // echo '
';
													// // print_r($loop->the_post());
													// // echo 'asdasdasd';
													// // print_r(get_post_meta(get_the_ID()));
												// // echo '
'; // // print_r($loop->the_post();); // $out2 .= '
'; // $out2 .= '
'; // $out2 .= '
'; // // $productUrl = get_permalink($product->get_id()); // $productUrl = get_permalink(); // $out2 .= 'View Details'; // $out2 .= '
'; // $out2 .= '
'; // $out2 .= '
'; // $out2 .= '
'; // $out2 .= ''; endwhile; wp_reset_postdata(); $out .= $out1; $out .= $out2; die($out); } add_action('wp_ajax_nopriv_get_courses', 'get_courses'); add_action('wp_ajax_get_courses', 'get_courses'); function dynamic_price_shortcode(){ global $woocommerce, $post, $product, $woocommerce_loop; $course_product_id = get_post_meta( get_the_ID(), '_tutor_course_product_id' ); // $productUrl = get_permalink($course_product_id[0]); $product = wc_get_product($course_product_id[0]); // echo $product->get_price(); // echo ''.$product->get_price_html($course_product_id[0]).''; // echo '$ '.$product->get_price().''; if( isset($course_product_id[0]) ) { echo '
1:1 Price
'; echo ''.$product->get_price_html($course_product_id[0]).''; $ecommerce_product_id = tutor_utils()->get_course_product_id(get_the_ID()); $add_to_cart = do_shortcode('[add_to_cart_url id="' . $ecommerce_product_id . '"]'); $return = ' Checkout '; echo $return; echo '2'; }else{ echo ''; } } add_shortcode('dynamic_price', 'dynamic_price_shortcode'); remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 ); add_action( 'woocommerce_review_order_after_cart_contents', 'woocommerce_checkout_coupon_form_custom' ); function woocommerce_checkout_coupon_form_custom() { echo ''; wc_get_template( 'checkout/form-coupon.php', array( 'checkout' => WC()->checkout(), ) ); echo ''; } add_filter( 'fc_coupon_code_field_initially_expanded', '__return_true' ); add_filter('woocs_raw_woocommerce_price', function($price) { global $WOOCS; if ($WOOCS->current_currency === 'INR') { $price = (floor($price / 100) * 100) - 1; } return $price; }); Q Rangers – Coding and Design Classes for Shaping Future-Ready Kids
Toll Free Number: 1800 532 272 588
Minecraft
Minecraft 101
Minecraft 102
Minecraft 103
BOOK FREE TRIAL
Coding
Intro to Coding Beginners
Skills with Coding Intermidiate
Skills with Coding Advanced
BOOK FREE TRIAL
Launch & Learn
Launch & Learn 101 Beginners
Launch & Learn 102 Intermidiate
Launch & Learn 103 Advanced
BOOK FREE TRIAL
Advanced Coding
Introduction To Python
Introduction To Photoshop
Comic Book Creation 101
BOOK FREE TRIAL

Infinite learning
possibilities for all kids

Discover 1:1 or group online classes and our comprehensive learning packages to build and enhance each kid's potential
Grade 1-4
Grade 5-10
Grade 11-12
SINGLE COURSE
(One-time, 1:1 program)
Explore our courses and learn at your own pace. Our Singles Classes allow young learners from around the world to learn the basics of coding and mobile app development, among others.
Certificate of Completion
Starting at
$ 30/ per class
LEARN TO LAUNCH™
(Complete Program!)
LEARN TO LAUNCH™ is a program exclusively crafted and offered at
Rangers.
With LEARN TO LAUNCH™, young learners get to learn, create and launch their own ideas from start to finish.
CERTIFICATION + PRODUCT LAUNCH
Starting at
$ 25/ per class
GROUP CLASSES
(Two or more students)
Enjoy a dynamic learning environment. Our Group Classes program is built for groups of two or more young learners, and teaches the basics of coding and mobile app development, among others.
Certificate of Completion
Get a Quote

5 Reasons why coding is great for kids

Coding is a 21st century literacy! It develops life skills such as:
Group 137
Problem-solving skills
Deal with coding
problems and finds solutions
to solve them.
Group 138
Creativity
Experiment with designing
programs and build
creative confidence.
Group 139
Logical skills
Apply the concept of structure
and break down problems in a
methodical way.
Group 140
Learning to communicate in a computational
language can help kids grow their math skills
without even realizing it.
Group 141
Persistence
Every coding requires debugging and there’s
no better way to build perseverance than
working through challenges.

Explore our exceptional classes

Open doors to a lifetime of opportunities. Choose from our coding,
Minecraft, app development classes and other tech courses.
codecontainer

Get your questions answered

Rangers is an online learning platform that aims to impact the future through empowering young minds. With a focus on tech education, it offers single or group online classes and an innovative program with tools and high quality resources on coding and other technologies for kids ages 6 to 18 years old.

Our online single and group classes are available throughout the year. These have flexible schedules. Please check out our classes section for more details.

With our Learn to Launch™ program children are provided with an alternative approach to learning. They get to learn, create and launch their own ideas from start to finish. We have put together a range of packages that would empower kids with coding skills and get them to actually launch a real product of their own.

Each course length differs from one another. We have courses that only take a few hours to complete in a day, and we also have courses that have several classes spread out to several weeks. Please refer to the specific course outlines provided in the homepage.

Entdecken Sie Samosa Casino: Ihr Einstieg in die aufregende Welt des Online-Glücksspiels und gewinnbringender Abenteuer!

Online Blackjack in Massachusetts: The Digital Frontier Social features like leaderboards enhance the experience of online blackjack Massachusetts (MA): Guide on blackjack in MA. Massachusetts has long been a haven for casino lovers, with brick‑and‑mortar halls lining Boston, Worcester, and…

Online casinos have revolutionized the way Australians enjoy gambling, offering convenience, variety, and exciting bonuses right at their fingertips. Among the many platforms available, SkyCrown stands out as a premier choice for players seeking a top-notch gaming experience. Whether you…

De wereld van online casino's in Nederland groeit snel en biedt spelers een breed scala aan mogelijkheden om te genieten van spannende spellen en aantrekkelijke bonussen. Of je nu een doorgewinterde gokker bent of net begint, het kiezen van het…

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas.…

Australia’s online casino scene has grown exponentially over the past few years, offering players a diverse range of gaming options, lucrative bonuses, and secure platforms. Among the top contenders in this competitive market is Ozwin Casino, a platform that combines…

Online gaming enthusiasts in Australia are always on the lookout for the best promotions and bonuses to enhance their gaming experience. Jackpot Jill, a popular online casino, offers a variety of exciting bonuses tailored specifically for its loyal players. These…

Online slots have become one of the most popular forms of entertainment in Australia, captivating players with their vibrant themes, engaging gameplay, and the chance to win big jackpots. Whether you're a seasoned gambler or a newcomer eager to try…

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas.…

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas.…

Казино рулетка онлайн на деньги: актуальный рынок В 2023‑2025 годы рынок азартных игр в Казахстане растёт стабильно.По данным Национального агентства по азартным играм (НАГИ) оборот онлайн‑казино вырос на 18% по сравнению с 2022 г., а доля игроков, выбирающих рулетку, увеличилась…

Book a Free Trial

Want to Become An Instructor ? Register Here

Phone Number
Hours you will be available per day for Teaching

Already on Q Rangers? Login.

Want to Learn Together ? Register Here

Phone Number

Already on Q Rangers? Login.

Welcome to Q Rangers

Welcome back!

Want to Learn More? Register Here

Already on Q Rangers? Login.

Send your feedback