blob: 4cb003a167f846e8aced6f7f32331cb00e1a1109
1 | import /vendor/etc/init/hw/init.amlogic.usb.rc |
2 | import /vendor/etc/init/hw/init.amlogic.board.rc |
3 | import /vendor/etc/init/hw/init.amlogic.wifi.rc |
4 | import /vendor/etc/init/hw/init.amlogic.media.rc |
5 | import /vendor/etc/init/hw/init.mtk.rc |
6 | import /vendor/etc/init/hw/init.amlogic.wifi_buildin.rc |
7 | |
8 | on early-init |
9 | mount debugfs /sys/kernel/debug /sys/kernel/debug mode=755 |
10 | |
11 | |
12 | on init |
13 | |
14 | # param for tv |
15 | mkdir /param 0771 system system |
16 | |
17 | # Support legacy paths |
18 | symlink /sdcard /mnt/sdcard |
19 | |
20 | mkdir /factory |
21 | chown system wifi /dev/wifi_power |
22 | chmod 0660 /dev/wifi_power |
23 | |
24 | chmod 666 /sys/class/audiodsp/codec_fatal_err |
25 | chmod 666 /sys/class/ppmgr/angle |
26 | chmod 666 /sys/class/vfm/map |
27 | chmod 666 /sys/class/video/axis |
28 | chmod 666 /sys/class/video/disable_video |
29 | chmod 666 /sys/class/tsync/enable |
30 | chmod 666 /sys/class/tsync/pts_pcrscr |
31 | chmod 666 /sys/class/tsync/pts_audio |
32 | chmod 666 /sys/class/tsync/firstapts |
33 | chmod 666 /sys/class/tsync/event |
34 | chmod 666 /sys/class/tsync/av_threshold_min |
35 | chmod 666 /sys/class/video/screen_mode |
36 | chmod 666 /sys/class/vdec/poweron_clock_level |
37 | chmod 666 /sys/module/ionvideo/parameters/freerun_mode |
38 | chown media system /sys/class/graphics/fb0/osd_afbcd |
39 | write /sys/class/graphics/fb0/osd_afbcd 1 |
40 | write /proc/sys/vm/watermark_scale_factor 150 |
41 | chmod 666 /sys/class/video/blackout_policy |
42 | chmod 666 /sys/class/tsync/vpause_flag |
43 | chmod 0666 /dev/amstream_sub_read |
44 | chmod 0666 /sys/class/gpio/export |
45 | chmod 0666 /sys/class/gpio/unexport |
46 | |
47 | # for zram |
48 | mkdir /swap_zram0 0700 root root |
49 | |
50 | # for tee |
51 | mkdir /tee 0700 system system |
52 | |
53 | on fs |
54 | mount_all /fstab.amlogic |
55 | setprop ro.crypto.fuse_sdcard true |
56 | swapon_all /fstab.amlogic |
57 | |
58 | on post-fs-data |
59 | mkdir /data/misc/wifi 0770 wifi wifi |
60 | mkdir /data/misc/wifi/sockets 0770 wifi wifi |
61 | |
62 | mkdir /data/misc/etc 0777 system pppoe |
63 | mkdir /data/misc/etc/ppp 0777 system pppoe |
64 | chown system system /etc/ppp |
65 | chmod 0770 /etc/ppp |
66 | #create droidota directory for system update |
67 | mkdir /data/droidota 0771 system system |
68 | |
69 | #save log |
70 | mkdir /data/log 0771 log log |
71 | mkdir /data/log/dontpanic 0771 log log |
72 | |
73 | # we will remap this as /storage/sdcard0 with the sdcard fuse tool |
74 | mkdir /data/media 0770 media_rw media_rw |
75 | |
76 | # Set indication (checked by vold) that we have finished this action |
77 | setprop vold.post_fs_data_done 1 |
78 | |
79 | |
80 | # for tuner insmod |
81 | write /sys/class/amlfe/setting autoload |
82 | |
83 | on boot |
84 | # Set up kernel tracing, but disable it by default |
85 | chmod 0222 /sys/kernel/debug/tracing/trace_marker |
86 | write /sys/kernel/debug/tracing/tracing_on 0 |
87 | |
88 | #bluetooth |
89 | chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state |
90 | chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type |
91 | chmod 0660 /sys/class/rfkill/rfkill0/state |
92 | chmod 0660 /sys/class/rfkill/rfkill0/type |
93 | chown bluetooth bluetooth /proc/bluetooth/sleep/btwrite |
94 | chown bluetooth bluetooth /proc/bluetooth/sleep/lpm |
95 | chmod 0660 /proc/bluetooth/sleep/btwrite |
96 | chmod 0660 /proc/bluetooth/sleep/lpm |
97 | # change back to bluetooth from system |
98 | chown bluetooth bluetooth /data/misc/bluetooth |
99 | |
100 | write /sys/block/mmcblk0/queue/read_ahead_kb 2048 |
101 | write /sys/block/mmcblk1/queue/read_ahead_kb 2048 |
102 | |
103 | chown system mediadrm /sys/class/amhdmitx/amhdmitx0/aud_ch |
104 | chmod 0664 /sys/class/amhdmitx/amhdmitx0/aud_ch |
105 | insmod /vendor/lib/modules/aml_thermal.ko |
106 | insmod /vendor/lib/modules/ddr_window_64.ko |
107 | |
108 | chown media system /sys/class/tsync/pts_video |
109 | chown mediadrm audio /sys/class/tsync/pts_audio |
110 | chown mediadrm audio /sys/class/tsync/pts_pcrscr |
111 | chown mediadrm audio /sys/class/tsync/event |
112 | chown mediadrm audio /sys/class/tsync/firstapts |
113 | chown media system /sys/class/tsync/mode |
114 | chown media system /sys/class/tsync/enable |
115 | chown media system /sys/class/tsync/av_threshold_min |
116 | chown media system /sys/class/tsync/av_threshold_max |
117 | chown system system /sys/class/graphics/fb0/blank |
118 | chown system graphics /sys/class/graphics/fb0/free_scale_switch |
119 | chown media system /sys/class/graphics/fb1/blank |
120 | chown media system /sys/class/graphics/fb0/order |
121 | chown media system /sys/class/graphics/fb1/order |
122 | chown media system /sys/class/graphics/fb0/enable_key |
123 | chown media system /sys/class/graphics/fb0/enable_key_onhold |
124 | chown media system /sys/module/amlvideodri/parameters/freerun_mode |
125 | chown media system /sys/module/ionvideo/parameters/freerun_mode |
126 | chown system graphics /sys/module/fb/parameters/osd_logo_index |
127 | |
128 | chmod 0664 /sys/class/graphics/fb0/blank |
129 | chmod 0664 /sys/class/graphics/fb1/blank |
130 | chmod 0664 /sys/class/graphics/fb0/free_scale_switch |
131 | chmod 0660 /sys/module/fb/parameters/osd_logo_index |
132 | |
133 | chown media system /sys/class/video/blackout_policy |
134 | chown media system /sys/class/video/screen_mode |
135 | chown media system /sys/class/video/axis |
136 | chown media system /sys/class/video/disable_video |
137 | chown media system /sys/class/video/zoom |
138 | chown media system /sys/class/video/free_keep_buffer |
139 | chown media system /sys/class/video/free_cma_buffer |
140 | chown mediacodec mediadrm /sys/class/codec_mm/tvp_enable |
141 | chown media system /sys/class/ppmgr/angle |
142 | chown media system /sys/class/ppmgr/disp |
143 | chown system system /sys/class/ppmgr/ppscaler |
144 | chown media system /sys/class/ppmgr/ppscaler_rect |
145 | chown media system /sys/class/ppmgr/vtarget |
146 | |
147 | chown media system /sys/class/amaudio/audio_channels_mask |
148 | chown media system /sys/class/amaudio/enable_resample |
149 | chown media system /sys/class/amaudio/resample_type |
150 | chown system mediadrm /sys/class/amaudio/debug |
151 | |
152 | chown system system /sys/class/audiodsp/digital_raw |
153 | chown system system /sys/class/audiodsp/ac3_drc_control |
154 | chown media system /sys/class/audiodsp/dts_dec_control |
155 | chmod 0664 /sys/class/audiodsp/dts_dec_control |
156 | chmod 0666 /dev/audiodsp_pcmenc |
157 | chmod 0666 /dev/audio_spdif |
158 | chmod 0664 /sys/class/amaudio/debug |
159 | chmod 0666 /dev/ilitek_ctrl |
160 | |
161 | chmod 0660 /dev/wifi_power |
162 | |
163 | # default support XBMC |
164 | chmod 666 /sys/class/video/axis |
165 | chmod 666 /sys/class/video/screen_mode |
166 | chmod 666 /sys/class/video/disable_video |
167 | chmod 666 /sys/class/tsync/pts_pcrscr |
168 | chmod 666 /dev/amstream_abuf |
169 | chmod 666 /dev/amstream_hevc |
170 | chmod 666 /dev/amstream_hevc_frame |
171 | chmod 666 /dev/amstream_hevc_sched |
172 | chmod 666 /dev/amstream_mpps |
173 | chmod 666 /dev/amstream_mpts |
174 | chmod 666 /dev/amstream_mpts_sched |
175 | chmod 666 /dev/amstream_rm |
176 | chmod 666 /dev/amstream_sub |
177 | chmod 666 /dev/amstream_sub_read |
178 | chmod 666 /dev/amstream_userdata |
179 | chmod 666 /dev/amstream_vbuf |
180 | chmod 666 /dev/amstream_vframe |
181 | chmod 666 /dev/amstream_vbuf_sched |
182 | chmod 666 /dev/amstream_dves_avc |
183 | chmod 666 /dev/amstream_dves_hevc |
184 | chmod 666 /dev/amvideo |
185 | chmod 666 /dev/ionvideo |
186 | #add for XBMC BlueRay 3d and audio Passthrough |
187 | chmod 666 /sys/class/audiodsp/digital_raw |
188 | chmod 666 /sys/class/audiodsp/digital_codec |
189 | chmod 666 /sys/class/ppmgr/ppmgr_3d_mode |
190 | chmod 666 /sys/class/video/blackout_policy |
191 | chmod 666 /dev/snd/controlC0 |
192 | chmod 666 /dev/snd/pcmC0D0c |
193 | chmod 666 /dev/snd/pcmC0D0p |
194 | chmod 666 /dev/snd/pcmC0D1c |
195 | chmod 666 /dev/snd/pcmC0D1p |
196 | chmod 666 /dev/snd/timer |
197 | chmod 666 /sys/devices/platform/spdif-dit.0/spdif_mute |
198 | chmod 666 /sys/class/amhdmitx/amhdmitx0/config |
199 | |
200 | chown system system /sys/class/subtitle/enable |
201 | chown system system /sys/class/subtitle/total |
202 | chown system system /sys/class/subtitle/width |
203 | chown system system /sys/class/subtitle/height |
204 | chown system system /sys/class/subtitle/type |
205 | chown system system /sys/class/subtitle/curr |
206 | chown system system /sys/class/subtitle/size |
207 | chown system system /sys/class/subtitle/data |
208 | chown system system /sys/class/subtitle/startpts |
209 | chown system system /sys/class/subtitle/fps |
210 | chown system system /sys/class/subtitle/subtype |
211 | chown media system /sys/class/audiodsp/codec_fatal_err |
212 | chown media system /sys/class/subtitle/index |
213 | chown media system /sys/class/audiodsp/digital_codec |
214 | |
215 | # DVB |
216 | chmod 0666 /dev/dvb0.frontend0 |
217 | chmod 0666 /dev/dvb0.demux0 |
218 | chmod 0666 /dev/dvb0.demux1 |
219 | chmod 0666 /dev/dvb0.demux2 |
220 | chmod 0666 /dev/dvb0.dvr0 |
221 | chmod 0666 /dev/dvb0.dvr1 |
222 | chmod 0666 /dev/dvb0.dvr2 |
223 | |
224 | chown media system /dev/dvb0.frontend0 |
225 | chown media system /dev/dvb0.demux0 |
226 | chown media system /dev/dvb0.demux1 |
227 | chown media system /dev/dvb0.demux2 |
228 | chown media system /dev/dvb0.dvr0 |
229 | chown media system /dev/dvb0.dvr1 |
230 | chmod media system /dev/dvb0.dvr2 |
231 | |
232 | chown media system /sys/class/stb/demux0_source |
233 | chown media system /sys/class/stb/demux1_source |
234 | chown media system /sys/class/stb/demux2_source |
235 | chown media system /sys/class/stb/source |
236 | chown media system /sys/class/stb/asyncfifo0_source |
237 | chown media system /sys/class/stb/asyncfifo1_source |
238 | chown media system /sys/class/stb/asyncfifo0_flush_size |
239 | chown media system /sys/class/stb/asyncfifo1_flush_size |
240 | chown media system /sys/class/stb/video_pts |
241 | chown media system /sys/class/stb/audio_pts |
242 | chown media system /sys/class/stb/dsc_source |
243 | |
244 | chmod 0660 /dev/amaudio_ctl |
245 | chown media system /sys/class/tsync/pcr_recover |
246 | |
247 | chown media system /sys/module/amvdec_h264/parameters/dec_control |
248 | chown media system /sys/module/amvdec_mpeg12/parameters/dec_control |
249 | chown media system /sys/module/di/parameters/bypass_hd |
250 | chown media system /sys/module/di/parameters/bypass_all |
251 | chown media system /sys/module/amvideo/parameters/smooth_sync_enable |
252 | chown media system /sys/module/amvdec_h264/parameters/error_recovery_mode |
253 | |
254 | chown media system /sys/module/amvdec_h265/parameters/double_write_mode |
255 | chmod 666 /sys/module/amvdec_h265/parameters/double_write_mode |
256 | |
257 | chown media system /sys/module/deinterlace/parameters/deinterlace_mode |
258 | chown media system /sys/class/graphics/fb0/block_mode |
259 | |
260 | chown mediacodec media /sys/module/amvdec_h265/parameters/buffer_mode |
261 | chown mediacodec media /sys/module/amvdec_h265/parameters/buf_alloc_width |
262 | chown mediacodec media /sys/module/amvdec_h265/parameters/buf_alloc_height |
263 | chown mediacodec media /sys/module/amvdec_h265/parameters/dynamic_buf_num_margin |
264 | |
265 | chown mediacodec media /sys/module/amvdec_vp9/parameters/buffer_mode |
266 | chown mediacodec media /sys/module/amvdec_vp9/parameters/double_write_mode |
267 | chown mediacodec media /sys/module/amvdec_vp9/parameters/buf_alloc_width |
268 | chown mediacodec media /sys/module/amvdec_vp9/parameters/buf_alloc_height |
269 | |
270 | # HDMI/LCD switch |
271 | chown system system /sys/class/display/mode |
272 | chown system graphics /sys/class/display/axis |
273 | chown system system /sys/class/graphics/fb0/scale |
274 | chown system system /sys/class/graphics/fb1/scale |
275 | chown system system /sys/class/graphics/fb0/scale_axis |
276 | chown system system /sys/class/graphics/fb1/scale_axis |
277 | chown system system /sys/class/amhdmitx/amhdmitx0/disp_mode |
278 | chown system system /sys/class/amhdmitx/amhdmitx0/cec_config |
279 | chown system system /sys/class/amhdmitx/amhdmitx0/phy_addr |
280 | chown system system /sys/class/amhdmitx/amhdmitx0/hpd_state |
281 | chown system system /sys/class/amhdmitx/amhdmitx0/cec |
282 | chown system system /sys/class/amhdmitx/amhdmitx0/cec_lang_config |
283 | chown system system /sys/class/amhdmitx/amhdmitx0/config |
284 | chown system system /sys/class/amhdmitx/amhdmitx0/avmute |
285 | chmod 644 /sys/class/amhdmitx/amhdmitx0/avmute |
286 | chown system mediadrm /sys/class/amhdmitx/amhdmitx0/aud_output_chs |
287 | chown media system /sys/class/switch/hdmi/state |
288 | chmod 0660 /sys/class/switch/hdmi/state |
289 | chown media system /sys/devices/virtual/switch/hdmi/state |
290 | chmod 0660 /sys/devices/virtual/switch/hdmi/state |
291 | chown system system /sys/module/tvin_hdmirx/parameters/hdcp22_kill_esm |
292 | chmod 666 /sys/module/tvin_hdmirx/parameters/hdcp22_kill_esm |
293 | chown media system /sys/class/vfm/map |
294 | |
295 | # Free scale |
296 | chown system system /sys/class/graphics/fb0/free_scale |
297 | chown system system /sys/class/graphics/fb0/scale_width |
298 | chown system system /sys/class/graphics/fb0/scale_height |
299 | chown system system /sys/class/graphics/fb0/free_scale_axis |
300 | chown system system /sys/class/graphics/fb1/free_scale |
301 | chown system system /sys/class/graphics/fb1/scale_width |
302 | chown system system /sys/class/graphics/fb1/scale_height |
303 | chown media system /sys/class/graphics/fb0/request2XScale |
304 | chown system system /sys/class/graphics/fb0/freescale_mode |
305 | chown system system /sys/class/graphics/fb0/free_scale_axis |
306 | chown system system /sys/class/graphics/fb0/window_axis |
307 | |
308 | # CPU scaling |
309 | chown system system /sys/class/thermal/thermal_zone0/mode |
310 | chown system system /sys/class/thermal/thermal_zone1/mode |
311 | chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq |
312 | chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq |
313 | chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
314 | chown system system /sys/devices/system/cpu/cpu0/cpufreq/hmp_boost |
315 | chown system system /sys/devices/system/cpu/cpufreq/conservative/freq_step |
316 | |
317 | chown system system /sys/devices/system/cpu/cpufreq/performance2/sampling_rate |
318 | chown system system /sys/devices/system/cpu/cpufreq/performance2/down_threshold |
319 | chown system system /sys/devices/system/cpu/cpufreq/performance2/up_threshold |
320 | chown system system /sys/devices/system/cpu/cpufreq/conservative/sampling_rate |
321 | chown system system /sys/devices/system/cpu/cpufreq/conservative/down_threshold |
322 | chown system system /sys/devices/system/cpu/cpufreq/conservative/up_threshold |
323 | chown system system /sys/class/mali_freq/max |
324 | chown system system /sys/class/freq_limit/limit |
325 | chown system system /sys/devices/system/cpu/cpu1/online |
326 | |
327 | chmod 664 /sys/class/thermal/thermal_zone0/mode |
328 | chmod 664 /sys/class/thermal/thermal_zone1/mode |
329 | chmod 664 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq |
330 | chmod 664 /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq |
331 | chmod 664 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor |
332 | chmod 664 /sys/devices/system/cpu/cpu0/cpufreq/hmp_boost |
333 | chmod 664 /sys/devices/system/cpu/cpufreq/conservative/freq_step |
334 | chmod 664 /sys/devices/system/cpu/cpufreq/performance2/sampling_rate |
335 | chmod 664 /sys/devices/system/cpu/cpufreq/performance2/down_threshold |
336 | chmod 664 /sys/devices/system/cpu/cpufreq/performance2/up_threshold |
337 | chmod 664 /sys/devices/system/cpu/cpufreq/conservative/sampling_rate |
338 | chmod 664 /sys/devices/system/cpu/cpufreq/conservative/down_threshold |
339 | chmod 664 /sys/devices/system/cpu/cpufreq/conservative/up_threshold |
340 | chmod 664 /sys/class/mali_freq/max |
341 | chmod 664 /sys/devices/system/cpu/cpu1/online |
342 | |
343 | chown system system /sys/devices/system/clocksource/clocksource0/current_clocksource |
344 | |
345 | # hdcp2 |
346 | write /sys/class/unifykeys/attach 1 |
347 | chown media root /sys/class/unifykeys/name |
348 | chown media root /sys/class/unifykeys/read |
349 | write /proc/sys/net/ipv4/tcp_max_syn_backlog 2048 |
350 | |
351 | mkdir /data/misc/hdcp 0770 media media |
352 | chown media root /sys/devices/platform/crypto_device/status |
353 | chown media root /sys/devices/platform/crypto_device/algname |
354 | chown media root /sys/devices/platform/crypto_device/keysize |
355 | chown media root /sys/devices/platform/crypto_device/keyaddr |
356 | chown media root /sys/devices/platform/crypto_device/srcaddr |
357 | chown media root /sys/devices/platform/crypto_device/dstaddr |
358 | chown media root /sys/devices/platform/crypto_device/size |
359 | chown media root /sys/devices/platform/crypto_device/dir |
360 | |
361 | chown media system /sys/class/mpgpu/scale_mode |
362 | chmod 664 /sys/class/mpgpu/scale_mode |
363 | chown system system /sys/class/mpgpu/mpgpucmd |
364 | chmod 664 /sys/class/mpgpu/mpgpucmd |
365 | #power |
366 | chmod 664 /sys/power/early_suspend_trigger |
367 | chown root system /sys/power/early_suspend_trigger |
368 | |
369 | #di detect 3D |
370 | chmod 664 /sys/module/di/parameters/det3d_en |
371 | chmod 664 /sys/module/di/parameters/prog_proc_config |
372 | chown root system /sys/module/di/parameters/det3d_en |
373 | chown root system /sys/module/di/parameters/prog_proc_config |
374 | |
375 | write /sys/class/vfm/map "rm default" |
376 | write /sys/class/vfm/map "add default decoder ppmgr deinterlace amvideo" |
377 | |
378 | # virtual sdcard daemon running as media_rw (1023) |
379 | #service sdcard /system/bin/sdcard -u 1023 -g 1023 /data/media /mnt/shell/emulated |
380 | # class late_start |
381 | |
382 | service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 /mnt/media_rw/sdcard1 /storage/sdcard1 |
383 | class late_start |
384 | disabled |
385 | |
386 | service fuse_udisk0 /system/bin/sdcard -u 1023 -g 1023 /mnt/media_rw/udisk0 /storage/udisk0 |
387 | class late_start |
388 | disabled |
389 | |
390 | service fuse_udisk1 /system/bin/sdcard -u 1023 -g 1023 /mnt/media_rw/udisk1 /storage/udisk1 |
391 | class late_start |
392 | disabled |
393 | |
394 | service fuse_sr0 /system/bin/sdcard -u 1023 -g 1023 /mnt/media_rw/sr0 /storage/sr0 |
395 | class late_start |
396 | disabled |
397 | |
398 | service fuse_loop /system/bin/sdcard -u 1023 -g 1023 /mnt/media_rw/loop /storage/loop |
399 | class late_start |
400 | disabled |
401 | |
402 | # Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin |
403 | service watchdogd /sbin/watchdogd 10 20 |
404 | class core |
405 | disabled |
406 | seclabel u:r:watchdogd:s0 |
407 | |
408 | |
409 | # on userdebug and eng builds, enable kgdb on the serial console |
410 | on property:ro.debuggable=1 |
411 | write /sys/module/kgdboc/parameters/kgdboc ttyFIQ2 |
412 | write /sys/module/fiq_debugger/parameters/kgdb_enable 1 |
413 | |
414 | service remotecfg /vendor/bin/remotecfg /vendor/etc/remote.conf |
415 | class main |
416 | oneshot |
417 | seclabel u:r:remotecfg:s0 |
418 | |
419 | service bootvideo /vendor/bin/bootplayer /vendor/etc/bootvideo |
420 | class main |
421 | user root |
422 | group system |
423 | disabled |
424 | oneshot |
425 | |
426 | service hdcp_tx22 /vendor/bin/hdcp_tx22 \ |
427 | -f /vendor/etc/firmware/firmware.le |
428 | class main |
429 | disabled |
430 | oneshot |
431 | |
432 | service hdcp_rx22 /vendor/bin/hdcp_rx22 \ |
433 | -f /vendor/etc/firmware/firmware.le |
434 | class main |
435 | disabled |
436 | oneshot |
437 | seclabel u:r:hdcp_rx22:s0 |
438 | |
439 | service ddrtest /vendor/bin/ddrtest.sh |
440 | class main |
441 | user root |
442 | group root |
443 | oneshot |
444 | |
445 | service factoryreset /vendor/bin/factoryreset.sh |
446 | class main |
447 | user root |
448 | group root |
449 | oneshot |
450 | seclabel u:r:install_recovery:s0 |
451 |