3v4l.org

run code in 300+ PHP versions simultaneously
<? include( 'init.inc.php' ); if( !$_REQUEST["month"]) $_REQUEST["month"] = date("Y-m"); if( !$_REQUEST["date_f"]) $_REQUEST["date_f"] = date("Y-m-01"); if( !$_REQUEST["date_t"]) $_REQUEST["date_t"] = date("Y-m-d"); if( !$_REQUEST["show"]) $_REQUEST["show"] = 'active'; $cal = new cal($_REQUEST["month"]); //$cal->next(); if( $_REQUEST["next"] ) $cal->next(); if( $_REQUEST["prev"] ) $cal->prev(); ?> <form action="<?=SITE_URL.pathinfo(__FILE__,PATHINFO_BASENAME)?>" class="blockContent blockForm" method="get"> <? if($_REQUEST["order"]) {?><input type="hidden" name="order" value="<?=$_REQUEST["order"]?>" /><? }?> <? if($_REQUEST["order_type"]) {?><input type="hidden" name="order_type" value="<?=$_REQUEST["order_type"]?>" /><? }?> <!--div id="calendar-head"> <input type="hidden" name="month" value="<?=$cal->date->getMonth()?>" /> <a href="javascript:" onclick="cal.prev(this)">&lt;</a> <a href="#/" style="min-width:120px"><span class="imgWrap iCalendar"></span> <?=$cal->date->getMonthTitle()?>, <?=$cal->date->y?></a> <a href="javascript:" onclick="cal.next(this)">&gt;</a> </div--> <table width="100%" class="data sticky tablesorter" border="0" cellspacing="0" cellpadding="0"> <? if ($_REQUEST["order"]) { $order = 'ORDER by '.$_REQUEST["order"].' '.$_REQUEST["order_type"]; } else{ $order = "ORDER by income desc"; } $w = array(); if( $_REQUEST["office_ids"] ) $w['office_ids'] = "b.office_id IN (". join(',',$_REQUEST["office_ids"]) .")"; $w['type'] = "b.type IN ('broker', 'apprentice')"; if( $_REQUEST["show"]=='active' ) $w['status'] = "b.status='active'"; $query = stats::get_broker_stats_query($_REQUEST["date_f"], $_REQUEST["date_t"], $w) . $order; $office_q = stats::get_broker_stats_query_offices($_REQUEST["date_f"], $_REQUEST["date_t"], $w); $data = stats::get_broker_stats_query_offices_data($office_q); foreach($data['offices_involved'] as &$o) { $o = stats::get_data_on_office($o, $data['data']); } if(isset($o)) { unset($o); } _dbg( $query ); $out = db_query($query); $i = 0; unset($total); while( $row = db_object($out) ) { $broker = new broker( $row->broker_id ); $broker->loadOptions(); $broker->cache = true; if( $broker->data['mint_status'] == 'hide_on_stats' && !in_array($_REQUEST["show"], ['all', 'worked']) ) continue; unset($comm_proc); if( $row->pard_amount ) $comm_proc = 100 / $row->pard_amount * ($row->brokerComm + $row->pard_admAmount); unset($pastang_bal, $pinig_bal); //$worked_days = $d_dateIn->diff(new DateTime())->format('%a') + 1; $worked_days = $broker->get_work_time($_REQUEST["date_f"], $_REQUEST["date_t"])->days; if( $_REQUEST["show"] == 'worked' && $worked_days <= 0 ) continue; $bal_data = json_decode($broker->data['bal_data']); $mint_data = json_decode($broker->data['mint_data']); $worked_days_total = $broker->get_work_time()->days + 1; if( $_REQUEST["worked_f"] && $_REQUEST["worked_f"] > $worked_days_total / 30 ) continue; if( $_REQUEST["worked_t"] && $_REQUEST["worked_t"] < $worked_days_total / 30 ) continue; //$bendr_bal_3month = $fin_data->pastang_bal + $fin_data->pinig_bal; $color = ''; $bgColor = ''; if( $broker->data['mint_status'] == 'bandom_laik' ) { $bgColor = '#CCC'; }elseif($broker->data['mint_status'] == 'hide_on_stats'){ $bgColor = '#FFD1D1'; } if( round($broker->data['bal'], 1) < 5 ) $color = 'cRed'; if( round($broker->data['bal'], 1) >= 5 ) $color = 'cGreen'; if( !$broker->data['bal_f'] || date('Y-m-d') < $broker->data['bal_f'] ) $color = 'cBlue'; if( $broker->get_naujok_period()->is_naujok ) { $color = 'cBlue'; $bgColor = ''; } if( $broker->data['skip_bal_color'] || $broker->data['status'] != 'active' ) { unset($color, $bgColor); $color = 'cBlack'; } $total["calls"] += $row->calls; $total["meets"] += $row->meets; $total["new_clients"] += $row->new_clients; $total["a_calls"] += $row->a_calls; $total["a_meets"] += $row->a_meets; $total["contracts"] += $row->contracts; $total["object_reviews"] += $row->object_reviews; $total["income"] += $row->income; $total["ct_done"] += $row->ct_done; $total["comm"] += $row->comm; $i++; ?> <tr style="background-color:<?=$bgColor?>"> <td align="right"><?=$i?>.</td> <td><a class="<?=$color?>" href="?doAction=chBroker&broker_id=<?=$broker->data['id']?>#account?cat=plan"><?=$broker->getName()?></a></td> <td><?=(int)$row->new_clients?></td> <td><?=(int)$row->calls?> <? if($row->app_calls) {?>(<? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a href="#calls?broker_id=<?=(int)$broker->data["id"]?>&date_f=<?=$_REQUEST["date_f"]?>&date_t=<?=$_REQUEST["date_t"]?>&duration_f=1&client=1" target="_blank"><?=$row->app_calls?></a><? }else{?><?=$row->app_calls?><? }?>)<? }?></td> <td><? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a onclick="cal.open('<?=$_REQUEST["date_f"]?>',{dateTo:'<?=$_REQUEST["date_t"]?>',type:'call',status:'active',broker_id:<?=(int)$broker->data["id"]?>});" class="cRed"><?=(int)$row->a_calls?></a><? }else{?><span class="cRed"><?=(int)$row->a_calls?></span><? }?></td> <td><?=(int)$row->meets?></td> <td><? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a onclick="cal.open('<?=$_REQUEST["date_f"]?>',{dateTo:'<?=$_REQUEST["date_t"]?>',type:'meet',status:'active',broker_id:<?=(int)$broker->data["id"]?>});" class="cRed"><?=(int)$row->a_meets?></a><? }else{?><span class="cRed"><?=(int)$row->a_meets?></span><? }?></td> <td><? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a href="#contracts?broker_id=<?=(int)$broker->data["id"]?>&office_id=<?=(int)$broker->data["office_id"]?>&dateBegin_f=<?=$_REQUEST["date_f"]?>&dateBegin_t=<?=$_REQUEST["date_t"]?>" target="_blank" _onclick="stats.activityDialog({date:'<?=$_REQUEST["date_f"]?>',dateTo:'<?=$_REQUEST["date_t"]?>',status:'pasirasyta_sutartis',broker_id:<?=(int)$broker->data["id"]?>,office_id:<?=(int)$broker->data["office_id"]?>});"><?=(int)$row->contracts?></a><? }else{?><?=(int)$row->contracts?><? }?></td> <td><?=(int)$row->object_reviews?> (<?=(int)$row->orw_calls?>)</td> <td><?=(int)$row->ct_done?></td> <td><?=_number_format($row->comm)?></td> <td><?=_number_format($comm_proc, 1)?>%</td> <td><? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?> <a href="#contracts?uzd=1&uzd_broker_id=<?=$broker->data['id']?>&uzd_date_f=<?=$_REQUEST["date_f"]?>&uzd_date_t=<?=$_REQUEST["date_t"]?>&search=1" target="_blank"><?=_number_format($row->income)?></a><? }else{?><?=_number_format($row->income)?><? }?></td> <td><span class="iHelp"><?=_number_format($broker->data['pastang_bal'],1)?></span> <div style="display:none"> <b>Sutartys</b> <?=_number_format($bal_data->contracts,1)?> bal.<br /> <b>Prezentacijos</b> <?=_number_format($bal_data->meets,1)?> bal.<br /> <b>Skambučiai</b> <?=_number_format($bal_data->calls,1)?> bal.<br /> <b>Nauji kontaktai</b> <?=_number_format($bal_data->new_clients,1)?> bal.<br /> <b>Apž. aktai</b> <?=_number_format($bal_data->object_reviews,1)?> bal.<br /> <b>Viso</b> <?=_number_format($bal_data->total,1)?> bal.<br /> </div> </td> <td><?=_number_format($broker->data['pinig_bal'], 1)?></td> <td align="center"><span class="iHelp"><b class="<?=$color?>"><?=_number_format($broker->data['bal'], 1)?></b></span> <div style="display:none"> <b>Esamas laikotarpis</b>: <b class="<?=$color?>"><?=_number_format($broker->data['bal'], 1)?></b><br /> <? if( $broker->data['bal_f'] && $broker->data['bal_t'] ) {?> <?=date('Y.m.d', strtotime($broker->data['bal_f']))?> - <?=date('Y.m.d', strtotime($broker->data['bal_t']))?> - pastangų: <?=_number_format($broker->data['pastang_bal'], 1)?><br /> <?=date('Y.m.d', strtotime($broker->data['pinig_f']))?> - <?=date('Y.m.d', strtotime($broker->data['bal_t']))?> - pinigų: <?=_number_format($broker->data['pinig_bal'], 1)?><br /> <? }?> <? if( $broker->data['mint_f'] < $broker->data['mint_t'] ) {?> <br /> <b>Buvęs laikotarpis</b>: <b class="<?=round($broker->data['mint_bal'], 1) >= 5?'cGreen':'cRed'?>"><?=_number_format($broker->data['mint_bal'], 1)?></b><br /> <?=date('Y.m.d', strtotime($broker->data['mint_f']))?> - <?=date('Y.m.d', strtotime($broker->data['mint_t']))?> - pastangų: <?=_number_format($mint_data->pastang_bal, 1)?><br /> <?=date('Y.m.d', strtotime($broker->data['mint_pinig_f']))?> - <?=date('Y.m.d', strtotime($broker->data['mint_t']))?> - pinigų: <?=_number_format($mint_data->pinig_bal, 1)?><br /> <? }?> <? if( $broker->data['mint_status'] && !$broker->data['skip_bal_color'] ) {?> <br /> <b>Balo statusas</b>: <b class="<?=$broker->get_naujok_period()->is_naujok?'cBlue':'cRed'?>"><?=broker::$mint_states[$broker->data['mint_status']]['title']?></b><br> <? }?> </div> </td> <td><?=floor($worked_days_total/30)?></td> </tr> <? }?> <tfoot> <tr> <td colspan="2"><b>VISO</b></td> <td><b> <?=(int)$total["new_clients"]?> </b></td> <td><b><?=(int)$total["calls"]?></b></td> <td><span class="cRed"><b><?=(int)$total["a_calls"]?></b></span></td> <td><b><?=(int)$total["meets"]?></b></td> <td><span class="cRed"><b><?=(int)$total["a_meets"]?></b></span></td> <td><b><?=(int)$total["contracts"]?></b></td> <td><b><?=(int)$total["object_reviews"]?></b></td> <td><b><?=(int)$total["ct_done"]?></b></td> <td><b><?=_number_format($total["comm"])?></b></td> <td></td> <td><b><?=_number_format($total["income"])?></b></td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr><td colspan="17">&nbsp;</td></tr> <?php if(is_array($data['offices_involved']) && !empty($data['offices_involved'])) { foreach($data['offices_involved'] as $office_id => $o_total) { $office = new office($office_id); $title = ($office_id == -1) ? '- Kitos kompanijos / Kita -' : $office->data['title']; $title = ($office_id == -2) ? '- uNTu -' : $title; $title = ($office_id == -3) ? '- Prezentacijų bankas -' : $title; ?> <tr style="font-size:10px;"> <td colspan="2"><b><?= htmlspecialchars($title, ENT_QUOTES, 'utf-8'); ?></b></td> <td><b><?= (int)$o_total->new_clients ?></b></td> <td><b><?= (int)$o_total->calls ?></b> (<?= (int)$o_total->app_calls ?>)</td> <td><span class="cRed"><b><?= (int)$o_total->a_calls ?></b></span></td> <td><b><?= (int)$o_total->meets ?></b></td> <td><span class="cRed"><b><?= (int)$o_total->a_meets ?></b></span></td> <td><b><?= (int)$o_total->contracts ?></b></td> <td><b><?= (int)$o_total->object_reviews ?></b> (<?= (int)$o_total->orw_calls ?>)</td> <td><b><?= (int)$o_total->ct_done ?></b></td> <td><b><?= _number_format($o_total->comm) ?></b></td> <td></td> <td><b><abbr title="<?= trim(str_replace('.', ',', $o_total->income_math)); ?>"><?= _number_format($o_total->income) ?></abbr></b></td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <?php } } ?> </tfoot> </table> <br /> <? if (in_array($_REQUEST["order"], array('calls','meets','a_calls','a_meets','emails','total'))) { $order = 'ORDER by '.$_REQUEST["order"].' '.$_REQUEST["order_type"]; } else{ $order = "ORDER by total desc"; } $w = array(); if( $_REQUEST["office_ids"] ) $w[] = "b.office_id IN (". join(',',$_REQUEST["office_ids"]) .")"; $w[] = "b.type IN ('tele')"; if( $_REQUEST["show"] == 'active' ) $w[] = "b.status='active'"; $query = stats::get_broker_stats_query($_REQUEST["date_f"], $_REQUEST["date_t"], $w) . $order; echo '<!--#'. print_r($query, 1) .'-->'; unset($total); $out = db_query($query); if( db_rows($out) ) { ?> <br /> <table width="100%" class="data tablesorter" border="0" cellspacing="0" cellpadding="0"> <thead> <tr> <th width="16">&nbsp;</th> <th><span class="order <?=$site->getOrderType('b.surname')?>" rel="b.surname">Specialistas</span></th> <th><span class="order <?=$site->getOrderType('calls')?>" rel="calls">Skambučiai</span></th> <th><span class="order <?=$site->getOrderType('a_calls')?>" rel="a_calls">Skambučiai</span></th> <th width="100">&nbsp;</th> <th width="100">&nbsp;</th> <th><span class="order <?=$site->getOrderType('emails')?>" rel="emails">El.laiškai</span></th> <th><span class="order <?=$site->getOrderType('contracts')?>" rel="contracts">Pasirašytos sutartys</span></th> </tr> </thead> <? $i = 0; while( $row = db_object($out) ) { $i++; $broker = new broker( $row->broker_id ); $total["calls"] += $row->calls; $total["meets"] += $row->meets; $total["emails"] += $row->emails; $total["a_calls"] += $row->a_calls; $total["a_meets"] += $row->a_meets; $total["contracts"] += $row->contracts; ?> <tr> <td align="right"><?=$i?>.</td> <td><?=$broker->getName()?></td> <td><?=(int)$row->calls?> <? if($row->app_calls) {?>(<? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a href="#calls?broker_id=<?=(int)$broker->data["id"]?>&date_f=<?=$_REQUEST["date_f"]?>&date_t=<?=$_REQUEST["date_t"]?>&duration_f=1&client=1" target="_blank"><?=$row->app_calls?></a><? }else{?><?=$row->app_calls?><? }?>)<? }?></td> <td><? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?><a onclick="cal.open('<?=$_REQUEST["date_f"]?>',{dateTo:'<?=$_REQUEST["date_t"]?>',type:'call',status:'active',broker_id:<?=(int)$broker->data["id"]?>});" class="cRed"><?=(int)$row->a_calls?></a><? }else{?><span class="cRed"><?=(int)$row->a_calls?></span><? }?></td> <td>&nbsp;</td> <td>&nbsp;</td> <td><?=(int)$row->emails?></td> <td><a <? if(in_array($admin->data["type"], array('admin','office')) || $site->broker->data["id"] == $broker->data["id"]){?>onclick="stats.activityDialog({date:'<?=$_REQUEST["date_f"]?>',dateTo:'<?=$_REQUEST["date_t"]?>',status:'pasirasyta_sutartis',broker_id:<?=(int)$broker->data["id"]?>});"<? }?>><?=(int)$row->contracts?></a></td> </tr> <? }?> </table> <? }?> </form>
Output for 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
<? include( 'init.inc.php' ); if( !$_REQUEST["month"]) $_REQUEST["month"] = date("Y-m"); if( !$_REQUEST["date_f"]) $_REQUEST["date_f"] = date("Y-m-01"); if( !$_REQUEST["date_t"]) $_REQUEST["date_t"] = date("Y-m-d"); if( !$_REQUEST["show"]) $_REQUEST["show"] = 'active'; $cal = new cal($_REQUEST["month"]); //$cal->next(); if( $_REQUEST["next"] ) $cal->next(); if( $_REQUEST["prev"] ) $cal->prev(); ?> <form action=" Fatal error: Uncaught Error: Undefined constant "SITE_URL" in /in/vfEOK:13 Stack trace: #0 {main} thrown in /in/vfEOK on line 13
Process exited with code 255.
Output for 8.0.13
Warning: include(init.inc.php): Failed to open stream: No such file or directory in /in/vfEOK on line 2 Warning: include(): Failed opening 'init.inc.php' for inclusion (include_path='.:') in /in/vfEOK on line 2 Warning: Undefined array key "month" in /in/vfEOK on line 3 Warning: Undefined array key "date_f" in /in/vfEOK on line 4 Warning: Undefined array key "date_t" in /in/vfEOK on line 5 Warning: Undefined array key "show" in /in/vfEOK on line 6 Fatal error: Uncaught Error: Class "cal" not found in /in/vfEOK:8 Stack trace: #0 {main} thrown in /in/vfEOK on line 8
Process exited with code 255.
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.7, 7.4.33
Warning: include(init.inc.php): failed to open stream: No such file or directory in /in/vfEOK on line 2 Warning: include(): Failed opening 'init.inc.php' for inclusion (include_path='.:') in /in/vfEOK on line 2 Notice: Undefined index: month in /in/vfEOK on line 3 Notice: Undefined index: date_f in /in/vfEOK on line 4 Notice: Undefined index: date_t in /in/vfEOK on line 5 Notice: Undefined index: show in /in/vfEOK on line 6 Fatal error: Uncaught Error: Class 'cal' not found in /in/vfEOK:8 Stack trace: #0 {main} thrown in /in/vfEOK on line 8
Process exited with code 255.
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.31, 7.4.0 - 7.4.32
<? include( 'init.inc.php' ); if( !$_REQUEST["month"]) $_REQUEST["month"] = date("Y-m"); if( !$_REQUEST["date_f"]) $_REQUEST["date_f"] = date("Y-m-01"); if( !$_REQUEST["date_t"]) $_REQUEST["date_t"] = date("Y-m-d"); if( !$_REQUEST["show"]) $_REQUEST["show"] = 'active'; $cal = new cal($_REQUEST["month"]); //$cal->next(); if( $_REQUEST["next"] ) $cal->next(); if( $_REQUEST["prev"] ) $cal->prev(); ?> <form action=" Warning: Use of undefined constant SITE_URL - assumed 'SITE_URL' (this will throw an Error in a future version of PHP) in /in/vfEOK on line 13 SITE_URLvfEOK" class="blockContent blockForm" method="get"> <? if($_REQUEST["order"]) {?><input type="hidden" name="order" value=" Notice: Undefined index: order in /in/vfEOK on line 14 " /><? }?> <? if($_REQUEST["order_type"]) {?><input type="hidden" name="order_type" value=" Notice: Undefined index: order_type in /in/vfEOK on line 15 " /><? }?> <!--div id="calendar-head"> <input type="hidden" name="month" value=" Notice: Undefined variable: cal in /in/vfEOK on line 17 Notice: Trying to get property 'date' of non-object in /in/vfEOK on line 17 Fatal error: Uncaught Error: Call to a member function getMonth() on null in /in/vfEOK:17 Stack trace: #0 {main} thrown in /in/vfEOK on line 17
Process exited with code 255.
Output for 7.3.32 - 7.3.33
Warning: include(init.inc.php): failed to open stream: No such file or directory in /in/vfEOK on line 2 Warning: include(): Failed opening 'init.inc.php' for inclusion (include_path='.:') in /in/vfEOK on line 2 Fatal error: Uncaught Error: Class 'cal' not found in /in/vfEOK:8 Stack trace: #0 {main} thrown in /in/vfEOK on line 8
Process exited with code 255.
Output for 7.1.25 - 7.1.33
<? include( 'init.inc.php' ); if( !$_REQUEST["month"]) $_REQUEST["month"] = date("Y-m"); if( !$_REQUEST["date_f"]) $_REQUEST["date_f"] = date("Y-m-01"); if( !$_REQUEST["date_t"]) $_REQUEST["date_t"] = date("Y-m-d"); if( !$_REQUEST["show"]) $_REQUEST["show"] = 'active'; $cal = new cal($_REQUEST["month"]); //$cal->next(); if( $_REQUEST["next"] ) $cal->next(); if( $_REQUEST["prev"] ) $cal->prev(); ?> <form action=" Notice: Use of undefined constant SITE_URL - assumed 'SITE_URL' in /in/vfEOK on line 13 SITE_URLvfEOK" class="blockContent blockForm" method="get"> <? if($_REQUEST["order"]) {?><input type="hidden" name="order" value=" Notice: Undefined index: order in /in/vfEOK on line 14 " /><? }?> <? if($_REQUEST["order_type"]) {?><input type="hidden" name="order_type" value=" Notice: Undefined index: order_type in /in/vfEOK on line 15 " /><? }?> <!--div id="calendar-head"> <input type="hidden" name="month" value=" Notice: Undefined variable: cal in /in/vfEOK on line 17 Notice: Trying to get property of non-object in /in/vfEOK on line 17 Fatal error: Uncaught Error: Call to a member function getMonth() on null in /in/vfEOK:17 Stack trace: #0 {main} thrown in /in/vfEOK on line 17
Process exited with code 255.
Output for 7.1.20
Warning: include(): open_basedir restriction in effect. File(init.inc.php) is not within the allowed path(s): (/tmp:/in) in /in/vfEOK on line 2 Warning: include(init.inc.php): failed to open stream: Operation not permitted in /in/vfEOK on line 2 Warning: include(): Failed opening 'init.inc.php' for inclusion (include_path='.:') in /in/vfEOK on line 2 Notice: Undefined index: month in /in/vfEOK on line 3 Notice: Undefined index: date_f in /in/vfEOK on line 4 Notice: Undefined index: date_t in /in/vfEOK on line 5 Notice: Undefined index: show in /in/vfEOK on line 6 Fatal error: Uncaught Error: Class 'cal' not found in /in/vfEOK:8 Stack trace: #0 {main} thrown in /in/vfEOK on line 8
Process exited with code 255.
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28
Warning: include(init.inc.php): failed to open stream: No such file or directory in /in/vfEOK on line 2 Warning: include(): Failed opening 'init.inc.php' for inclusion (include_path='.:') in /in/vfEOK on line 2 Notice: Undefined index: month in /in/vfEOK on line 3 Notice: Undefined index: date_f in /in/vfEOK on line 4 Notice: Undefined index: date_t in /in/vfEOK on line 5 Notice: Undefined index: show in /in/vfEOK on line 6 Fatal error: Class 'cal' not found in /in/vfEOK on line 8
Process exited with code 255.

preferences:
164.73 ms | 403 KiB | 315 Q