﻿!BAT by sratlf 0807
::language 值为cn或en  指定提示信息语言
::usrpath 值应为路径  作为用户自定义路径  默认为/BOOT/IMGS/
::listnote 将其值作为自动列表提示信息
::filepre 仅对文件名中包含变量filepre指定字符串的文件进行 自动菜单/列表 操作
::defaultc 将其值作为RUN命令行默认执行命令  即输入d将执行变量defaultc指定的命令  默认为空
::dpmsver 值为chenall时使用chenall原版dpms脚本  否则默认使用pseudo修改后的dpms脚本

::fd2hd 值为1时自动将ud启动后识别为fd的可见区仿真为hd
::gzdetect 值为0时将不探测gzip压缩文件原始格式

::ignorerr 值为1时屏蔽错误提示后的选择(即按h键帮助，按enter继续)  改为在等待三秒后返回
::firamode 值为2时禁用一步安装系统

::showfile 值为0时自动菜单及自动列表不显示文件
::showdir 值为0时自动菜单及自动列表不显示文件夹
::showpath  值为1时自动菜单及自动列表显示文件详细路径

::num_c 值为0xXX  指定自动列表数字编号颜色
::file_c 值为0xXX  指定自动列表文件颜色
::dir_c 值为0xXX  指定自动列表文件夹颜色

::showback 值为1时自动列表加载背景图  注：仅在加载背景图的前提下有效

::grub4ver 值为0时自动菜单隐藏grub4dos版本号
::showinfo 值为0时取消自动菜单的帮助信息
::showsize 值为0时自动菜单不显示文件体积

::forcend 值为1时手动输入命令或自动列表状态下  加载fira以及srs驱动后会强制返回  (不建议使用)

::back to preset-menu
::calc *0x307FFC-0x110000 > nul && configfile (md)4+8 ! configfile (md)0x880+0x200
::or
::write 0x307ff8 1 && configfile

if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
::检测grldr版本
calc *0x8278 > nul
if %@retval%>=20130401 || echo -e \n $[0147]Current GRUB4DOS [%@retval%] is too old! && pause && exit
::terminal console
delmod -l %~nx0 > nul || insmod %~f0 > nul && set runs=%~nx0 && set runpath=%~p0
call Fn.15 "%usrpath%" "" || set usrpath=/BOOT/IMGS/
::检测语言
call Fn.15 "%language%" "" || set language=en && read 0x1800820 > nul && set language=cn
::检测进入RUN前的最后一次configfile加载的菜单
::注:若grldr内置菜单未使用过configfile命令，则获取的结果为/menu.lst，不会为空
call Fn.0 0 0x8217 | set tmp=
set tmp= && if not "%tmp:~,4%"=="(md)" if not "%tmp:~,4%"=="(rd)" cat --length=0 %tmp% > nul && set backmenu=%tmp%
call Fn.6
call Fn.15 "%pager%" "" && pager %pager% ! pager off
::若Boot_dev参数值和?_BOOT值相同，则直接处理参数
call Fn.11 "%?_BOOT%" "%Boot_dev%" && goto :start
set Boot_dev=%?_BOOT%
call Fn.11 "%Boot_dev%" "hd0" && set hdd_boot=1 && goto :start
call Fn.11 "%Boot_dev%" "pd" && set memset=1 && pxe keep && goto :start
set fdd_boot=
map --floppies=1 && calc *0x8280&0xff/2 > nul || set /a fdd_boot=*0x8280&0xff > nul
read 0x82b8 > nul && calc *0x82b9&0xff/4 > nul || set /a fdd_boot=*0x82b9&0xff > nul
call Fn.15 "%fdd_boot%" "" || map --floppies=0 ! call Fn.11 "%fd2hd%" "1" && map (%fdd_boot%)+1 (hd) || map (%fdd_boot%) (hd) || echo FDD:%fdd_boot%

:start
set nextloop= && call Fn.15 "%nextloop%" "1" && setlocal
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
if /i "%runs%"=="%~1" && goto :next
::以--开头的参数做参数处理，否则做文件处理
call Fn.15 "%~1" "" && set m=%~1 ! goto :input
call Fn.11 "%m:~,2%" "--" && goto :%m:~2,3% || goto :%m:~2% || goto :merror
call Fn.15 "%~x1" "" && goto :%~x1 || goto :merr
goto :.bin

:as.
shift && goto :%~x1 || goto :merr
:set
endlocal && shift && echo -e %~2 | set %m:~6%=
setlocal
goto :next
:e820cycles
endlocal && shift && set e820=%~2
setlocal
goto :next
:mem
:top
set /l m=%m%
endlocal && set %m:~2%set=1
setlocal
goto :next
:nomem
:noboot
:noswap
:noload
set /l m=%m%
endlocal && set %m:~4%set=0
setlocal
goto :next
:merr
::无法识别的检测是否为文件夹
call :find %~1 dironly && goto :automenu_begin
set dirfnd=
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
:merror
call Fn.15 "%language%" "cn" && echo -e \n No such command: $[0147]%m%$[0x07]\x20 ! echo -e \n 命令错误: $[0147]%m%$[0x07]\x20
call Fn.11 "%in_check%" "1" && exit ! goto :errchoise
:ferr
call Fn.15 "%language%" "cn" && echo -e \n File not found : $[0147]%findfile%$[0x07]\x20 ! echo -e \n 无法找到: $[0147]%findfile%$[0x07]\x20
::选择
:errchoise
if "%back%"=="" || set back= && set filefnd= && set in_check= ! call Fn.11 "%in_check%" "1" && exit
call Fn.11 "%ignorerr%" "1" &; call Fn.73 3 || goto :end
call Fn.11 "%language%" "en" && echo -e \n $[0x07]Hit "$[0146]h$[0x07]" for $[0107]help info$[0x07], OR "$[0146]Enter$[0x07]" to $[0107]continue$[0x07].\n
call Fn.11 "%language%" "cn" && echo -e \n $[0x07]按 "$[0146]h$[0x07]" 键获取$[0107]帮助信息$[0x07], 或者按 "$[0146]Enter$[0x07]" 键$[0107]继续$[0x07]。\n
call Fn.19
::按下小写h键后跳至帮助模块,按下小写i键后跳至直接输入模块
call Fn.11 "%@retval%" "9064" && set filefnd= && goto :help ! call Fn.11 "%@retval%" "5993" && set filefnd= && goto :i ! goto :end

:loadfont
graphicsmode > nul || set language=en && goto :next
if %@retval%>=316 set graphics=%@retval% || set graphics=-1 100:1000 100:1000 24:32
graphicsmode %graphics% > nul || set language=en && goto :next
set fontfile=
cat --length=0 %@root%%%runpath%UNIFONT.HEX > nul && set fontfile=1 ! call :loadrunmod || set language=en && goto :next
call Fn.15 "%fontfile%" "1" && set fontfile=(3)/FONT.LZMA ! set fontfile=%@root%%%runpath%UNIFONT.HEX
endlocal && set fontfile=%fontfile%
set language=cn
font && font %fontfile% || set language=en
setlocal
map --status=3 && map --unmap=3 && map --rehook
goto :next

:loadrunmod
map --status=3 && cat --length=3 (3)/RUNDPMS > nul && exit
set loadroot=
set loadfile=%@root%%%runpath%%%runs%
cat --length=0 %loadfile% > nul || call :find %loadfile% fileonly || exit 1
map --mem=0x20000 %loadroot%%%loadfile% (rd) || exit 1
cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
calc *0x82d8=*0x82d8-%?% > nul
calc *0x82d0=*0x82d0+%?% > nul
map --mem (rd)+1 (3) || exit 1
map --rehook
exit

::指定设备类型（默认为chpu）
:dev
shift
echo -e %~1 | set devtmp=
if not "%devtmp%"=="" if /i not "%devtmp%"=="all" || endlocal && set usrdev=chpuf && setlocal && goto :next
set tmp=%devtmp%
::逐项对比，以确定参数是否合法
:dev_dt
if "%tmp%"=="" && endlocal && set usrdev=%devtmp% && setlocal && goto :next
call Fn.11 "chpufn" "%tmp:~,1%" || set usrdev= && set m=%~0=%devtmp% && goto :merror
set tmp=%tmp:~1%
goto :dev_dt

::通用查找文件模块
:find
set loadfile=
set filefnd=
set loadpath=
set dirfnd=
set loadroot=
set tmproot=
set fileonly=
set dironly=
set loop=
call Fn.11 "%~2" "fileonly" && set fileonly=1 && shift 2
call Fn.11 "%~2" "dironly" && set dironly=1 && shift 2
::若参数为数字，判断是否为自动列表指定的数字
call Fn.11 "%Boot_dev%" "pd" && set fastmode=1
call Fn.15 "%fastmode%" "" || set /a time=%@time:~,2% * 3600 + %@time:~3,2% * 60 + %@time:~6,2% + 1 > nul
call Fn.11 "%autotype%" "list" && call Fn.15 "%md%" "" && checkrange 1:%i% calc %~1 > nul && calc %md% + %~1 > nul &; cat (md)%@retval%+1 | call :serach 
call Fn.15 "%loop%" "1" &; call Fn.15 "%~1" "%~nx1" && call :serach %~f1 ! call :serach %usrpath%%%~1
call Fn.15 "%fastmode%" "" |; calc %@time:~,2% * 3600 + %@time:~3,2% * 60 + %@time:~6,2% > nul &; if %@retval%<=%time% && set fastmode=0 ! set fastmode=1
set tmproot=
set fileonly=
set dironly=
set loop=
::处理查找的返回值
call Fn.15 "%~2" "exit" && call Fn.15 "%loadfile%" "" || call Fn.15 "%loadpath%" "" || exit 1 ! exit
exit
:serach
call Fn.15 "%loop%" "1" && set findfile=%~pnx1 && rootnoverify %~d1 || exit
call Fn.15 "%fdd_boot%" "" && call Fn.11 "%loop%" "1" && call Fn.11 "%filefnd%" "0" && call Fn.11 "%dirfnd%" "0" &; set loop= && set fdd_boot= && root (hd0) > nul || root (fd0) > nul || set loop=1
call Fn.15 "%tmproot%" "%@root%" &; call Fn.15 "%helpinfo%" "0" &; call Fn.11 "%language%" "en" && echo -e \n $[0004]Loading $[0106]%@root%$[0102]%~pnx1$[0x07]... ! echo -e \n $[0004]正在加载 $[0106]%@root%$[0102]%~pnx1$[0x07]...
call Fn.15 "%loop%" "1" && set loop=1 ! exit
set tmproot=%@root%
::按文件查找
call Fn.15 "%usrdev%" "" |; call Fn.15 "%fdd_boot%" "" && set usrdev=chpuf ! set usrdev=chpu
call Fn.11 "%dironly%" "1" && goto :serach_dir
cat --length=0 %~pnx1 > nul || find --set-root --devices=%usrdev% cat --length=0 %~pnx1 > nul || set filefnd=0
call Fn.15 "%filefnd%" "0" && set loadfile=%~pnx1 && set loadroot=%@root% && goto :serach
:serach_dir
call Fn.11 "%fileonly%" "1" && goto :serach
::按文件夹查找
set path=%~pnx1
call :path_check || call Fn.15 "%path:~-1%" "/" && set path=%path%/
call Fn.11 "%dironly%" "1" && set findfile=%path%
ls %path% > nul || find --set-root --devices=%usrdev% ls %path% > nul || set dirfnd=0
call Fn.15 "%dirfnd%" "0" && set loadpath=%path% && set loadroot=%@root% && goto :serach
exit

::对path值进行检测，以确定是否合法，调用方式 call :path_check ;处理结束后path值为“认为”合法的结果
:path_check
::检测第一位是否为/
call Fn.15 "%path%" "" || set path=/ ! call Fn.15 "%path:~,1%" "/" && set path=%path:~1% && goto :path_check
::若path值最后一位是/，先去掉
call Fn.15 "%path%" "/" && call Fn.11 "%path:~-1%" "/" && set path=%path:~,-1% && goto :path_check
::重新补齐/
call Fn.15 "%path%" "/" && call Fn.15 "%path%" "" && set path=%path%/ ! set path=/
exit

::本脚本结束模块
:end
if /i "%~2"=="exit" && set endmode=2
call Fn.11 "%in_check%" "1" && exit 1
call Fn.11 "%endmode%" "2" && endlocal && set loadroot=%loadroot% && set loadfile=%loadfile% && set loadpath=%loadpath% && exit
call Fn.0 0 0x8217 | set tmp=
set tmp= && call Fn.15 "%tmp%" "(rd)+1" && set filefnd= && set dirfnd= ! exit
::检测内置菜单位置
calc *0x307FFC-0x110000 > nul && set tmp=(md)4+8 ! set tmp=(md)0x880+0x200
set tmp= && call :menucheck %backmenu% %menu% %tmp% || write 0x307ff8 1
configfile %loadroot%%%loadfile%
exit
::检测菜单文件是否存在，因菜单文件可能为(md)或(rd)，因此特殊处理
:menucheck
call Fn.15 "%~1" "" || exit 1
set loadroot=
set loadfile=%~1
call Fn.11 "%autotype%" "list" && call Fn.15 "%md%" "" && checkrange 1:%i% calc %~1 > nul && calc %md% + %~1 > nul &; cat (md)%@retval%+1 | set loadfile=
call Fn.15 "%loadfile:~1,2%" "md" && call Fn.15 "%loadfile:~1,2%" "rd" && call :find %loadfile% fileonly exit ! cat --length=0 %loadfile% > nul || set loadfile=
call Fn.15 "%loadfile%" "" && exit
shift
goto :menucheck

::检测所有参数是否处理完，否则处理下个参数
:next
shift
call Fn.15 "%~1" "" && set nextloop=1 && goto :start
call Fn.11 "%in_check%" "1" && exit
goto :end

::帮助信息模块
:help
set morehelp=
if /i "%~1"="--help" && shift && if /i "%~2"=="more" && shift && set morehelp=1
set c1=$[0x0A]
set c7=$[0x07]
set c3=$[0005]
set c4=$[0x0E]
set cf=$[0x0F]

call Fn.11 "%morehelp%" "1" && pager on ! set c1=%c4% && set c4=%c1%

call Fn.15 "%language%" "cn" && echo -e -n \n%runs% Usage,\x20 ! echo -e -n \n%runs% 命令格式，
call Fn.11 "%morehelp%" "1" && echo -e ! call Fn.15 "%language%" "cn" && echo -e for detail please input %c3%--help more%c7%\x20 ! echo -e 详细说明请执行 %c3%--help more %c7%\x20

echo -e \n%runs% %c7%/path/%c1%|%c7%file.iso%c1%|%c7%.img%c1%|%c7%.ima%c1%|%c7%.gz%c1%|%c7%.lzma%c1%|%c7%.0%c1%|%c7%.bin%c1%|%c7%.lst%c1%|%c7%.0pe%c1%|%c7%.txt%c1%|%c7%.ini%c1%|%c7%.log%c1%|%c7%.inf
call Fn.11 "%morehelp%" "1" && echo -e -n \n%c4%\t /path/ && if not "%language%"=="cn" echo -e %c7%  autolist for /path/ || echo -e %c7%  自动生成 /path/ 路径下文件菜单
call Fn.11 "%morehelp%" "1" && echo -e -n %cf%\tfile%c4%.iso && if not "%language%"=="cn" echo -e %c7% cd-rom iso file || echo -e %c7% 光盘镜像文件
call Fn.11 "%morehelp%" "1" && echo -e -n %cf%\tfile%c4%.lst && if not "%language%"=="cn" echo -e %c7% menu file of grub4dos || echo -e %c7% grub4dos菜单文件
call Fn.11 "%morehelp%" "1" && echo -e -n %cf%\tfile%c4%.0pe && if not "%language%"=="cn" echo -e %c7% menu file for 0PE only || echo -e %c7% 0PE专用菜单文件
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\tfile %cf%/ file%c4%.bin %cf%/ file%c4%.0 && if not "%language%"=="cn" echo -e %c7% OS boot file || echo -e %c7% 系统引导文件
call Fn.11 "%morehelp%" "1" && echo -e -n %cf%\tfile%c4%.gz %cf%/ file%c4%.ima %cf%/ file%c4%.img %cf%/ file%c4%.lzma && if not "%language%"=="cn" echo -e %c7% floppy img file || echo -e %c7% 软盘镜像文件
call Fn.11 "%morehelp%" "1" && echo -e -n %cf%\tfile%c4%.txt %cf%/ file%c4%.ini %cf%/ file%c4%.log %cf%/ file%c4%.inf && if not "%language%"=="cn" echo -e %c7% text file || echo -e %c7% 文本文件

echo -e \n%runs% %c7%[%c3%Options%c7%] %cf%etc.
call Fn.11 "%morehelp%" "1" && call Fn.15 "%language%" "en" && echo -e \n%c7%    固定参数后可跟其他参数或文件，参数设定后永久有效，即除非进入新的grub4dos环境或清除所有变量值，否则一直生效

echo -e -n \n%c3%\t--top %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e -n %c3%\t--nt %cf%/file.* && echo -e %c3%\t\t--set-%c4%var%c7%=%c4%value %cf%etc. ! call Fn.15 "%language%" "cn" && echo -e %c7% try to allocate memory at highest available address ! echo -e %c7% 将要仿真的镜像将镜像加载至高端内存后再进行仿真
echo -e -n %c3%\t--mem %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e -n %c3%\t--pe %cf%/file.* && echo -e %c3%\t\t--dev=%c7%[%c1%c%c7%,%c1%h%c7%,%c1%p%c7%,%c1%u%c7%,%c1%f%c7%,%c1%all%c7%] %cf%etc. ! call Fn.15 "%language%" "cn" && echo -e %c7% image file will map to memery ! echo -e %c7% 将要仿真的镜像先加载到内存后再进行仿真
echo -e -n %c3%\t--nomem %cf%etc.   && call Fn.11 "%morehelp%" "1" || echo -e -n %c3%\t--as.%c4%XXX %cf%/file.* && echo -e %c3%\t--e820cycles=%c4%N %cf%etc. ! call Fn.15 "%language%" "cn" && echo -e %c7% image file will be directlly mapped ! echo -e %c7% 对将要仿真的镜像直接进行仿真，不加载到内存
echo -e -n %c3%\t--noswap %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e %c3%\t--end %c7%[%c1%exit%c7%] ! call Fn.15 "%language%" "cn" && echo -e %c7% hdd sequence will not be changed ! echo -e %c7% 不进行磁盘交换操作
echo -e -n %c3%\t--%c7%[%c3%no%c7%]%c3%boot %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e %c3%--ramos %cf%/hdd.* %c7%[%c4%/ldrfile%c7%] ! call Fn.15 "%language%" "cn" && echo -e %c7% the boot command will [not] be executed ! echo -e %c7% 将[不]执行 boot 命令
echo -e -n %c3%\t--swap %cf%etc.      && call Fn.11 "%morehelp%" "1" || echo -e ! call Fn.15 "%language%" "cn" && echo -e %c7% hdd swap silent mode, swap hd1 to hd0 only ! echo -e %c7% 磁盘交换，静默模式，将hd1交换至hd0
echo -e -n %c3%\t--swap-ext %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e ! call Fn.15 "%language%" "cn" && echo -e %c7% hdd swap advanced mode, can swap specified hdd to hd0 ! echo -e %c7% 磁盘交换，高级模式，可交换指定hd至hd0，可多次交换
echo -e -n %c3%\t--loadfont %cf%etc.  && call Fn.11 "%morehelp%" "1" || echo -e ! call Fn.15 "%language%" "cn" && echo -e %c7% for zh-CN users, load Chinese Fonts ! echo -e %c7% 加载中文字库

call Fn.11 "%morehelp%" "1" && echo -e -n \n%c3%\t--set-%c4%var%c7%=%c4%value %cf%etc.  && if not "%language%"=="cn" echo -e %c7% set the value of the variable var is value || echo -e %c7% 设置变量 var 的值为 value，永久有效
call Fn.11 "%morehelp%" "1" && echo -e -n %c3%\t--dev=%c7%[%c1%c%c7%,%c1%h%c7%,%c1%p%c7%,%c1%u%c7%,%c1%f%c7%,%c1%all%c7%] %cf%etc.  && if not "%language%"=="cn" echo -e %c7% find the file on the specified device || echo -e %c7%在指定的设备上查找文件，默认为chpu，永久有效
call Fn.11 "%morehelp%" "1" && echo -e -n %c3%\t--e820cycles=%c4%N %cf%etc.  && if not "%language%"=="cn" echo -e %c7% the same to the grub4dos map --e820cycles command || echo -e %c7% 作用同 grub4dos 中 map --e820cycles 参数，永久有效

call Fn.11 "%morehelp%" "1" && echo -e -n \n%c3%\t--nt %cf%/file.*  && if not "%language%"=="cn" echo -e %c7% for UFD only, boot the local OS boot file || echo -e %c7% 仅适用于USB启动，启动指定的本地硬盘上的nt系统引导文件
call Fn.11 "%morehelp%" "1" && echo -e -n %c3%\t--pe %cf%/file.*  && if not "%language%"=="cn" echo -e %c7% boot the specified PE boot file || echo -e %c7% 启动指定的pe系统引导文件
call Fn.11 "%morehelp%" "1" && echo -e -n %c3%\t--as.%c4%XXX %cf%/file.*  && if not "%language%"=="cn" echo -e %c7% load the specified file as the specified file type || echo -e %c7% 将指定文件按指定文件类型加载
call Fn.11 "%morehelp%" "1" && echo -e -n %c3%\t--ramos %cf%/hdd.* %c7%[%c4%/ldrfile%c7%]  && if not "%language%"=="cn" echo -e %c7% map the hdd image file to mem and boot it || echo -e %c7% 加载指定硬盘映像至内存启动，可指定引导文件

echo -e \n%runs% %c7%[Options] %c3%--automenu%c7%[%c1%-all%c7%]%c4%|%c3%--autolist%c7%[%c1%-all%c7%] [%c1%--show%c4%|%c1%--not-show%cf%.XX1.XX2-.NNN%c7%] [%c1%subdir=%c4%N%c7%] [%cf%/path/%c7%]
call Fn.11 "%morehelp%" "1" && echo -e -n \n%c4%\t--automenu && if not "%language%"=="cn" echo -e %c7%     automenu for the specified path || echo -e %c7%     自动生成指定目录下文件菜单
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--automenu-all && if not "%language%"=="cn" echo -e %c7% automenu for the all available devices || echo -e %c7% 生成生成所有可用设备菜单
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--autolist && if not "%language%"=="cn" echo -e %c7%     autolist for the specified path || echo -e %c7%     自动生成指定目录下文件菜单
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--autolist-all && if not "%language%"=="cn" echo -e %c7% autolist for the all available devices || echo -e %c7% 生成生成所有可用设备菜单
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--show.XX1.XX2-.NNN && if not "%language%"=="cn" echo -e %c7%     show the specifiled file type only, * for all || echo -e %c7%     只显示指定后缀的文件，为*时全部显示
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--not-show.XX1.XX2-.NNN && if not "%language%"=="cn" echo -e %c7% not show the specifiled file type || echo -e %c7% 不显示指定后缀的文件
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--automenu[-all]|--autolist[-all] %c4%[/path/] && if not "%language%"=="cn" echo -e %c7% specify the path || echo -e %c7% 指定目录
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--automenu[-all]|--autolist[-all] %c4%subdir=N %c7%[/path/] && if not "%language%"=="cn" echo -e %c7% specify the deep leveal || echo -e %c7% 指定目录深度

echo -e \n%runs% %c7%[Options] %c3%--fira%c4%|%c3%--wvbk%c7%[%c1%-nodrive%c7%] <%c1%iso=%c7%/file.iso%c4%|%c1%disk=%c7%/hdd.*%c4%|%cf%etc.%c7%>
echo -e \n%runs% %c7%[Options] %c3%--fira%c4%|%c3%--wvbk%c7%[[%c1%-none%c7%]%c4%|%c7%[%c1%-isonly%c7%][%cf%:/img.*%c7%]] [%c1%srs%c4%|%c1%dpms%c7%[%cf%:/file.*%c7%]] [%c1%sif%c7%[%cf%:/winnt.sif%c7%]] <%c1%iso=%c7%/file.iso%c4%|%c1%disk=%c7%/hdd.*%c4%|%cf%etc.%c7%>
call Fn.11 "%morehelp%" "1" && echo -e -n \n%c4%\t--fira && if not "%language%"=="cn" echo -e %c7% use firadisk driver || echo -e %c7% 使用firadisk驱动
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\t--wvbk && if not "%language%"=="cn" echo -e %c7% use winvblock driver || echo -e %c7% 使用winvblock驱动
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--fira|--wvbk%c4%-nodrive && if not "%language%"=="cn" echo -e %c7% no driver will be mapped to fd || echo -e %c7% 不加载任何驱动
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--fira|--wvbk%c4%-none && if not "%language%"=="cn" echo -e %c7%    will not map img file to fd0 || echo -e %c7%    不加载firadisk或winvblock驱动
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--fira|--wvbk%c4%-isonly && if not "%language%"=="cn" echo -e %c7%  boot the iso file directly || echo -e %c7%  加载驱动后直接启动iso镜像
call Fn.11 "%morehelp%" "1" && echo -e -n %c7%\t--fira|--wvbk[-isonly][%c4%:/img.*%c7%] && if not "%language%"=="cn" echo -e %c7%  map the specified img file to fd1 || echo -e %c7%  加载指定的软驱镜像至fd1
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\tsrs%c7%|%c4%dpms%c7%[:/file.*] && if not "%language%"=="cn" echo -e %c7% specify the SRS or DPMS driver pack || echo -e %c7% 指定驱动包
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\tsif%c7%[:/winnt.sif] && if not "%language%"=="cn" echo -e %c7%  specify the unattended installation file || echo -e %c7%  指定自应答文件
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\tiso=%c7%/file.iso && if not "%language%"=="cn" echo -e %c7% specify the iso image file || echo -e %c7% 指定iso镜像
call Fn.11 "%morehelp%" "1" && echo -e -n %c4%\tdisk=%c7%/hdd.* && if not "%language%"=="cn" echo -e %c7%   specify the hdd image file || echo -e %c7%   指定硬盘映像
echo
call Fn.11 "%morehelp%" "1" && pager %pager%

set morehelp=
set c1=
set c3=
set c4=
set c7=
set cf=

call Fn.11 "%in_check%" "1" && exit
goto :i

:ic
set input=
commandline
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
::手动输入模块
:input
if /i "%~1"="--input" && shift
call Fn.6
set c1=$[0104]
set c2=$[0003]
set c7=$[0x07]
call Fn.11 "%language%" "en" && echo -e \n $[0x07] Please input the command, use "%c1%--help%c7%" or "$[0005]--help more%c7%" for %c2%Command Usage%c7%.
call Fn.11 "%language%" "en" && echo -e \n $[0x07] You can also input "%c1%b%c7%" to %c2%Go Back %c7%or "$[0005]c%c7%" to %c2%Commandline%c7%.\n
call Fn.11 "%language%" "cn" && echo -e \n $[0x07] 请输入要执行的命令, 可以输入 "%c1%--help%c7%" 或 "$[0005]--help more%c7%" 获取%c2%命令格式%c7%。
call Fn.11 "%language%" "cn" && echo -e \n $[0x07] 也可以输入 "%c1%b%c7%" 进行%c2%返回%c7%操作, 或者输入 "$[0005]c%c7%" %c2%进入命令行%c7%。\n
set c1=
set c2=
set c7=
:i
set input=
set /p input=%runs%>  || goto :i
goto :i%input% > nul || set in_check=1
set input= && call :autolist_input %input% || set in_check= && goto :end
call Fn.15 "%debug%" "" && echo -e \n Input: %input% %* && pause
set input= && call :start %input% %* || set in_check= && goto :end
set in_check=
call Fn.15 "%forcend%" "exit" && goto :i ! set forcend=1 && exit
goto :i

::自动列表执行指定数字项
:autolist_input
set tmp=
call Fn.15 "%~1" "" && set /l tmp=%~1 ! exit
call Fn.11 "%tmp:~,1%" "\" && set input=%input% %tmp:~-1% && shift && goto :autolist_input
call Fn.15 "%tmp%" "b" || set tmp=--end
call Fn.15 "%tmp%" "--end" || set input=%input% --end && set endmode=1 &; if /i "%~2"=="exit" && set input=%input% exit && set endmode=2 && shift 2
call Fn.15 "%tmp%" "--end" |; shift && call Fn.15 "%~0" ":autolist_input" && goto :autolist_input ! if not "%endmode%"=="1" if not "%endmode%"=="2" || exit 1
if "%tmp%"=="h" && set input=--help && shift && goto :autolist_input
if "%tmp%"=="d" && if not "%defaultc%"=="" set input=%defaultc% && shift && goto :autolist_input
if not "%tmp:~,5%"=="--set" if not "%tmp%"=="--dev" if not "%tmp%"=="subdir" if not "%tmp%"=="--e820cycles" || set input=%input% %~1=%~2 && shift && shift && goto :autolist_input
call Fn.11 "%autotype%" "list" && checkrange 1:%i% calc %~1 > nul && calc %md% + %~1 > nul ! set input=%input% %~1 && shift && goto :autolist_input
call Fn.15 "%md%" "" && if %@retval%>=%md% && cat (md)%@retval%+1 | set input=%input% 
shift
goto :autolist_input

::向下翻页模块，计算起始行数及结束行数
:i+
if not "%line%"=="" if not "%lineb%"=="" if not "%linee%"=="" if not "%linem%"=="" || goto :i
if %line%>=%linee% || goto :i
set /a lineb=%linee% > nul
set /a linee=%linee%+%linem% > nul
goto :next_page
::向上翻页模块，计算起始行数及结束行数
:i-
if not "%line%"=="" if not "%lineb%"=="" if not "%linee%"=="" if not "%linem%"=="" || goto :i
call Fn.15 "%lineb%" "1" || goto :i
set /a lineb=%lineb%-%linem% > nul
if %lineb%<=0 && set lineb=1
set /a linee=%linee%-%linem% > nul
if %linee%<=0 && set /a linee=%linem% > nul
::重新定义自动列表的基础参数值，重新生成自动列表
:next_page
setlocal
set getpath=
cat (md)%md%+1 | call :next_page_path 
set listinit=1
set getpath= && call :init_autotype %getpath%
set subdirgo= && goto :%subdirgo% || goto :automenu_begin
:next_page_path
set subdirgo=
set path=
call Fn.15 "%~1" "%dir_deep%" && call Fn.15 "%~2" "" || rootnoverify %~d1 && set getpath=%~pnx1 && set path=%~pnx1 && set subdirgo=automenu_begin && exit
set getpath=%*
call Fn.15 "%~1" "%dir_deep%" &; call Fn.15 "%~3" "" && set path=%~3 && set subdirgo=automake_all && exit ! set subdirgo=autolist-all && exit
call Fn.15 "%~2" "all\ devices" && set dir_root=%~2 && set subdirgo=subdir_begin && exit
call Fn.15 "%~3" "" && set path=%~3 && set subdirgo=subdir_all_begin
exit

::磁盘交换模块，按s键为循环交换，如原(hd0)->(hd2),原(hd1)->(hd0),原(hd2)->(hd1)
::按数字键为直接交换目标hd至hd0
:swap-ext
::两块hdd以上才进行交换
set swapset= && if not "%swapset%"=="0" checkrange 2:-1 calc *0x475&0xff > nul || goto :swapend
setlocal
::输出hdd体积
call :disk_size
call Fn.15 "%hdsize:~-2%" "\n" && set hdsize=%hdsize%\n
call Fn.15 "%language%" "cn" && echo -e \n Current%hdsize% ! echo -e \n 当前%hdsize%
set hdsize=
::输出各分区详细信息
set helpinfo=1
debug 1
find --devices=h | call :part_info=
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
set helpinfo=
endlocal
::选择是否交换
call Fn.11 "%language%" "en" && echo -e \n $[0x07]Hit "$[0146]S$[0x07]" to $[0107]swap HDD$[0x07], OR "$[0146]Enter$[0x07]" to $[0107]continue$[0x07], nothing to do.
call Fn.11 "%language%" "cn" && echo -e \n $[0x07]按 "$[0146]S$[0x07]" 键$[0107]交换磁盘$[0x07], 或按 "$[0146]Enter$[0x07]" 键$[0107]继续$[0x07], 不执行磁盘交换。
set hdn= && checkrange 2:-1 calc *0x475&0xff > nul && set /a hdn=*0x475&0xff-1 > nul
call Fn.15 "%hdn%" "" && call Fn.11 "%language%" "cn" && if %hdn%>=2 echo -e \n $[0x07]也可按$[0107]数字键(1-%hdn%)$[0x07]直接交换指定hd至hd0 (如：按数字键%hdn%将交换(hd%hdn%)至(hd0))。
call Fn.15 "%hdn%" "" && call Fn.11 "%language%" "en" && if %hdn%>=2 echo -e \n $[0x07]Hit $[0107]1 to %hdn% $[0x07]can swap specified hd to hd0, eg. hit %hdn% will swap (hd%hdn%) to (hd0).
::call Fn.19
::call Fn.15 "%@retval%" "8051" && call Fn.15 "%@retval%" "8019" && goto :swapend
set testkey=
set swaploop=
pause
call Fn.15 "%@retval%" "83" && call Fn.15 "%@retval%" "115" && set testkey=%@retval%
call Fn.15 "%testkey%" "" && checkrange 1:%hdn% calc %testkey%-48 > nul && set /a swaploop=%testkey%-48 > nul
call Fn.15 "%testkey%" "" && set testkey= && call Fn.15 "%swaploop%" "" || goto :swapend
::交换模块
:swap
if "%swaploop%"=="" if /i not "%~1"=="--swap-ext" && set swaploop=1
set swapset= && if not "%swapset%"=="0" checkrange 2:-1 calc *0x475&0xff > nul || goto :swapend
set hd0=0x80 && if "%swaploop%"=="" set /A hdm=*0x475&0xff+0x7f > nul || set /A hdm=%swaploop%+0x80 > nul
::先将hd0交换为最后一块hdd
map (%hd0%) (%hdm%) > nul
calc *0x82b8 > nul && set /A hdu=*0x82b9&0xff > nul && set udswap=
calc *0x82b8 > nul && if %hdu%==%hd0% calc *0x82b9=*0x82b9&0xffffff00|%hdm% > nul && set udswap=1
:swapbegin
::依次交换每块hdd
if "%swaploop%"=="" set /A hd1=%hd0%+1 > nul || set hd1=%hdm%
map (%hd1%) (%hd0%) > nul
call Fn.15 "%udswap%" "1" && calc *0x82b8 > nul && set /A hdu=*0x82b9&0xff > nul
call Fn.15 "%udswap%" "1" && calc *0x82b8 > nul && if %hdu%==%hd1% calc *0x82b9=*0x82b9&0xffffff00|%hd0% > nul && set udswap=1
set /A hd0=%hd1% > nul
call Fn.15 "%hd1%" "%hdm%" && goto :swapbegin
map --rehook
set hd0=
set hd1=
set hdu=
set hdm=
set udswap=
call Fn.15 "%swaploop%" "" && set targethd=(hd%swaploop%) ! set targethd=(hd1)
set swaploop=
call Fn.15 "%language%" "cn" && echo -e \n Success for swap %targethd% to (hd0). ! echo -e \n 交换磁盘 %targethd% 至 (hd0) 成功。
set targethd=
::若是增强版swap则继续提示是否交换
if /i "%~1"=="--swap-ext" && goto :swap-ext
:swapend
call Fn.11 "%swapback%" "1" && set swapback= && exit
goto :next

::获取所有hdd体积模块
:disk_size
::计算硬盘数
if "%hddm%"=="" && set /a hddm=*0x475&0xff-1 > nul && set hddt=0 && set hdsize=
setlocal
geometry (hd%hddt%) | call :sector_size 
::第七参数为扇区总数及每扇区大小，两数相乘即为hdd总体积（字节）
call :get_size %sectorc%%*%sectors%
set sectors=
set sectorc=
calc %tmp:~,-3% + 1 > nul
echo -e %@retval%\x20%tmp:~-2% | set tmp=
::对结果进行前对齐
call :fr_check 7
set size=%tmp%
set tmp=
::除第一个hdd体积外，每三个hdd就换行输出
if "%hddt%"=="0" && set tempn=\n\x20\x20\x20\x20\x20\n\x20\x20\x20\x20\x20 ! set tempn= && checkrange 0 calc %hddt% % 3 > nul && set tempn=\n\x20\x20\x20\x20\x20
endlocal && call Fn.15 "%language%" "cn" && set hdsize=%hdsize%\x20hdd%hddt%\x20size\x20is\x20%size%\x20\x3b%tempn% ! set hdsize=%hdsize%\x20hdd%hddt%\x20体积为\x20%size%\x20\x3b%tempn%
if "%hddt%"=="%hddm%" && set hddt= && set hddm= && exit
set /a hddt=%hddt%+1 > nul
goto :disk_size

:.gz
call Fn.11 "%gzdetect%" "0" && goto :.ima
call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && goto :automenu_begin
write 0x82a4 1 > nul
cat --locatei=\x1F\x8B\x08 --length=0x3 %loadroot%%%loadfile% > nul || write 0x82a4 0 > nul && goto :.ima
cat --skip=0xa --locate=\x00 --number=1 %loadroot%%%loadfile% > nul || write 0x82a4 0 > nul && goto :.ima
set tmp=%?%
cat --skip=0xa --locate=\x2E --length=%?% %loadroot%%%loadfile% > nul || write 0x82a4 0 > nul && goto :.bin
calc %tmp%-%?% > nul
cat --skip=%?% --length=%@retval% %loadroot%%%loadfile% | set /l tmp=
write 0x82a4 0 > nul || set tmp= && goto :%tmp% > nul || goto :.ima
:.ima
:.img
:.lzma
call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && goto :automenu_begin
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
call :kernel %loadroot%%%loadfile% || goto :boot
set mem=--mem && call Fn.11 "%memset%" "0" && set mem=
map %mem% %loadroot%%%loadfile% (fd0)
map --hook
if /i "%~2"=="--dts-list" && shift && goto :dts-list ! set /l tmp=%~n1 && shift
set tmp= && if "%~1"=="" goto :img_boot || goto :%tmp:~,3%-ext || set /l tmp=%~1
set tmp= && goto :%tmp:~2% || goto :img_boot

:dts-ext
if /i "%~1"=="--dts-ext" && shift
if "%~1"=="" && goto :dts-list
set loop=
if /i not "%~1"=="text" if /i not "%~1"=="gdi" set loop=1 && call :dts-ext text UMBPCI2 %* && goto :img_boot
cat --locatei="MENUDEFAULT" --number=1 (0)/CONFIG.SYS
shift && write --offset=%?% (0)/CONFIG.SYS MENUDEFAULT=%~1,1 
cat --locatei="MENUDEFAULT" --number=2 (0)/CONFIG.SYS
shift && write --offset=%?% (0)/CONFIG.SYS MENUDEFAULT=%~1,1  
cat --locatei="dostools.bat" --number=1 (0)/AUTOEXEC.BAT
shift && write --offset=%?% (0)/AUTOEXEC.BAT dostools.bat %* end
set loop= && call Fn.11 "%loop%" "1" && exit ! goto :img_boot

:dts-list
::call Fn.6
command (0)/GRUB/OFFSET.grb
::判断是否加载过字库，但无法判断当前是否加载了字库
::read 0x1800820 || font (fd0)/grub/ghost.hex
font && font (fd0)/grub/ghost.hex
write --offset=%offset1% (0)/CONFIG.SYS MENUDEFAULT=text,1 
write --offset=%offset2% (0)/CONFIG.SYS MENUDEFAULT=BASIC1,01  
cat --skip=3 (fd0)/grub/items.txt
set /p p 请输入要连续调用的模块序列(例如:1a 4b 3a):
write --offset=%offset4% (0)/AUTOEXEC.BAT dostools.bat %p% end
goto :img_boot

:max-ext
if "%~1"=="" && exit ! if /i "%~1"=="--max-ext" && shift ! if /i not "%~1"=="call" && set maxext=call
set maxext=%maxext% %*
cat --locatei="default=" --number=1 (0)/CONFIG.SYS > nul
cat --skip=%?% --locatei="," --replace=",0" --number=1 (0)/CONFIG.SYS
cat --locatei="Call M.BAT" --number=1 (0)/AUTOEXEC.BAT > nul || cat --locate="gh.bat" --replace="%maxext%" (0)/autoexec.bat && goto :img_boot
set maxext= && call Fn.15 "%?%" "0x0" && write --offset=%?% (0)/AUTOEXEC.BAT %maxext% \r M.BAT \r
goto :img_boot

:.iso
call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && goto :automenu_begin
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
set tmp=%~2
set tmp= && call Fn.11 "%tmp:~,3%" "(0x" && set tar=%tmp% && shift 2 ! set tar=(0xff)
set mem1=--mem
call Fn.11 "%memset%" "1" && set mem=--mem ! call Fn.11 "%memset%" "0" && set mem1=
map %mem% %loadroot%%%loadfile% %tar% || map %mem1% %loadroot%%%loadfile% %tar% || echo $[0x4E]Map %loadroot%%%loadfile% to %tar% failed!!! && call Fn.73 3
call Fn.15 "%e820%" "" && map --e820cycles=%e820%
map --hook
call Fn.11 "%prinstall%" "1" && call Fn.15 "%isonly%" "1" && call Fn.11 "%hdd_boot%" "1" && set swapback=1 && call :swap-ext --swap-ext
call Fn.11 "%prinstall%" "1" &; set cdrom=cdrom,vmem=find:%loadfile%; && call Fn.15 "%isonly%" "1" && goto :cd_or_hdd ! call :fira_auto
goto :iso_boot

:.0
:.bin
set loadroot=
set loadfile=
set tmp=%~1
set tmp= && call Fn.11 "%tmp:~-1%" "/" && call :find %~1 dironly && goto :automenu_begin
cat --length=0 %~1 > nul && set loadfile=%~1 ! call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && goto :automenu_begin
call Fn.15 "%loadroot%" "" |; call Fn.11 "%language%" "en" && echo -e \n $[0004]Loading $[0106]%loadfile%$[0x07]... ! echo -e \n $[0004]正在加载 $[0106]%loadfile%$[0x07]...
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
cat --locate=\xEF\xBB\xBF --length=3 %loadfile% > nul && calc 3 > nul
cat --skip=%@retval% --locatei="!BAT" --length=0x4 %loadfile% > nul && goto :grub4dos_script
call :kernel %loadroot%%%loadfile% || goto :boot
goto :chain_boot

::对pe引导文件特殊处理，确保在任意分区上都能启动
:pe
call Fn.15 "%~2" "" && shift 2 && call :find %~2 fileonly exit ! call :find /WXPE/SETUPLD2.BIN fileonly exit
call Fn.11 "%filefnd%" "0" && shift && set filefnd= && goto :ferr
map --in-place ()+1 (hd0)
map --hook
goto :chain_boot

::usb设备启动后启动本地盘上的系统模块
:nt
shift
set swapback=1
call Fn.11 "%@root%" "%Boot_dev%" && call Fn.11 "%hdd_boot%" "1" && call :swap ! call :swap-ext --swap-ext
rootnoverify (hd0) || exit 1
set usrdev=h
call Fn.15 "%~2" "" && shift 2 && call :find %~2 fileonly exit ! call :find /BOOTMGR fileonly || call :find /NTLDR fileonly || goto :ferr
call Fn.11 "%filefnd%" "0" && shift && set filefnd= && goto :ferr
::dd if=()+1 of=(md)0x3E+1
goto :chain_boot

:.lst
:.0pe
call :menucheck %~1 |; call :find %~1 dironly && goto :automenu_begin ! shift && goto :ferr
call Fn.15 "%loadroot%" "" |; call Fn.11 "%language%" "en" && echo -e \n $[0004]Loading $[0106]%loadfile%$[0x07]... ! echo -e \n $[0004]正在加载 $[0106]%loadfile%$[0x07]...
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
if /i "%~nx1"=="menu.0pe" && call Fn.15 "%~2" "" && shift 2 && shift 2 && call :0pe %2 %3
configfile %loadroot%%%loadfile%
exit

:0pe
if #%1==# && exit
::terminal console
write 0x60300 0x60300
write 0x60100 %~1
if /i "%~x2"==".iso" || exit
if "%~2"=="%~nx2" && set tmp=%usrpath%%%~nx2 ! set tmp=%~pnx2
write (md)0x301+1 %tmp%
set tmp=%tmp%
set /a tmp=%@retval% > nul
write 0x60360 %tmp%
set tmp=
exit

:.ini
:.txt
:.log
:.inf
call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && goto :automenu_begin
call Fn.11 "%autotype%" "list" && call Fn.11 "%loadset%" "0" && goto :boot
pager status > nul
set pager=on && calc %@retval% > nul || set pager=off
pager on
::calc 46<<2+*0x8304 > nul
::read %@retval% > nul && call Fn.70
set skip=0x0 && cat --locate=\xEF\xBB\xBF --length=3 %loadroot%%%loadfile% > nul && set skip=0x3
cat --skip=%skip% %loadroot%%%loadfile% && echo -e \n$[0x75][End, Hit any key to quit]
pause
pager %pager%
goto :next

:ramos
shift
call :find %~1 fileonly || shift && goto :ferr
set mem=--mem
call Fn.11 "%memset%" "0" && set mem=
call Fn.11 "%topset%" "1" && set mem=--mem --top
map %mem% %loadroot%%%loadfile% (hd) || map --mem %loadroot%%%loadfile% (hd) || map %loadroot%%%loadfile% (hd)
map --rehook
map (hd-1) (hd0)
map (hd0) (hd-1)
map --rehook
if "%~2"=="" && goto :hdd_boot
shift
rootnoverify (hd0,0)
chainloader %~1 || goto :hdd_boot
goto :boot

::各种启动方式
:iso_boot
if "%tar%"=="" && set tar=(0xff)
chainloader %tar%
goto :boot
:img_boot
rootnoverify (fd0)
chainloader (0)+1
goto :boot
:hdd_boot
call Fn.11 "%dflag%" "fira" && write (0x55) [FiraDisk]\nStartOptions=%disk:~,-6%;%cdrom%\n\0 > nul
rootnoverify (hd0)
chainloader +1
goto :boot
:chain_boot
call Fn.11 "%Boot_dev%" "pd" && chainloader --force --raw (pd)%~pnx1 && goto :boot
chainloader %loadroot%%%loadfile% || chainloader --force %loadroot%%%loadfile%
goto :boot
:kernel
call Fn.11 "%kernel%" "0" && exit
cat --locate=\xEB --length=4 --number=1 %~1 > nul || kernel %~1 > nul && exit 1
exit
:boot
call Fn.15 "%loadset%" "0" && call Fn.15 "%bootset%" "0" && boot
endlocal && set loadroot=%loadroot% && set loadfile=%loadfile% && set loadpath=%loadpath%
if /i "%~1"=="--boot" && set bootset=
setlocal
goto :next

::SRS_Driver in A:, FIRA/WVBK_Driver in B:
::--fira /pe.iso                              fd0 only (fira fd0)
::--fira srs /pe.iso                          fd0 and fd1 (srs fd0, fira fd1)
::--fira iso=/win$.iso                        fd0 and fd1 (fd0 empty, fira fd1)
::--fira disk=/ramxp.img                      nofd (0x55 only)
::--fira iso=/win$.iso disk=/ramxp.img        fd0 and fd1 (fd0 empty, fira fd1)
::--fira srs iso=/win$.iso                    fd0 and fd1 (srs fd0, fira fd1)
::--fira srs iso=/win$.iso disk=/ramxp.img    fd0 and fd1 (srs fd0, fira fd1)
:fir
set dflag=fira
set loop=1
:wvb
call Fn.15 "%loop%" "1" && set dflag=wvbk
set loop=
::根据参数名获取驱动软盘镜像路径
if /i "%m:~7,7%"=="nodrive" && set dflag= && goto :load_choise
if /i "%m:~7,6%"=="isonly" && set isonly=1 && set fd1path=%m:~14% ! set fd1path=%m:~7%
if "%fd1path%"=="" && if "%dflag%"=="fira" set fd1path=FIRADISK.IMG || if "%dflag%"=="wvbk" set fd1path=WINVBLK.IMG
if /i "%m:~7%"=="none" && set fd1path=
if /i "%~2"=="disk" && shift && set noiso=1 && goto :loaddisk
set tmp=%~2
if /i "%tmp:~,3%"=="sif" && shift && if "%tmp:~4%"=="" set sifpath=%runpath%WINNT.SIF || set sifpath=%tmp:~4%
set tmp=%~2
if /i "%tmp:~,3%"=="srs" && shift && if "%tmp:~4%"=="" set srspath=%runpath%SRS/ || set srspath=%tmp:~4%
set tmp=%~2
if /i "%tmp:~,4%"=="dpms" && shift && set srsmode=2 && if "%tmp:~5%"=="" set srspath=%runpath%DRIVERPACK.INI || set srspath=%tmp:~5%
set tmp=%~2
if /i "%tmp:~,3%"=="sif" && shift && if "%tmp:~4%"=="" set sifpath=%runpath%WINNT.SIF || set sifpath=%tmp:~4%
set tmp=
if /i "%~2"=="iso" && shift ! if /i "%~1"=="%m%" && set fd0nly=1 && set fd1path= && set fd0path=%fd1path% && goto :floppyA
call Fn.11 "%srsmode%" "1" && set fd0path=%srspath% && set srspath= && goto :floppyA
::加载软盘镜像、iso镜像及后续处理
::处理SRS
call Fn.15 "%srspath%" "" || goto :srs_end
call :find %srspath% || goto :ferr
call Fn.15 "%filefnd%" "0" && set srspath=%loadroot%%%loadfile% ! call Fn.15 "%loadpath:~-1%" "/" && set srspath=%loadroot%%%loadpath%/ ! set srspath=%loadroot%%%loadpath%
set srs_err=
call :loadrunmod || set srs_err=2 && goto :srs_err
insmod (3)/F6.MOD > nul || set srs_err=2 && goto :srs_err
call Fn.15 "%srsmode%" "2" && command (3)/RUNSRS "%srspath%" ! command (3)/RUNDPMS "%srspath%"
if %srs_err%>=2 &; echo -e \n Trying another way to load disk driver... && call Fn.15 "%srsmode%" "2" && command (3)/RUNDPMS "%srspath%" ! command (3)/RUNSRS "%srspath%"
:srs_err
map --status=3 && map --unmap=3 && map --rehook
set filefnd=
set dirfnd=
call Fn.11 "%srs_err%" "0" && call Fn.11 "%language%" "en" && echo -e \n $[0x04]Loading$[0x0F] Mass Storage DriverPacks, $[0x0E]success$[0x07]...
call Fn.11 "%srs_err%" "0" && call Fn.11 "%language%" "cn" && echo -e \n $[0x04]正在加载$[0x0F] Mass Storage 磁盘驱动, $[0x0E]成功$[0x07]...
call Fn.11 "%srs_err%" "1" && call Fn.11 "%language%" "en" && echo -e \n $[0x04]Warning$[0x0F] No AHCI/RAID controller, do NOT need SRS Driver.$[0x07]\x20
call Fn.11 "%srs_err%" "1" && call Fn.11 "%language%" "cn" && echo -e \n $[0x04]友情提示$[0x0F] 没有检测到AHCI/RAID控制器，无需加载SRS驱动。$[0x07]\x20
call Fn.11 "%srs_err%" "2" && call Fn.11 "%language%" "en" && echo -e \n $[0x0C]Warning$[0x0F] Mass Storage DriverPacks load $[0x0C]failed\x20$[0x0F]!!$[0x07]\x20
call Fn.11 "%srs_err%" "2" && call Fn.11 "%language%" "cn" && echo -e \n $[0x0C]错误警告$[0x0F] Mass Storage 磁盘驱动模块加载$[0x0C]失败$[0x0F]!!$[0x07]\x20
call Fn.11 "%srs_err%" "3" && call Fn.11 "%language%" "en" &; echo -e -n \n $[0x0C]Warning$[0x0F] Mass Storage Controller drivers $[0x0E]not found && call Fn.15 "%srsmode%" "2" && echo -e $[0x0F], Hardware ID is:\n\n \t\x20\x20$[0x0E]%HWID%$[0x07]\x20 ! echo -e $[0x0F]!!$[0x07]\x20
call Fn.11 "%srs_err%" "3" && call Fn.11 "%language%" "cn" &; echo -e -n \n $[0x0C]错误警告$[0x0E] 没有找到$[0x0F]合适的Mass Storage磁盘驱动 && call Fn.15 "%srsmode%" "2" && echo -e $[0x0F], 硬件ID是: \n\n \t\x20\x20$[0x0E]%HWID%$[0x07]\x20 ! echo -e $[0x0F]!!$[0x07]\x20
:srs_end
::delmod fat > nul
delmod chkpci > nul
delmod inifile > nul
map --status=0 && goto :floppyB
call :loadrunmod || goto :floppy_empty
map --mem (3)/f6.gz (0) || goto :floppy_empty
map --status=3 && map --unmap=3
map --rehook
goto :floppyB
:floppy_empty
echo > (md)0x200+2
write --offset=0xb (md)0x200+3 \x00\x02\x01\x01\x00\x01\x70\x00\x10\x00\xfd\x01\x00\x08\x00\x01
write 0x401FE 0xAA55
write 0x40200 0xfffffe
map --mem (md)0x200+2 (fd0)
map --rehook
goto :floppyB
:floppyA
call Fn.15 "%fd0path%" "" || goto :srs_end
call :find %fd0path% fileonly || goto :ferr
map --mem %loadroot%%%loadfile% (fd0)
map --rehook
call Fn.11 "%fd0nly%" "1" && goto :next
:floppyB
call Fn.15 "%fd1path%" "" || goto :load_sif
call :find %fd1path% fileonly || goto :ferr
map --mem %loadroot%%%loadfile% (fd1)
map --rehook
call :exAB
:load_sif
::处理无人值守安装文件
set sif_err=
call Fn.15 "%sifpath%" "" || goto :load_choise
delmod -l fat > nul |; call :loadrunmod && insmod (3)/F6.MOD > nul && delmod chkpci > nul && delmod inifile > nul ! set sif_err=2 && goto :sif_err
call :find %sifpath% fileonly || set sif_err=1 && goto :sif_err
fat copy /o %loadroot%%%loadfile% (0)/WINNT.SIF > nul || set sif_err=2 && goto :sif_err
set sif_err=0 && call Fn.26 (0)/WINNT.SIF || set sif_err=2
:sif_err
map --status=3 && map --unmap=3 && map --rehook
call Fn.11 "%sif_err%" "0" && call Fn.11 "%language%" "en" && echo -e \n $[0x04]Loading$[0x0F] Unattended installation file, $[0x0E]success$[0x07]...
call Fn.11 "%sif_err%" "0" && call Fn.11 "%language%" "cn" && echo -e \n $[0x04]正在加载$[0x0F] 无人值守安装应答文件, $[0x0E]成功$[0x07]...
call Fn.11 "%sif_err%" "1" && call Fn.11 "%language%" "en" && echo -e \n $[0x0C]Warning$[0x0F] Unattended installation file $[0x0E]not found$[0x07]\x20!
call Fn.11 "%sif_err%" "1" && call Fn.11 "%language%" "cn" && echo -e \n $[0x0C]错误警告 $[0x0E]无法找到$[0x0F]指定的无人值守安装应答文件$[0x07]!
call Fn.11 "%sif_err%" "2" && call Fn.11 "%language%" "en" && echo -e \n $[0x0C]Warning$[0x0F] Unattended installation file load $[0x0C]failed\x20$[0x07]!!
call Fn.11 "%sif_err%" "2" && call Fn.11 "%language%" "cn" && echo -e \n $[0x0C]错误警告$[0x0F] 无人值守安装应答文件加载$[0x0C]失败$[0x07]!!
:load_choise
set prinstall=1
if /i "%~1"=="iso" && shift ! if /i "%~1"=="disk" && goto :loaddisk ! call Fn.15 "%forcend%" "1" && goto :next ! endlocal && set forcend=exit && exit
call :find %~1 || shift && goto :ferr
call Fn.11 "%filefnd%" "0" && call Fn.15 "%dirfnd%" "0" && shift && set autotype=list && set show=SHOW.ISO && setlocal && set drvtips=1 && goto :automenu_begin
call Fn.11 "%dflag%" "fira" && set cdrom=cdrom,vmem=find:%loadfile%; && set isofile=%loadfile%
call Fn.11 "%memset%" "1" && set mem=--mem
map %mem% %loadroot%%%loadfile% (0xff) || map --mem %loadroot%%%loadfile% (0xff)
call Fn.15 "%e820%" "" && map --e820cycles=%e820%
map --rehook
if /i "%~2"=="disk" && shift && goto :loaddisk
call Fn.11 "%isonly%" "1" && call :fira_auto && goto :iso_boot
call Fn.11 "%hdd_boot%" "1" && set swapback=1 && call :swap-ext --swap-ext
goto :cd_or_hdd

::firadisk驱动增强处理，在第二阶段可以无需进入grub环境
::若变量firamode值为2，则忽略增强处理，按一般firadisk驱动处理
:fira_auto
call Fn.11 "%firamode%" "2" && goto :driver_manu
call Fn.11 "%~n1" "64" && set is64=amd64/
cat --locate="value=Parameters" (fd1)/%is64%TXTSETUP.OEM > nul && exit
if "%dflag%"=="fira" cat --locate=###### --number=1 (fd1)/%is64%TXTSETUP.OEM > nul || goto :driver_manu
write --offset=%?% (fd1)/%is64%TXTSETUP.OEM value=Parameters,StartOptions,REG_SZ,"%disk%%%cdrom%"\r\n
cat --skip=%?% --locate=/ --replace=\\ (fd1)/%is64%TXTSETUP.OEM
exit
::普通firadisk驱动及winvblock驱动处理
:driver_manu
echo > (md)0x200+4
map --heads=2 --sectors-per-track=18 --mem (md)0x200+4 (0x55)
map --rehook
call Fn.11 "%dflag%" "fira" && write (0x55) [FiraDisk]\nStartOptions=%disk%%%cdrom%\n\0
call Fn.11 "%dflag%" "wvbk" && write (0x55) #GRUB4DOS\x00v=1\x00%diskfile:~1%\x00\x80\x00
exit

::加载hdd镜像模块
:loaddisk
shift
call :find %~1 fileonly || shift && goto :ferr
set diskfile=%loadfile%
call Fn.11 "%dflag%" "wvbk" && call :driver_manu
call Fn.11 "%memset%" "1" && set mem=--mem ! set mem=
map --heads=255 --sectors-per-track=63 %mem% %loadroot%%%loadfile% (hd)
map --rehook
map (hd-1) (hd0)
map (hd0) (hd-1)
map --rehook
call Fn.11 "%dflag%" "fira" && set disk=disk,vmem=find:%diskfile%,boot;
call Fn.15 "%noiso%" "1" && goto :cd_or_hdd
call Fn.11 "%dflag%" "fira" && set disk=%disk:~,-6%; && call :driver_manu
goto :hdd_boot

::选择从iso镜像启动还是从hdd启动
:cd_or_hdd
call Fn.11 "%dflag%" "fira" && if "%diskfile%"=="" call :fira_auto %isofile% || call :driver_manu
call Fn.11 "%language%" "en" && echo -e \n $[0x07]Hit "$[0146]Enter$[0x07]" to $[0107]boot from ISO$[0x07],
call Fn.11 "%language%" "en" && echo -e \n $[0x07]OR "$[0146]H$[0x07]" to $[0107]continue System Installation$[0x07] (will boot from harddisk).\n
call Fn.11 "%language%" "cn" && echo -e \n $[0x07]按 "$[0146]Enter$[0x07]" 键从$[0107]ISO镜像启动$[0x07],
call Fn.11 "%language%" "cn" && echo -e \n $[0x07]或者按 "$[0146]H$[0x07]" 键进行$[0107]系统安装第二阶段操作$[0x07]（将从硬盘启动）。\n
call Fn.19
call Fn.15 "%@retval%" "9064" && call Fn.15 "%@retval%" "9032" && goto :iso_boot
call Fn.15 "%diskfile%" "" && goto :hdd_boot
find --set-root --devices=h /WIN_NT$.~BT/SETUPLDR.BIN && chainloader /WIN_NT$.~BT/SETUPLDR.BIN && boot && exit
call Fn.11 "%language%" "en" && find --set-root --devices=h /NTLDR if exist /NTDETECT.COM || echo -e \x20System installation failed, hit any key to back. && pause && goto :next
call Fn.11 "%language%" "cn" && find --set-root --devices=h /NTLDR if exist /NTDETECT.COM || echo -e \x20系统安装第二阶段引导失败, 请按任意键返回。 && pause && goto :next
makeactive --status |; echo -e -n \n Press A to set %@root% active, or any other key to continue. && pause --test-key --wait=7 > nul &; if not "%@retval%"=="7777" if not "%@retval%"=="7745" && echo -e .. ! makeactive && echo -e \x20succeed ! echo -e \x20failed
chainloader /NTLDR
goto :boot

::处理fd0及fd1内存起始位置，使其“合法化”，摘自zhaohj，稍改
:exAB
setlocal
map --status=1 || exit
set /a addr1=%?% > nul
map --status=0 || exit
set /a addr0=%?% > nul
if %addr0%>=%addr1% && set fdn=0 && set tmp=firadisk ! set fdn=1 && set tmp=winvblk
find --devices=f /%tmp%.inf && exit
map (%fdn%)+1 (rd)
map (rd)+1 (%fdn%)
map --rehook
endlocal
exit


::自动菜单及自动列表模块
:autolist
set autotype=list
set loop=1
:automenu
call Fn.15 "%loop%" "1" && set autotype=menu
set loop=
shift
::检测show或not-show参数
set /u tmp=%~1
call Fn.15 "%tmp:~,6%" "--SHOW" && call Fn.15 "%tmp:~,10%" "--NOT-SHOW" && set tmp= ! set show=%tmp% && shift && set tmp=
call Fn.15 "%in_check%" "1" && setlocal
::若没有指定路径，则使用默认目录/BOOT/IMGS/
if /i "%~1"=="subdir" && goto :subdir
set tmp=%~1
call Fn.15 "%tmp%" "" && call Fn.15 "%tmp:~,2%" "--" && rootnoverify %~d1 && set path=%~pnx1 && shift ! set path=%usrpath%
set tmp=
call :find %path% dironly || goto :ferr
:automenu_begin
if "%autotype%"=="" && set autotype=menu
::对自动列表，若没有提前定义过基础参数值，在此进行定义，对自动菜单，始终进行定义
if "%autotype%"=="list" if "%listinit%"=="1" || call :init_autotype %@root%%%path%
::获取上级文件夹路径
call :up_check "%@root%%%path:~,-1%"
::先处理文件夹，再处理文件
call Fn.15 "%fastmode%" "1" && call Fn.15 "%showdir%" "0" && set type=LS\x20 && ls %path% | call :automake %0
call Fn.15 "%showfile%" "0" && set type=RUN && ls %path% | call :automake %0
call Fn.11 "%autotype%" "list" && goto :autolist_end
::自动菜单结束模块，输出最后一项返回主菜单功能菜单，加载生成的自动菜单
:automenu_end
::检测内置菜单位置
calc *0x307FFC-0x110000 > nul && set tmp=(md)4+8 ! set tmp=(md)0x880+0x200
set tmp= && call Fn.15 "%backmenu%" "" && set menu=%backmenu% ! call Fn.15 "%menu%" "" || set menu=%tmp%
call Fn.11 "%i:~1,1%" "0" && set title=%i:~-2% ! set title=%i:~-3%
call Fn.15 "%showinfo%" "0" &; call Fn.11 "%language%" "en" && set tmp=Will load %menu% ! set tmp=将加载 %menu%
call Fn.11 "%language%" "en" && echo -e \ntitle [%title%] Back to Main Menu \\n %tmp% >> (rd)+1
call Fn.11 "%language%" "cn" && echo -e \ntitle [%title%] 返回主菜单 \\n %tmp% >> (rd)+1
echo -e delmod -l %runs% \> nul \|\| echo %runs% not found!! \&\& call Fn.73 3 >> (rd)+1
echo -e command %runs% --as.lst %menu%  >> (rd)+1
::set i=
::set title=
::set type=
::两次endlocal，一次为:automenu[-all]段setlocal，另一次为:start段setlocal
endlocal && set show=%show% && set showonot=%showonot% && call Fn.11 "%prinstall%" "1" && set dflag=%dflag% && set prinstall=%prinstall% && set isonly=%isonly%
endlocal && set show=%show% && set showonot=%showonot% && set dflag=%dflag% && set prinstall=%prinstall% && set isonly=%isonly%
configfile (rd)+1
exit
::自动列表结束模块，输出一些帮助信息，保存一些需要的参数值，跳转到输入模块
:autolist_end
if "%listnote%"=="" call Fn.11 "%language%" "en" && set listnote=Input command or the [%cn%NUM%c7%] to run, eg. "$[0104]b%c7%" back to $[0003]Menu %c7%or "$[0104]c%c7%" to $[0003]Commandline%c7%.
if "%listnote%"=="" call Fn.11 "%language%" "cn" && set listnote=请输入命令或文件编号[%cn%NUM%c7%]执行（命令如: "$[0104]b%c7%"返回$[0003]菜单%c7%或输入"$[0104]c%c7%"进入$[0003]命令行%c7%）。
echo -e \n\x20%c7%%%listnote%
set page= && if %line%>=%linee% && set page=1 && if %lineb%>=%linem% && set page=2 ! if %lineb%>=%linem% && set page=3
call Fn.15 "%page%" "" &; call Fn.11 "%language%" "en" && echo -e -n \x20%c7%Note: ! echo -e -n \x20%c7%提示:
call Fn.15 "%page%" "" &; if %page%<=2 &; call Fn.11 "%language%" "en" && echo -e -n \x20Input "$[0104]+%c7%" to page $[0003]down%c7%. ! echo -e -n \x20输入"$[0104]+%c7%"可以$[0003]向下%c7%翻页。
call Fn.15 "%page%" "" &; if %page%>=2 &; call Fn.11 "%language%" "en" && echo -e -n \x20Input "$[0104]-%c7%" to page $[0003]up%c7%. ! echo -e -n \x20输入"$[0104]-%c7%"可以$[0003]向上%c7%翻页。
echo -e && call Fn.15 "%page%" "" && echo -e
endlocal && set show=%show% && set showonot=%showonot% && set autotype=%autotype% && set /a i=%i:~-3%-1 > nul && set md=%md% && set line=%line% && set linem=%linem% && set lineb=%lineb% && set linee=%linee% && set dir_deep=%dir_deep% && call Fn.11 "%prinstall%" "1" && set dflag=%dflag% && set prinstall=%prinstall% && set isonly=%isonly%
call Fn.11 "%in_check%" "1" && exit ! goto :i
exit

:subdir
shift
set dir_deep=
checkrange 1:-1 calc %~1 > nul && set dir_deep=%~1 ! set dir_deep=1
shift
set /u tmp=%~1
call Fn.15 "%tmp:~,6%" "--SHOW" && call Fn.15 "%tmp:~,10%" "--NOT-SHOW" && set tmp= ! set show=%tmp% && shift && set tmp=
set tmp=%~1
call Fn.15 "%tmp%" "" && call Fn.15 "%tmp:~,2%" "--" && rootnoverify %~d1 && set path=%~pnx1 && shift ! set path=/
set tmp=
::检测root
call :find %path% dironly || goto :ferr
set dir_root=%loadroot%%%loadpath%
call Fn.15 "%autotype%" "" || set autotype=menu
call :init_autotype %dir_deep% %dir_root%
:subdir_begin
call :subdir_start %dir_root%
call Fn.15 "%tmptitle%" "" && set tmptitle= && set /a line=%line%+1 > nul && if %line%>=%lineb% && echo -e %tmptitle%
goto :auto%autotype%_end

:subdir_all
shift
set dir_deep=
checkrange 1:-1 calc %~1 > nul && set dir_deep=%~1 ! set dir_deep=1
shift
set /u tmp=%~1
call Fn.15 "%tmp:~,6%" "--SHOW" && call Fn.15 "%tmp:~,10%" "--NOT-SHOW" && set tmp= ! set show=%tmp% && shift && set tmp=
set tmp=%~1
call Fn.15 "%tmp%" "" && call Fn.15 "%tmp:~,2%" "--" && rootnoverify %~d1 && set path=%~pnx1 && shift ! set path=
set tmp=
::检测root
call Fn.15 "%path%" "" && call :find %path% dironly || goto :ferr
call Fn.15 "%autotype%" "" || set autotype=menu
call :init_autotype %dir_deep% all\ devices %path%
:subdir_all_begin
set dir_root=
debug 1
call Fn.15 "%usrdev%" "" |; call Fn.15 "%fdd_boot%" "" && set usrdev=chpuf ! set usrdev=chpu
find --devices=%usrdev% > (md)0x300+1
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
cat --locate=\x0A --replace=\x20 (md)0x300+1
cat (md)0x300+1 | set dir_root=
call Fn.15 "%path%" "" && set tmp= && call :subdir_all_path %dir_root%
call Fn.11 "%autotype%" "menu" && call Fn.15 "%showpath%" "" || set showpath=1
goto :subdir_begin

:subdir_all_path
call Fn.15 "%~1" "" || set dir_root=%tmp% && set tmp= && exit
root %~1 || shift && goto :subdir_all_path
ls %path% > nul && set tmp=%tmp% %@root%%%path%
shift
goto :subdir_all_path

:subdir_start
if "%~1"=="" && exit
call Fn.11 "%autotype%" "menu" && call Fn.11 "%i:~-3%" "254" && exit
call Fn.11 "%autotype%" "list" && if %line%>=%linee% && exit
call :joke %~1
setlocal
rootnoverify %~d1
set path=%~pnx1
call :path_check
if exist %@root%%%path%MENU_CONFIG.TXT && set contxt=1 && cat %@root%%%path%MENU_CONFIG.TXT > (md)0x210+10 || echo > (md)0x210+10
set type=RUN
ls %path% > nul && ls %path% | call :automake %~0
set /a dir_deep=%dir_deep%-1 > nul
if %dir_deep%>=1 && ls %path% | call :subdir_dir %~0
endlocal && set i=%i% && set tmpmd=%tmpmd% && set tmptitle=%tmptitle% && set line=%line% && set tmpitem=%tmpitem%
shift
goto :subdir_start

:subdir_dir
shift
if "%~1"=="" && exit
cat --length=0 %path%%%~1 > nul && goto :subdir_dir
call Fn.61 %@root%%%path%%%~1/ > nul || goto :subdir_dir
setlocal
call :subdir_start %@root%%%path%%%~1/
endlocal && set i=%i% && set tmpmd=%tmpmd% && set tmptitle=%tmptitle% && set line=%line% && set tmpitem=%tmpitem%
goto :subdir_dir

::定义自动菜单的一些基础参数值
::call :init_autotype %@root%%%path%
::call :init_autotype all devices
::call :init_autotype all devices %path%
::call :init_autotype %dir_deep% %dir_root%
::call :init_autotype %dir_deep% all\ devices
::call :init_autotype %dir_deep% all\ devices %path%
:init_autotype
::获取显示相关的一些参数值
debug 1
terminal | call :Resolution 
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
set i=1001
call Fn.15 "%fastmode%" "1" && if exist %@root%%%path%MENU_CONFIG.TXT && set contxt=1 && cat %@root%%%path%MENU_CONFIG.TXT > (md)0x210+10 || echo > (md)0x210+10
call Fn.11 "%autotype%" "list" && goto :init_autolist
::检测是否加载了背景图
calc 46<<2+*0x8304 > nul
call Fn.15 "%font%" "" || call Fn.15 "%image%" "" || read %@retval% > nul || set image=color white/blue blue/yellow light-red/blue 10
::定义rd设备的起始地址及长度，64MB开始的128KB长度区域，(md)0x20000+0x100
map --rd-base=0x4000000
map --rd-size=0x20000
::将标题居中显示
set tmp=
call Fn.15 "%dir_deep%" "%~1" &; call Fn.15 "%~1" "all" && set tmp=%~1 ! call Fn.15 "%language%" "en" && set tmp=所有可用设备 ! set tmp=all devices
call Fn.15 "%tmp%" "" &; call Fn.15 "%~3" "" &; call Fn.15 "%language%" "en" && set tmp=%tmp%下 %~3 中文件 ! set tmp=files under %~3 in %tmp%
call Fn.15 "%tmp%" "" |; call Fn.15 "%~2" "all\ devices" && set tmp=%~2\x20 ! call Fn.15 "%language%" "en" && set tmp=所有可用设备 ! set tmp=all devices
call Fn.15 "%dir_deep%" "%~1" |; call Fn.15 "%~3" "" &; call Fn.15 "%language%" "en" && set tmp=%tmp%下 %~3\x20 ! set tmp=%~3 in %tmp%
call Fn.15 "%dir_deep%" "%~1" |; call Fn.15 "%language%" "cn" && set tmp=files under %dir_deep%-level directory of %tmp% ! set tmp=%tmp%中 %dir_deep% 级目录下文件
call Fn.15 "%language%" "cn" && set tmp=Automenu for %tmp% ! set tmp=自动菜单，当前: %tmp%
::标题两边对齐
call :str_length
calc %reso% + 20 > nul
if %n%<=%@retval% && calc %@retval% + %n% &; calc %@retval% / 2 > nul &; call :fr_check %@retval%
echo > (rd)+1
call Fn.11 "%grub4ver%" "0" && set initmenu=!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0
call Fn.15 "%initmenu%" "" && call Fn.0 0x4000000 "%initmenu%" && set initmenu=\nexit\n\ninitscript (rd)+1
echo -e %initmenu%\ndebug off\ndefault 1\n%image%\n%font%\ntitle %tmp% \\n \n%runs% --automenu-all >> (rd)+1
exit

::定义自动列表的一些基础参数值
:init_autolist
call Fn.11 "%showback%" "1" &; calc 46<<2+*0x8304 > nul &; read %@retval% > nul && call Fn.70 3
call Fn.15 "%drvtips%" "1" && call Fn.6 ! set drvtips=
call Fn.15 "%listinit%" "1" && set md=0x20800
set /A tmpmd=%md% + 1 > nul
set /a tmpitem=%item% - 1 > nul
set line=1
call Fn.15 "%listinit%" "1" && set lineb=1 && set linee=%linem%
set c4=$[0104]
set c6=$[0106]
set c2=$[0102]
set c7=$[0107]
set cn=$[0x06] && call Fn.15 "%num_c%" "" && set cn=%num_c%
set cf2=$[0x09] && call Fn.15 "%dir_c%" "" && set cf2=%dir_c%
set cf=$[0x02] && call Fn.15 "%file_c%" "" && set cf=%file_c%
set tmp=
call Fn.15 "%dir_deep%" "%~1" &; call Fn.15 "%~1" "all" && set tmp=%c6%%%~d1%c2%%%~pnx1%%c7% ! call Fn.15 "%language%" "en" && set tmp=%c6%所有可用设备%c7% ! set tmp=%c6%all devices%c7%
call Fn.15 "%tmp%" "" &; call Fn.15 "%~3" "" &; call Fn.15 "%language%" "en" && set tmp=%tmp%下 %~3 中文件 ! set tmp=files under %~3 in %tmp%
call Fn.15 "%tmp%" "" |; call Fn.15 "%~2" "all\ devices" && set tmp=%c6%%%~2%c7%\x20 ! call Fn.15 "%language%" "en" && set tmp=%c6%所有可用设备%c7% ! set tmp=%c6%all devices%c7%
call Fn.15 "%dir_deep%" "%~1" |; call Fn.15 "%~3" "" &; call Fn.15 "%language%" "en" && set tmp=%tmp%下 %~3\x20 ! set tmp=%c6%%%~3 %c7%in %tmp%
call Fn.15 "%dir_deep%" "%~1" || if "%language%"=="en" set tmp=files under %c2%%%dir_deep%-level %c7%directory of %tmp% || set tmp=%tmp%中 %c2%%%dir_deep% %c7%级目录下文件
call Fn.11 "%language%" "en" && set tmp=Autolist %c7%for %tmp%\n ! set tmp=自动列表%c7%, 当前: %tmp%\n
echo -e \n\x20%c4%%%tmp%
call Fn.15 "%listinit%" "1" &; echo %* > (md)%md%+1
exit

::所有可识别设备的自动菜单及自动列表模块
:autolist-all
set autotype=list
set loop=1
:automenu-all
call Fn.15 "%loop%" "1" && set autotype=menu
set loop=
shift
::检测是否为show或not-show参数
set /u tmp=%~1
call Fn.15 "%tmp:~,6%" "--SHOW" && call Fn.15 "%tmp:~,10%" "--NOT-SHOW" && set tmp= ! set show=%tmp% && shift
call Fn.15 "%in_check%" "1" && setlocal
::检索文件相关
if /i "%~1"=="subdir" && goto :subdir_all
set tmp=%~1
call Fn.15 "%tmp%" "" && call Fn.15 "%tmp:~,2%" "--" && rootnoverify %~d1 && set path=%~pnx1 && shift ! set path=
set tmp=
call Fn.15 "%path%" "" && call :find %path% dironly || goto :ferr
::定义一些基础参数值
if "%autotype%"=="list" if "%listinit%"=="1" || call :init_autotype all devices %path%
call Fn.15 "%path%" "" && goto :automake_all
::逐项处理识别到的设备
debug 1
call Fn.15 "%usrdev%" "" |; call Fn.15 "%fdd_boot%" "" && set usrdev=chpuf ! set usrdev=chpu
setlocal
find --devices=%usrdev% | call :devices_menu 
endlocal && set i=%i% && set tmpmd=%tmpmd% && set line=%line%
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
goto :auto%autotype%_end
:devices_menu
::处理该设备的详细信息
call Fn.11 "%autotype%" "list" && if %line%>=%linee% && exit
if "%1"=="" && exit
call :part_info %~1
call :joke %~1
::处理得到的结果，并分类进行输出
call Fn.11 "%language%" "en" && set tmp=Automenu for %~d1/ ! set tmp=将自动生成 %~d1/ 菜单
call Fn.11 "%showinfo%" "0" && set tmp=
call Fn.11 "%autotype%" "menu" && echo -e \ntitle [%i:~-2%] %partinfo%\\n %tmp% >> (rd)+1
call Fn.11 "%autotype%" "menu" && echo -e delmod -l %runs% \> nul \|\| echo %runs% not found!! \&\& call Fn.73 3 >> (rd)+1
call Fn.11 "%autotype%" "menu" && echo -e command %runs% --automenu %~d1 >> (rd)+1
call Fn.11 "%autotype%" "list" && echo -e --autolist %~d1 > (md)%tmpmd%+1 && if %line%>=%lineb% && echo -e \t%c7%[%cn%%%i:~-2%%%c7%] %cf%%%partinfo%%%c7%\x20
set partinfo=
set /a i=%i%+1 > nul
call Fn.15 "%tmpmd%" "" && set /A tmpmd=%tmpmd% + 1 > nul
set /a line=%line%+1 > nul
shift
goto :devices_menu

::自动菜单及自动列表处理模块
:automake
shift
::条件判断部分
::自动菜单最多显示255项title，超出的忽略
call Fn.11 "%autotype%" "menu" && call Fn.11 "%i:~-3%" "254" && exit
::自动列表显示行超出最大行后退出
call Fn.11 "%autotype%" "list" && if %line%>=%linee% && exit
::全部文件处理完成后，对自动列表检测是否还有未输出的显示
call Fn.15 "%~1" "" || goto :automake_end
::先处理文件夹，然后处理文件
call Fn.15 "%fastmode%" "1" &; cat --length=0 %path%%%~1 > nul && if "%type%"=="LS\x20" goto :automake ! if "%type%"=="RUN" goto :automake
::menu_config.txt文件、firadisk.img文件、winvblk.img文件、同名_config.txt文件固定忽略处理
if /i not "%~1"=="menu_config.txt" if /i not "%~1"=="firadisk.img" if /i not "%~1"=="winvblk.img" if /i not "%~1"=="%~n0_config.txt" || goto :automake
set tmp=%~n1
::非8.3命名的文件、以$开头的文件忽略处理
call Fn.15 "%tmp:~,1%" "$" && call Fn.15 "%tmp:~-2,1%" "~" && set tmp= ! set tmp= && goto :automake
::根据show或not-show参数检测是否显示本文件
call Fn.11 "%type%" "RUN" && call Fn.15 "%show%" "" && call :show_detect %show% %~x1 || goto :automake
::判断前缀
set tmp=
call Fn.15 "%filepre%" "" &; set /u tmp=%~n1 && set /u filepre=%filepre% &; set tmp= && call Fn.11 "%tmp%" "%filepre%" || goto :automake
call :joke %~1
setlocal
::检测指定的文件路径是否含有空格
call Fn.15 "%fastmode%" "1" && call Fn.11 "%type%" "LS\x20" && call Fn.61 %path%%%~1/ > nul && call :blank_check file %path%%%~1/ ! call :blank_check file %path%%%~1
call Fn.11 "%i:~1,1%" "0" && set title=%i:~-2% ! set title=%i:~-3%
call Fn.11 "%autotype%" "menu" && set title=title [%title%]
::显示名，前置参数，后置参数处理
call Fn.15 "%fastmode%" "1" && call Fn.11 "%type%" "RUN" && if exist %path%%%~n1_CONFIG.TXT > nul && call :read_txt %path%%%~n1_CONFIG.TXT
call Fn.15 "%fastmode%" "1" && call Fn.11 "%type%" "RUN" && call Fn.11 "%contxt%" "1" && call :menu_config %~1
call Fn.15 "%_title%" "" && set blankn=4 ! call Fn.11 "%autotype%" "menu" && set title=%title%\x20%type%
call Fn.15 "%_title%" "" |; call Fn.11 "%showpath%" "1" && set _title=%@root%%%path%%%~1 ! set _title=%~1
call Fn.11 "%file:~-1%" "/" && set _title=%_title%/
call Fn.15 "%_front%" "" && set _front=\x20%_front%\x20 ! call Fn.15 "%front%" "" && set _front=\x20%front%\x20 ! set _front=\x20
call Fn.15 "%_next%" "" && set _next=\x20%_next% ! call Fn.15 "%next%" && set _next=\x20%next%
::自动菜单输出结果模块
call Fn.11 "%autotype%" "list" && goto :makelist
::对文件，计算文件名显示长度及文件体积
call Fn.15 "%fastmode%" "1" && call Fn.15 "%showsize%" "0" && call Fn.11 "%type%" "RUN" && call :name_fix %_title%
call Fn.15 "%showinfo%" "0" || set _title=%_title%\\n ! set _title=%_title%\\n %@root%%%file%
echo -e \n%title% %_title% >> (rd)+1
echo -e delmod -l %runs% \> nul \|\| echo %runs% not found!! \&\& call Fn.73 3 >> (rd)+1
echo -e command %runs%%%_front%%%@root%%%file%%%_next% >> (rd)+1
endlocal && set /a i=%i%+1 > nul
goto :automake

:joke
::显示当前处理的文件或设备名
call Fn.15 "%autotype%" "menu" && exit
call Fn.15 "%joke%" "" &; call Fn.5 %joke% && echo -e %~1\t\t\t\t\t\t\t\t && exit ! exit
echo -e -n \x20\x1a
call Fn.4
set /A joke=%@retval% > nul
set joke=0x%joke:~-2% %joke:~,-2%
goto :joke

::自动列表输出结果模块
:makelist
echo -e -n %_front%%%@root%%%file%%%_next% > (md)%tmpmd%+1
::计算显示的文件名长度，以便对齐
set tmp=[%title%] %_title%
call :str_length
set tmp=%_title%
::tmpitem值为判断是否换行输出的标志
if %n%>=24 && call :list_name_fix ! call Fn.15 "%tmpitem%" "0" && call :de_check 19
::区别文件夹及文件显示的颜色
call Fn.11 "%type%" "LS\x20" && set title=%c7%[%cn%%%title%%%c7%] %cf2%%%tmp% ! set title=%c7%[%cn%%%title%%%c7%] %cf%%%tmp%
if "%tmptitle%"=="" && set title=\t%title%
call Fn.11 "%tmpitem%" "0" || set tmptitle=%tmptitle%%%title% ! set tmpitem=%item% && set tmptitle= && set /a line=%line%+1 > nul && if %line%>=%lineb% && echo -e %tmptitle%%%title%
endlocal && set /a i=%i%+1 > nul && set /A tmpmd=%tmpmd%+1 > nul && set tmptitle=%tmptitle% && set line=%line% && set /a tmpitem=%tmpitem%-1 > nul
goto :automake

:automake_end
call Fn.15 "%autotype%" "list" && exit
call Fn.15 "%type%" "RUN" && exit
call Fn.15 "%dir_deep%" "" && exit
call Fn.15 "%tmptitle%" "" && set tmptitle= && set /a line=%line%+1 > nul && if %line%>=%lineb% && echo -e %tmptitle%
set joke=
exit

:automake_all
call Fn.11 "%autotype%" "menu" && call Fn.15 "%showpath%" "" || set showpath=1
debug 1
call Fn.15 "%usrdev%" "" |; call Fn.15 "%fdd_boot%" "" && set usrdev=chpuf ! set usrdev=chpu
call Fn.15 "%fastmode%" "1" && call Fn.15 "%showdir%" "0" && set type=LS\x20 && find --devices=%usrdev% | call :automake_all_getfile %0 && rootnoverify %@root%
call Fn.15 "%showfile%" "0" && set type=RUN && find --devices=%usrdev% | call :automake_all_getfile %0 && rootnoverify %@root%
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
goto :auto%autotype%_end

:automake_all_getfile
shift
call Fn.15 "%~1" "" || exit
rootnoverify %~1 || exit
ls %path% | call :automake %0 || goto :automake_all_getfile
goto :automake_all_getfile

::获取显示相关的一些参数值模块
:Resolution
if "%~3"=="" && set reso=57 ! set /a reso=%~3-23 > nul
::获取 box_w 原值,宽度
calc 29<<2+*0x8304 > nul
calc *%@retval%+4 > nul
read %@retval% | echo -n | echo -n | echo -n | set old=
::值为0或空的话，是默认最大宽度，某些情况下直接使用会超出显示范围
call Fn.15 "%old:~2,-6%" "" && call Fn.15 "%old:~2,-6%" "00" && if 0x%old:~2,-6%>=24 set /a box_w=0x%old:~2,-6% - 23 > nul
call Fn.15 "%box_w%" "" && if %box_w%<=%reso% && set reso=%box_w%
set old= && call Fn.11 "%autotype%" "menu" && exit
if "%~5"=="" && set linem=30 ! set /a linem=%~5 > nul
::获取 box_h 原值，行数
calc 29<<2+*0x8304 > nul
calc *%@retval%+8 > nul
read %@retval% | echo -n | echo -n | echo -n | set old=
call Fn.15 "%old:~2,-2%" "" && call Fn.15 "%old:~2,-2%" "00" && if 0x%old:~2,-2%<=%linem% set /a linem=0x%old:~2,-2% > nul
set old= && if %linem%<=8 && set linem=1 ! set /a linem=%linem% - 10 > nul
::每行最大显示数
set /a item=%reso% + 15 > nul
if %item%<=32 && set item=1 ! set /a item=%item% / 24 > nul
exit

::获取上级文件夹路径模块，调用方式 call :up_check %当前路径% ;处理结束后up值为上级目录
:up_check
set up=%~dp1
call Fn.15 "%up%" "%~1/" || set up=--auto%autotype%-all
::处理up及其值空格问题，方便后期处理
call Fn.15 "%up%" "--auto%autotype%-all" && call :blank_check up %up%
::自动列表的话直接输出结果，自动菜单的话写入到rd设备
call Fn.11 "%autotype%" "menu" && goto :up_check_menu
call Fn.15 "%language%" "cn" && set tmp=..\t\t ! set tmp=返回上级目录
set tmptitle=\t%c7%[%cn%%%i:~-2%%%c7%] %cf2%%%tmp%\t
set tmp=
echo -e %up% > (md)%tmpmd%+1
set /a i=%i%+1 > nul
set /A tmpmd=%tmpmd% + 1 > nul
set /a tmpitem=%tmpitem% - 1 > nul
exit
:up_check_menu
call Fn.15 "%up%" "--auto%autotype%-all" && set tmp=%up% ! call Fn.15 "%language%" "cn" && set tmp=all devices ! set tmp=所有可用设备
call Fn.11 "%showinfo%" "0" && set tmp= ! call Fn.11 "%language%" "en" && set tmp=Back to automenu for %tmp% ! set tmp=将自动生成 %tmp% 菜单
call Fn.15 "%language%" "cn" && set tmp=.. \\n %tmp% ! set tmp=返回上级目录 \\n %tmp%
echo -e \ntitle [%i:~-2%] %tmp% >> (rd)+1
set tmp=
echo -e delmod -l %runs% \> nul \|\| echo %runs% not found!! \&\& call Fn.73 3 >> (rd)+1
echo -e command %runs% %up% >> (rd)+1
set /a i=%i%+1 > nul
exit

::--swap-ext，--automenu-all，--autolist-all参数用，获取分区详细信息模块
:part_info
if "%~1"=="" && exit
set tmp=
::如为hdd分区，则计算分区体积
call Fn.11 "%~1" "hd" && call :part_size %~1
::后对齐用，hdd分区加体积最大长度为15
set tmp=%~1\x20%tmp%
call :de_check 16
set partsize=%tmp%
set tmp=
set n=
debug 1
::获取分区文件类型及磁盘类型
uuid %~1 | echo -n | echo -n | echo -n | call :file_info 
set fsysinfo=%tmp%
set tmp=
set n=
::获取分区激活信息
call Fn.15 "%language%" "cn" && call Fn.15 "%tmp:~-19,15%" "Unknown\x20type" && makeactive --status %~1 | call :active_info 
call Fn.15 "%language%" "en" && call Fn.15 "%tmp:~-15,12%" "未知类型" && makeactive --status %~1 | call :active_info 
::swap-ext参数的话需直接输出结果，autolist-all参数不用
set partinfo=%partsize%\x20%fsysinfo%\x20%tmp%
set tmp=
set partsize=
set fsysinfo=
call Fn.11 "%helpinfo%" "1" && echo -e %partinfo%
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
shift
goto :part_info

::计算指定的分区的体积，并进行前对齐模块，调用方式 call :part_size 分区号
:part_size
geometry %~1 | call :sector_size 
::0x82b0值为该分区的扇区数量
rootnoverify %~1 && call :get_size *0x82b0*%sectors% && rootnoverify %@root%
set sectors=
set sectorc=
call :fr_check 7
exit

::获取hdd每扇区大小及扇区数量
:sector_size
echo -e %~7 > (md)0x300+1
cat --locate=\x2F --replace=\x20 (md)0x300+1
cat --length=%?% (md)0x300+1 | set sectorc=
cat --skip=%?% (md)0x300+1 | set sectors=
exit

::获取指定的分区的文件类型及磁盘类型，并进行对齐
:file_info
call Fn.15 "%language%" "cn" && set tmp=Filesystem is ! set tmp=文件系统类型是
call Fn.15 "%~5" "is" &; call Fn.15 "%language%" "cn" && set tmp=%tmp%\x20Unknown\x20type\x2E && exit ! set tmp=%tmp%\x20未知类型。 && exit
set tmp=%tmp%\x20%~6 %~9\x2E
call Fn.15 "%language%" "cn" && call :de_check 31 ! call :de_check 32
exit

::获取指定分区是否活动
:active_info
call Fn.11 "%~4" "active" || call Fn.11 "%~5" "active" || exit
call Fn.15 "%language%" "cn" && set tmp=%~4 %~5 && exit
call Fn.11 "%~4" "not" && set tmp=非
set tmp=%tmp%活动。
exit

::后对齐模块，使用空格补齐tmp值至指定长度，调用方式 call :de_check 目标长度 ;处理结束后tmp值为原tmp值加补齐用空格
::在变量a后面添加3个空格,要N个空格就Ns
::call Fn.0 0 "%t%%3s" | set t=
:de_check
call Fn.12 "%tmp%" || exit
call :str_length
if %n%>=%~1 && exit
calc %n% - %~1 > nul
call Fn.0 0 "%tmp%%%%%@retval%s" | set tmp=
exit

::前对齐模块，使用空格补齐tmp值至指定长度，调用方式 call :fr_check 目标长度 ;处理结束后tmp值为原tmp值加补齐用空格
::变量a值长度为3 想左对齐左边加2个空格的话 最后变量a总长度应该是5
::call Fn.0 0 "%5s" "%t%"
:fr_check
call Fn.12 "%tmp%" || exit
call :str_length
if %n%>=%~1 && exit
::中文字符串补齐
if "%utf8n%"=="" && set utf8n=0
calc %~1 - 1 + %utf8n% > nul
call Fn.0 0 "%%%@retval%s" "%tmp%" | set tmp=\x20
exit

::文件后缀名和指定的后缀名判断模块，调用方式 call :show_detect 文件后缀名 后缀名列表 ;处理结束后正常退出为显示 强制退出为不显示
:show_detect
call Fn.15 "%show:~2,3%" "NOT" && set tmp=&& ! set tmp=||
call Fn.15 "%~2" "" |; set tmp= && call Fn.15 "%~x1" "." %tmp% exit 1 ! exit
set /u tmp="%~2" %tmp%
set tmp= && call Fn.11 "%~1" %tmp% exit ! exit 1
exit

::同名_config.txt文本文件导入参数模块，调用方式 call :read_txt 同名_config.txt文件路径
:read_txt
::简单的判断，空文件直接退出
if "%~z1"=="0x0" && exit ! set txtfile=%~1 && set tsize=%~z1
::\xD\xA为Windows中回车换行符，作为判断含有几行参数的标准之一
cat --locatei=\xD\xA --number=3 %txtfile% | set enter=
::enter值不为空的话，截取enter值的前两个字符为第一个回车的位置，重新给enter赋值，进行下面的处理，以下雷同
call Fn.15 "%enter%" "" && set enter=%enter:~2% && set enter1=0x%enter:~,2%
call Fn.15 "%enter%" "" && set enter=%enter:~2% && set enter2=0x%enter:~,2%
call Fn.15 "%enter%" "" && set enter=%enter:~2% && set enter3=0x%enter:~,2%
::如果enter1值为空的话，说明文件只有一行，文件长度即为第一参数的长度
if "%enter1%"=="" && set /A length=%tsize% > nul ! set /A length=%enter1% > nul
::截取指定的长度，作为第一参数值，赋给指定的变量
set length= && call Fn.15 "%length%" "" && cat --length=%length% %txtfile% | set _title=
::enter1值不为空的话，说明至少两行参数，如果enter2值为空的话，说明只有两行参数，文件体积减去第一参数长度即为第二参数长度，以下雷同
call Fn.15 "%enter1%" "" && if "%enter2%"=="" set /A length=%tsize%-%enter1% > nul || set /A length=%enter2%-%enter1% > nul
call Fn.15 "%enter1%" "" && set length= && call Fn.15 "%length%" "" && cat --skip=%enter1% --length=%length% %txtfile% | set _front=
call Fn.15 "%enter2%" "" && if "%enter3%"=="" set /A length=%tsize%-%enter2% > nul || set /A length=%enter3%-%enter2% > nul
call Fn.15 "%enter2%" "" && set length= && call Fn.15 "%length%" "" && cat --skip=%enter2% --length=%length% %txtfile% | set _next=
exit

::menu_config.txt文本文件导入参数模块，调用方式 call :menu_config 文件名
:menu_config
::loop值为递归判断用 因cat的locate参数不能超过16位，在此判断进行截断
call Fn.15 "%tar_beg%" "" || setlocal && set tar_beg=0x0 && cat --locate=\xEF\xBB\xBF --length=3 (md)0x210+10 > nul && set tar_beg=0x3
call Fn.15 "%target%" "" || set /u target=%~1 &; if %@retval%>=16 set tar=%target:~,16% || set tar=%target%
::查找是否含有指定的文件名
cat --skip=%tar_beg% --locatei=%tar% --number=1 (md)0x210+10 > nul || exit
::%?%值为cat --locate的返回值，@为约定的参数结束符，以此来确定文件名的起始位置
calc %?% > nul && cat --locatei="@" --length=%?% (md)0x210+10 > nul &; set /A tar_beg=%?%+0x3 > nul
::查找第一个#，确定文件名的结束位置
cat --skip=%tar_beg% --locatei="#" --number=1 (md)0x210+10 > nul || exit
set tar_end=%?% && calc %?%-%tar_beg% > nul
::获取文件名
cat --skip=%tar_beg% --length=%@retval% (md)0x210+10 | set /u tmp=
::将找到的文件名和目标文件名对比，相同的话就准备获取参数，不同的话继续对比
call Fn.15 "%tmp%" "%target%" && set tar_beg=%tar_end% && goto :menu_config
set skip=%tar_end%
::获取整行参数的长度
cat --skip=%skip% --locatei="@" --number=1 (md)0x210+10 > nul || exit
call :menu_config_get %?% _title _front _next
endlocal && set _title=%_title% && set _front=%_front% && set _next=%_next%
exit
:menu_config_get
cat --skip=%skip% --locatei="#" --number=1 --length=%~1 (md)0x210+10 > nul || exit
set /A skip=%?%+0x1 > nul
if %skip%>=%~1 && exit
cat --skip=%skip% --locatei="#" --number=1 --length=%~1 (md)0x210+10 > nul || exit
calc %?%-%skip% > nul &; cat --skip=%skip% --length=%@retval% (md)0x210+10 | set %~2=
shift 2
call Fn.15 "%~2" "" && goto :menu_config_get
exit

::处理传递过来的参数中含有空格问题，调用方式 call :blank_check 变量名 变量值 ;处理结束后将新的变量值赋给指定的变量名
:blank_check
::将空格使用\\\x20替换，以保证两次echo -e输出后达到指定效果
call Fn.11 "%loop%" "1" &; call Fn.15 "%~2" "" || exit ! call Fn.15 "%tmp%" "" && set tmp=%tmp%\\\x20%~2 ! set tmp=%~2
call Fn.11 "%loop%" "1" && shift 2 && goto :blank_check
set tmp=
set loop=1
echo -e %* | call :blank_check 
set %~1=%tmp%
set loop=
set tmp=
exit

::自动菜单用，计算文件体积，并进行文件名对齐，调用方式 call :name_fix 显示名
:name_fix
::先计算文件体积，然后对体积进行对齐
call :get_size *0x8290
call :fr_check 7
set size=%tmp%
::获取显示名，需去掉 %* 在末尾自动添加的一个空格
set tmp=%*
set tmp=%tmp:~,-1%
call :str_length
::处理启用自动编号的情况，避免文件体积超出显示范围
calc *0x8274&0xff > nul && set /a reso=%reso% - 2 > nul
::处理存在 name_config.txt 或 menu_config.txt 导入过参数的情况
call Fn.15 "%blankn%" "" && set /a reso=%reso% + %blankn% > nul
::显示名未超过显示长度的情况
if %n%<=%reso% && set /a length=%n% + %utf8n% > nul && goto :name_end
::显示名超过长度，但无中文字符的情况
call Fn.15 "%utf8n%" "0" || set length=%reso% && goto :name_end
set loop=
set length=
set tmp=%reso%
:name_utf8
::先检测最后一位是否是中文字符标志，再检测倒数第二位是否是中文字符标志
if "%loop%"=="" && set loop=1
calc %tmp% - %loop% > nul
cat --hex --skip=%@retval% --length=1 (md)0x200+1 > (md)0x201+4
cat --skip=9 --locate=\x20E (md)0x201+4 > nul || if "%loop%"=="2" set loop= || set loop=2 && goto :name_utf8
::若为中文字符标志，则调整获取值的长度
set loop= && if "%loop%"=="1" && set /a tmp=%tmp% - 1 > nul ! if "%loop%"=="2" && set /a tmp=%tmp% + 1 > nul
if "%length%"=="%tmp%" && goto :name_end
if "%length%"=="" && set length=%tmp%
cat --hex --length=%tmp% (md)0x200+1 > (md)0x201+4
cat --skip=9 --locate=\x20E (md)0x201+4 > nul
set /a n=%tmp% - %@retval% > nul
::若显示长度没有超过最大宽度，则继续尝试
if %n%<=%reso% && set /a tmp=%tmp% + %reso% - %n% > nul && set length=%tmp% && goto :name_utf8
:name_end
cat --length=%length% (md)0x200+1 | set tmp=
call :de_check %reso%
set _title=%tmp%\x20%size%
exit

::already exit tmp
:str_length
set n=
set utf8n=
call Fn.12 "%tmp%" || exit
set n=%@retval% && set utf8n=0
echo -e -n %tmp% > (md)0x200+1
cat --hex (md)0x200+1 > (md)0x201+4
cat --skip=9 --locate=\x20E (md)0x201+4 > nul || exit
set /a n=%n% - %@retval% > nul && set utf8n=%@retval%
exit

::计算体积用，调用方式： call :get_size 体积获取方式（如%~z1或*0x82b0*512） ; 处理结束后tmp值为体积，n值为长度
:get_size
set tmp=
::因某些情况下返回值只能获取32位结果，故特别处理
debug 1
calc %~1 > (md)0x300+1
if "%debug%"=="" set debug=off ;; debug %debug% ;; if /i "%debug%"=="off" set debug=
cat --skip=1 --locate=\x20 --replace=\x00 --number=1 (md)0x300+1
cat (md)0x300+1 | set tmp=
::计算体积级别
set tmp=%tmp%  B && calc %tmp%>>10 || exit
set tmp=%@retval% KB && calc %@retval%>>10 || exit
set tmp=%@retval% MB && calc %@retval%>>10 || exit
set tmp=%@retval% GB && calc %@retval%>>10 || exit
set tmp=%@retval% TB
exit

::自动列表超长文件名对齐模块
:list_name_fix
call Fn.15 "%detn%" "" && set /a detn=%detn%+24 > nul ! set detn=43
if %tmpitem%>=1 && set /a tmpitem=%tmpitem% - 1 > nul
if %n%>=%detn% && goto :list_name_fix
call Fn.15 "%tmpitem%" "0" && call :de_check %detn%
exit
 CmQ RUN.IMG qgfڙciO\q슛lKkL"D(#"l-ȆumAk-
.%J BO˓<dUP@Cv@S:|
Ձ?Z[ׇ=Cs!u&5wŃ@Vh0iraSyw*ZQkd[y#ݸa+_rqd+	1gc:R2}KUM*3E?NH)cx_3? ڥyօCm<uQ	-Z|~+}B{BQiJsd',\ɯ<H6vhDAs<%S"zKʖe/0 urDDu#ȅ791߀	ё"3lh
5%g"^%Wӳ&>&ʵIΘW4(/(/3c{ݤH;H8l	ӦϚ@O9u&%YF Vx
:F(@ՐZ2UGiTjt-D[Jtnҭ4u*\´J$3]TЙ`S/G2MU@M0!`Ηd<J3c
vN؉2;Yej4͖9*7W: ,e`Y,YȖ"բhe%XWZNnTfͺEn6b.vH]mj۫"?&'dʟ:X_%jKu
p";/;xΧ\pdkՙԜo=>'ɕ]_SY@!B!WB!BĎJߑr6
CQcOIUpe@ \ `$ ٬b?t~.!F ZV*ɨ|`?_ T5嶷1<ރ}yEђe]o38B!B!BdsQ( ǶmNvlgb۶۶mm۶QMW]ս`],OQD/ de@dI$ndi7{{
DelST<l(Q͚Oe1#x$2[!mv˻E p6
MUQ4
+##8J{o{x?ѵR>v|o?_v_{_{ݵRBGH's oipNBDosȡ	MK5q#1REM7 ;VHi~D7df^]"|!HB`MR)p9^:9K\9EV`m!.o
)}#j)ghH
XL?渱Ș^7¥?~`X3~bMC_+bO\1jiKu ؟H4@󗒛fԆY9)<R
9Ie3NHe3k3,3͔.fXF$8m*f[R60Rփ1U-p9*f9_ۛ ܑ4^0\'5#+1=r4GAg6
'k2JIC!uMʇK
_Zy,uLf%+6-RP:JZ%Lˈ#P
Bf|'KXkN	44JBPaM&
nKs5sAМkK:nX`%|.Ī@6V _P-*b6Ée^+
r754qs-z`f>v#wTq2Μmv@MG*NByMI'.,'Nӛ\K˃]$itQ#XY@ʘbB?C!GCGZh
)۰HYWg"Wb4EM.үW9oxM-VixZ_41%|+kX($`/PQ*~e+dxCEѰ1ߠn7lULu^H;FdҴGXUTeFZ (P}w;͕?tdl	Al9?,|Қ!.YzD_/j<Iga	'
	V)<F	PT8o$&3᜞}'EkdNo s:^؍r/=9D->wƪ?lңwbp_BS|/Mû!U^ǿ'9ǰbwN,w'zL[^%\	47c[HEƋ@VF:br_ɄՑk>wMlN$"han>O[P
q
#XؘձZSM(tYطVVpi6/Z̍
c
(Tߒ0`&##Y8`ࠗ8'uk}mNzLdVԝÁpPJNYJXe'0v@NANs4*KP|[웓\Oe3G8~<{<X	kTMQyD[*aݨyѣ ʏY2ֺ)tH/Yup7S3Bl|XPc'pn^9]"isytH$68N30bŁlJļc5v۰	HVPwFSX1Y7qFʿRB!h&j)STi fnOuJgqDCÏ&P%aC'vH5]Ј+8!372T>*s$>a;rlrAw`sq~;7xB.9Q
a~=yJ:"!V\9߉t?X&ewAψ{IsL;'UZxRjx"K7֚lYVm>sFsН?|Aȡ5S]#Z%&q\
nؤ7۸u/Xq3r8Ŗn1;7F>ӂFOIh
KZ:ݒcH{$/k}Dl!fqs&#?*2иyY6,ɂm+"*꺶O4;s<~e xGKN(:P>G0{K`6-IB	BmxCWm}WN	Nh:w`H N
'`FNtnɼVՕ	v<ҷHV\s}q#0EVӊVdq1lm-Y1xc:n3-ݟƫ8/mjWxIaIYjnWܑ(d@XkWՇ80Bj^Ll
I\,gQyPd>ǂ^w4zhl\ Xa_ܘ}_^*L?
& '`I_!.W䕛qfG+\JN~>:]`=&-)L[:ki8xv=u~vj~ܺt)H&}A_D~xCmSفQx{OH?2oɍ!!%!y:$~NG9qWւgD6F!ݸ:gSe&͊PSgkH!A&띉_k67Wx{!csOZaXo 
% :h߃xxPR7l)?!;t[mC#j`qv:zKh>F&בM^ F)~S={7,"'c܏` ;퉰Ey.Nc=y ǼOjϭ
H&_W6H76BTpq=/]@a˴;{D@L4uє{f'z	aCkv%zfAE	Ni
T[}ek*:dyizի5J7ХhH`<쒋D2)orҦU̻gUH嘣sqghQ`'(Y#2@\U訊x択f^La-m7ե|=~
"4"bU	bi_dw\3=>tm?[kXr^
ᏡktktC(!n"X]	 H!t
(?8/A.xZ4+SW.{)p06&Ilo-gIR, DT8l	@?o50+$(rPrf(^#e^=~/˗-5T<ZN):9֠3\E)S=ܬR@;o/;-+z-QW$q~F(dR]zdR~TRB99<BR7sye$y=Aµµ"<H]d*%g0\KxxhO!P2zh`<OvX<;pt5nzAc}tކRI
r " $ͤ\⊉PZ9.3:),> l~%/Q'ڷ"&''@NR س.r[ap,(Y}4Lb)
[KfJʡ]7y:qMʠ]s+~JNaIk|).ʷ{ѻsu
a	~hx:}ϦfN_4:Wh/Hsvjz #93a5Z4'蓦08ǯUHkIG)A^cJBƶ+;/~9.2@(e@	EB-BKp"efb!4n˽WMO@A;jmʱ*[	orS`*Abl0/mZjOAZGvjOWU<UkpV P7z7[Tt^y/?zK
K5=|!ؙ:7!^/:DlbJÂ
4bCrzX}T(Sx")ݶ%
VF&Ud>Ϻ#+'
(F
JZG<pԘ[Cы ckPЪzۂ?N7MvJv{9pȯa>	dHd	luI3]hna4W[#3NKS6齴m]Ө^݆&?-kL1*%&XiC@	Y5F*i|e$3
Zu`Pw~k|AXJ.suM7$fy?15ܱg.Ձ'q\oT|V\gsy^X7ZCA
APC%&-g^tgܵ]Iώ?[*!ذn-YZw6é;RΫߞGaI#WT4BsvS81$'~UUM=0PoS*$TW4cP<SJMlR
;,Xԓv?{ E&<c,ePr0
U5r.d^M\0^plghI)V~i
w0Yl-べYMX˟2cb
Cy!%wf|.@jp"7;	?zS$b.Sg@]kCLwe#_6O}ny[ogJ;5gu)x-c8+`(ߘ
H
_w+
꿜Ǭv5.S&'1ꬺJ3!&~AZ" J;;fѣ&0%9@J_&=TcOh<H¿}>DBkcE>5[0ɖb~#D@oP0пqt[yz y[	,<YFCv
3LQd0 BTzvfcwgpDe[G`|H_6V!pl[:+A
}j|,x!yRs!.(X}.i@>CQwbB>,@@9shBC1*-'}3U
&c`¤Za^)TJ#%uCg }F4B\C!HP}A"ѿ[4b5p:I+JGjZOjHԓ"iZUF,`զ/5
9`|)	"ËP9qsھOWjh?%pKRar	38wۉҰo 3Xz~7I&~DQDh	YbWEHb`6SD{P!<~lp6^,,4-wΨD7V+1!eM פ`ӹñxK^>OK=YρR~?~?S\|Ta]+J\[M&.CT]k'&֐CYDC[EGͅ;I] -""E:6.'	7aX
3<FXOo,Ԫ߻lb c!+_-'B`QC|3ٺֆǤ#y`\De+yQfSIrly{EoUl*~RMY=\˞fǤ;8WǛSWW\ZLO"m7iL:QSeYq:~.KJYБp ū-.hiǋu_j>L~̩w<SFAog.+ԼeD,䲏F8
0TjVMi̫ٞ
-q6bp"}P>q.1Cc2As϶>ϴսp!K.+	'
r\a.< `ih1&z+N:	\]k W=(!'s@fY$Æuyϟ~jnD,lBij!.|̨g鏗0Ta%70
$l8YPƨl/.Mp."Iu(OHc7(oQK_J*u7^%^gƈOn-~6.MqMVϦ">/{h`_wOm[4h6_i˵;c#pZV
eǥv52mf쑚p,ۮ2U*u	#V(-6Gj״-t|)]Ѳ;(	8*Z8eF=(Q'c]\č@ݓ(GmXVu*݄o@mfiDώCA[żp\:8v<[L1L'e 㺲D VB>QXgp`$_0 3=.p8ͪ֬]aɐn̨ˠz}OEԾhL,H'z־*Kc,,MᢋM:
BvD<+($dGIbنFE#($Ò(ux+ߐ!J {}ֽEW#rbrТ/UfĎR>_UTՏTPkKZoY!^"GŜā7My.K({t| L3s*DeYk;9Q*p=@Zgc>~e`4fҽC7wN^Ӣs"8k*]_768]ieDRн8irUab:S%n\+T҂&*;ƩPPN[/PxLPCZT{ã؝/X"-zQ!Rj?AҘX(ؗ\He"4_ɨDG"Gǁ&BD ؃=GO{Qɳ(AF53`!T~D	<h-lL_;튀V?Y?RNI(7njhk5ffJ!9Ĵ7vXJďǮW8[PR6rc--0Iߏ"Y8)U}[)ff^5mP,GMъ?-C.mI,l wm^)eWkUsK0{,I6gr.}L6E;E)vz);GǋZPt~v5k07Zϡdg#20-"gҫA}VhC<مhkqQb
X cN Ny\1E UH~3Gn)ؖ>!
!/KTruvX);q^qP,o{7v4s͝_WCcwM#-7.l> t	*TEFx#
OhGw;+cV-t[-׼QTC)͹1ž$v/)p&W"1[zsyfWM|&k	4,>blkUp%W~[T,35l4* PPv@p:Lc
zl9BZ)۹ǒcFNO`)Y_7
g;c
1<zM<O{ ϟD{̮oL)Q@Lfa:?K<:j^ ԆZmp4%jDz
Z2OJپXƗ[մQF-kҙf0Ҙ 7Xʜ&Sa#?:EkŴWI#
{Q0Iܓ$" >YMp! uW,N<zW:xܡloLٗ,]Xr\,JH N!=QvqJn9c0-VH0
YHtjw[xZw..2+g&\:
'NbncHOVMk? n`^^VZ.'fepij޽O˟ygm)U$}w-qWo?bM''0Lfs)֡S
aV>$6d]a]ɬ/3DO`;SVdDk
ب,Cn.؟8NWc:ts`$;%kw]2rpLϪ\_ ߮y6+sKQ S}P[ry4esb2EʓKX'˻uVK)7Y^퉦t/N(^UOaJ-*fNx2^{
Fz͢e	rryᯟH.9I+q:98D$-'56.d&<(ȭW$s +I&"`J\vbv%G-/3&tLLx1T9wm]g؊׈V}w2O&E?oZ]9$Jؒm;(
½
jc5pHBbNXXM7SI.P-'Wl-
kސ^r>^d8-9rjR,lG%eL#St$!$
MHx$N\dS#,ғ9qv8[mܬRږ'ñy;?a54} {_wA
H4

]]L&w4ל zZ=nOkyAbfSk[ޤj$MC+ț0&gԵawy?'\y0X7DakDK]req_r!;+J^^[دrd&CZM;:*2Q%%:*~qЧ.5Ec_;o\Vl,l5DM}5^9䟄9dC,zT{i+꿡]|;IޔU-<!M]# y."%:ce7<Qͻ
W]_3ugx9^1` I,dM=U*O3$
aoeDRe$oModֱ!!%v>w&ȌOωkRWu͌|ᐞ9".k9ˇ524 P˄]a[!B-Ay(]Pb$}ɡ|W3jAyS_I}@%2@qt{6_1kqn[р5ޖ/
<|8If<$
Ǽ Ŭa#x Xg#C~tM.1z{0Mv_1
	:2ePƺU>c Խ!S=rF\G$X+
vH_ŋ'mkr!+7%1v@wùK@CsWTȵX͑kE-4.ƀZQ((irr	rJ0 ԮF4L]<EG
}Țѿ}Nw6ܘ@C sښ%df;J7*E˒9tD
%\j4|ʧc]{GHQay㬑Rs5xXVfEbOۢc9Wb_?^2Y
T%T63'	I.XtwmWE{3>*goʺla}!ac5v{=j86-kEltj<ȈyEr*s~A~.+mN'`3P%;7<؎Of8
a%uO{N[(7Y*f!<P017uID#LH98RmrL,QȉMv9ט餽n`JoG%|.S&t5ISN$w,9 }eEei%[$6?_VaЂL=.B[{;5czkm
+By9hԒгe!"I$@ql0=cwd1oD<'<j&*rHl5%ym`SߌTʚ_ %"-_*\ FS Hg7͇qi#
@[w&|R$Z:qxcn0ђl4Am(5fCn	!rliۧ6 :o
EF	K_,h fe:uS뤊xN)<:93v#tz{"h=`2*f0)Ez`r9``hYFhrs&c+'G1ғenCJgI{Ε<.`/ 7UX،XbRFY̽, ؖ`/Xz3x#'~Vqw};Ձo)~l}a Cʾp̙pRe߻ +=#,6Q7?[ȱ-3sRةm|_E/?zL6Hw-
cg}!=%!Lж(.Ĳ;+$W<Dxp3jxn(3Sm``|t,ᬟRSV9\{
˺N
ɢmu!y.F/)'űfDQbG`?.'l0H74xg`ıɩG{<bnCc^2fCxΐ{~VN$fo
V<3~d XZq~ן	!s6c
iܫ)y?oKl[ξL=_ۇir_ՓʕSdqdr]3qJ'b6:>xaSвkx
)GtX\#{6]P?
ccG)}_hǘ/f^Č*m#4RI鮭)'EE}X"ɨ ??csaD` ~l
5[}	#1GtR0.$:^6
S|\w|cYʛXZ&CPH$s	mG#>^\A6ZfuIߥ*")*oWQD2kK8y;#5q]K7EI1oƊ;kymYuxny
\Xo _o9Wk=*1b̓u~hJcƚeɳ@5ەZ+Sa}uV޼!ׇ|Fj-_sӄky0{iơ6_W9.IG/ M8t%>ן~	~9wm7yǖSCu5Sbݠ\A֯w/ ý^Hj j<p
_2QK'RBy(CJ{;sE̂)
51#~H
;`ژ!vԺRFVv4u.Vf^ȾO7ք3)bǢ3ct
e];/m9VO )^~:I]oqαmIb^~Yu/uCs_.WB/R%;ө]kqgIf&"Q
Q|O٫3R_w !d|LɳJ2'PGfPH2#iNW6]%薀E^~ahwo
e1m40r ~Rv'Dך&	~F/G;n.߲Yֹj=V
ED;Ĕw3
aG^-#OOVJv<GR?2g`Њ*ͺĄA|#.ʺ4ngW4΀'c\3|TXIHŴ ֐R/4go[X}eQ)HO4HK1zQyQ1Yu1ĦߠznCa"4yũյR|
(]A.'4t'1.uWL*od,Zx#@{ Q^җ%S\CA~r=@c:nQY"xpRÄ>P=`b앉Nda#683#)FE#^(!\l244NϊC̟瑳!1Ѽ@*wd83B3OL0`P{4,fM5B+#MidvM:j9^
8&]V-C
 WQF,,&WK>aA3Ψ.4K	,,Y{zЫ c^žq"G`,$]Q/ q^AiZ*(RڒF }oi֬1tSWCV<}XCF D֪|HʊB﷦y8&; X=&Ppo[)%!a7
v?E%.1,M޹a_Pe04T7ֲ~'74*
_Sڇ{+Tap7}d] Q*K#&XL7,P3Ϛ>#be~|_NZ2UErKeEis	Rpˏ<Jy_|o7c |:aHhGRE
+]`Uq|>u	H
UKX]s#%N
e+&TUj:M%]N=˹#<c$_A EJ_b<6`sxOe^r&Y0۝Љ̀Zͳ{{잇lnCEK(鶹bӬ:uT`aܖAQۚ@&U)U>@5M+
#mz[_SLVmۮTU%KI)lysoy*s)sA)V
R6몪u \⯮e@ >d;TVp\Q}D
 f_[+?Y]F_T7|}wWW@oeeA)s2،0n#l?s7#ά5z(7T5&\
g{U8
*lXz@wcuYM
!iP[+5
:Lܿg4mWp	WCtXyZuފDԎ_)6F&^b
feUL*l ..[Ysʵ7lHgD=j:6:p~^?6{T~)A5oشsHf[A3ki䬊4V7@&ߦ@-~go⪩矝'>H0CiںJ	!ILU%	-ь% \B Ez+g.\K7lܱ\R$0aurKZ5Vߌ6[]ֳ|ʛ֝O)S,Sx+rBۼ9PnM]RkUV7ܣ0&ƻ((JTy|WzmP𞛽[ցQ/QVj*YU
Ǝ"gq\5"m^
R|5BE0C\[SS|
|f ޕʀ-՛+/n@gǪ qP0^gmJ_FT^Tnft_l .,f1o13>/,(_3zb@gT_2xpBŻojwv0zX׸b(fx!& w B؊MV6UGK : 쬮;p;l=fH+ޅ
G KTo~io\60X6Ɉt3l7;Vc:}mU<ז
_UPZLO?O7OW`!<wjoȼ%¹)NHkj.29N]qd`-   HH}XV	qBmX7Q$n/"[Ʌ eyofwm?{yͳgMۭEܛABV7f`ULxSzkpBl&*k&b3 ǂ3ʬoht;oĺkL~I䯵KŜwxp&h>LHG#f!y?BʻyCS"]a0o27` >]?E s4Hov J$n;T} T%H<Ck6T.]]Pbٮj6͉ҙ{#ƙ8u:}<[0
YEPxu<A)gC|[i$Y_0;I+OFNv(Zњib~F6_JudDHt3q7\͵1d~^|xsFba8B33m֜Ba<Z̨uAs"(Wa87wb7+klj=Rk{"PWyvӺlf:q4z8%
d~'j3(|D:z@Jbl4'q
] :ױJ=C*4 @ePoq/yɽJQ~ =-!iSHO0\D'N#o'N+2  '˱l.0ZEJ*̕1IR!TA NT2vo ʁ`p^Dv?#WJ=]
:ļlZpUVMeIQ?ڎE^
QW _G
sBzOQf~u7zvӵ/,
E*I)}`9?ڲ%T5u}\&# x ^sTOJW\zT
'Φ#{0>\UFe
ߜN_Zl̍%3d+o{OgN^"o)5>/8;970cֿdC.iy>-8(ggh__|V;PgSvrYY%&WyBnVR-.*.H,PU*N-ON(R Jŧr&($() (Xdjj5T+XR`F*hk꧙44Z
ó
϶v?ٜ]@Ol=_鄎gڟ@(lǪӞv>۫Tc擽OYt]ϳ[J&ye/WrFvAr.v<=]a-[UVI	Nb8E?˪@G?&O	x[
#CU`˨XԼ`*)bkfnz<0hIJM*//q5-@LljVY) {AI~H$M6l`/̼}om%Xę" E:5jdF|V
LK	Ǿ}:DaI R6M!RePAC%޶OU+)rՍfDůCC1_v
MPW,VȎ:v:}0|"QC_PCbY%Oc\UѼY\jd
>lC~ 2i\R
f0l'`\~#Dy`n(K!TZHggˆo;XQ!p,;wl]IAVgq#J\z҈YtH23dFDw=₈@'*=UNŃ<fꫭ{cPP2PӾh~]&ӻE-{ ZZ177ã'#>x2cGހ^ffaʘ0ES*Aw_gO|;q/;sjxߎ]]cg'K8{2ɋW~yMBpsL7%xAq{!hyF*?Vဍ"0Ga
#Mz}5JDH;( dt@6$FElb$b*..ڴ}+auNYAEcHEకGkM#$GH]b
B)RL(JRo]"GFNI{1:Ēa`nD9qL?[r+kJH\*ơy`
X3=p}ʺ)lbHÿuc(5Νdi]9q~۶jџ7
dA˿TbbӇAaƆ8$e×}kxǪh'Ÿ\aIj9|QV9{fے%A99Ç]	W:'2b,*ϋz^?dá#cRGblVc(1R诛Tu@IFI'
`vyѵ(n
N(TQ(s\빳eAKU&ڊ>~R4
pu9ap$o*LZi4-:g
.Hvoi8EF~Yh+0Z-J9Q|xԚt m;9#7 ?)W`U6O5tziB:`Z,e~S.fg7ӟ߾vYvh2;덛w{/~ӱ 3KN"B@4X^h8j,*^\*IF!" (/=VY«qVL$tƚю-DdO`s}a&jj㪪F)OgM)-1N"p
g`
L#h%z] HSL&%G	pnRIm "s} ,DE~S n4M)a*L">h2ܧZZ%F|ۘZ5|""BK-%6j+AAŃgŋRQ	>OD'g6ͦO$L ID[xjд9@Jo
 m6 &}5gnljS])<k[D뒡Xc0q.y\RoS6!-. Vf MÍ:BʪFXb9Iqo$E}ٕ:1|&tT9-r/
:Gyk֋Z[a|(&br^:W
fuPŰ47?a
Bm`Lϋtrطs8[MT_v㧿:`!0X*)0EN/BM!.|˘Cm /
M
bTmg&RAD.!uJ/	
#+mV%]/Lg_v@'ОЙ˿Z[f@xaO\:oQ;.Z*8
|U
p5e
㏓7>U;zdrw%W_'|x>?{G*xb܁]_E3+q6`(1m4O9bq]s ,ͤ[k뫗`'_PG+/BqpP	Ƀ CUِI=+;6ٲf yl	;.zI$tGNĹ;TY--.@[v0KwE(\vQDvW`slq0K/(tPCli3^SZUqHY2\&Y	oKsv%ݒ|[VX5$,#>qx).nW!U~ßo?=bGp[!5VYh2EX,.!\Pi?X+Vs0vUYS]jN(dr-;1Ҷ;l 5}\eK]2^$ccWU?:`PdF=UA6|B oyۢ')
cogA69nc{=b_"&w}rWB|5CPaZU: ]o 0	;GNy(;͕&%JX߲w2So+:惧`?Y,ͷ_L(RHN3SL6|,
Dh>&]`A[2P*aUgh
zTx7':
|SU\!6Y ^umqe1x*Pڥ9"b
U9
c8*	wv%8<c˵c켱ȹ#{T(ad1cĉhA
33Sl}H(U2Ĕ;R+JP0 iFO`/Ok(u-F3j fX!!BӄdA4	sYEtDdfUxM  ! && ech]  @       a h:0 8. Pi{
D5sp8V֤bX
 $EIG:*zyPel$Qg @1@OֆpGbMIƗPw}`"RzVp]	U1tgRNO(
@U	噻l(yt^+Ia *ʡ+9j	H-BxՈ@^ՇOUכoG[̱xs#qJ#HiHti:cG9v=p!2qeeA۹LaVDƻ>ɜdT|
LY |6
-2&)Uv53Y]?ؔϴ HOrK 4 YsV}AGƧ[ezbdcmKߕpiۻxPS)CR8*ORj0C%*
nϳڧ"i;=^VNhCE ɏ0tv
XWj3+sJl_ѐV9cA_N?;x[Yg-j
rǃy"S.[wӰ<KT{qGn$ȗ{u<MPD[(ǅ'!	9poldib=HQȶ],"w_(ÍԶ^o9HBq_TIV;EEjRfLȻ[{ѱYHʊsӟs bûD\4:wk8FfٯȐVrl^oیWhwBPل|ʣ
CuȂ瓔QIwã#/*L0"R8 S:75N!rE)JB:CRV(P+pQs8u9>zEkT~1i$EļZ1L@bh=j34X3k?g&GS5l
rܭ_n􆠀CG+R$Bw_+~hpR#%ܓY;&P^߀#ދ2{!bsoFۃċ!"eʜlvL@~;[NË}7	A* jJM!CVW俺5UY-22XЗ(AzcS^
G!`ZAȹ~`1UL@[(z[dI_Z
2У&\]\.Fϭ7@H!]iDhoivUB96&fxM:I*Jnf:ʉ؎ܶ3 kxѳ$+Su;ͅLTf}^B?gx%9\쪇roOmpY.u3-{s;fqYǴָZ`rX?׿K}]P`93D7HU55 
J t<JvAj)뎛&NfQ/tKUU<ޢݔ[|;n745(w(aNgؘڳ3ǉj< ?kJ\c͒2sQ@,:gq)Z⸗\Xl,l`=R/͑35jB<7dƱIZry-Ap
Y\]ĴuQPWwо!qf.:ϭ[I"]ޓa< Gguʢ	-`GYVbNJ wzQX$Z$cRiS}1{! NZ7	GװM"KTqDEdDUǺ.Z]
Jo;,3^aly^Nq	<>-r߂ t3+?\*٨U.
=C/Ս2hcO;$X(v nUb0yu1Xh"p!$8uH/u:Tl\?ە2 Zu|oxylxWzuMy%jS<<O{buw=ʵJ봂~ݑTV\ Xm,ߗYC%Y;ab=@$f86	t;æXSu$CD.F*{: 6#kjkOˑy
Px:=?mr< [teb: ~SivBWg$@~&>;K3I]Wi?nO9r%5-Ih![(VEEIYCAY	6bM%!ļH'=*^Cd$;%8HA
n#.h}v*_tWIEfe>0(@}\<'eۏ?_^eaq5D/@2FarҲHꃥ,v=ɛHo$UvTEq	[v2`J-+ydnnh?UE$6͸%Q2P
-+X=۵ߔ>2a2*Kҩe${QD :&	DfZwGi
%-bIb{hSMϖA
Lgpn$CIHHN] ;`B)qL(uC  'h01YY2vB֛֘)2ţDna6fJeU1AY][NHWò3L9#/"NbDW۾oiƜdnIxE2Kh~q9Kz='*xÀAe.]g@z{z	vКۯ"[Ojk'Gg  dU/;_#~KDb,]!s+
+`M^pE
ULk^@|J]92}M2?cpxfo_}o{s^7/coMP	3%o98fm!>s`O$B^ӝⶑJTNvĴ<{;KnKz H~3XdWD׾fpgg'p {>	_9b{F'ؒI߈KtRvIڄcQh'`d)VF<k^Xn
.]@ju\ p"}ȟІ:=G9s!53)!O-a2w`B"÷j8[a1K[b*)*z??Y~Yly.i/Je
H
uQ">?M$}k7ɱE)&؍"*4p}^ɱ-3ZT uC+-@19Ui0!ԖGm.j؟U&7IlL:j+{_;+df*D.MVҘ{ o(1)觿jyuwMݾvU<V6M",wp%5Inj˱v:3Hb\nk1k/jjDbl";W\U{+8~yQ&4p'
>mRJd$<H9]myq#]	ۚw$P~_:FyU7RFY	0r^}pd2#YFbA|(
O`kϒY;>{j
[X)<H+zG8ճ}Ax;r><󮧖9X^)G,캧]P[-y?x0CJ݃#%iϙ68RU7v"Y0X7\P	νbcҝͺ9Te:.ҶisL[8i7n+'VpnFL>+&l*/hz{Fhr;s)M8؄B󠾌q܂dFRQkHT@XT"1=߿ɧcDbC :]Dhh@Hf3/=6 "o%]ٙ,  >UfIA	>P/2w.D5S*ƛ:Sǃ$m$'F"zŽ\X
0:@/H.5MۡV7EgQf
I+e?ڥ5GMTŘ(j
䊹ʠ4f_vAx	HLd!s3+|P\9,X|95< v vu-T:8J.΁+=vq\H8,
Gu[ZMba}O$k;
0a6k#$ZU(]
x+\x|2ʯum,]櫶/:ggdTã!Je
[jIa_-?>N)tc}Hhom-kܐuRh+
~oU;YK3r'Yv $<¢_
ݘm $WADһ$Ji¨*"GzƑO&tW!륂^I?Zd_&SKʒ;>Bi7-n]DEْTj:UtR%}7Ǉ:SizQ
v+Qw0dFXr5$Y8FE]vvM  YR	όU=M$v!5k!F>vxJ$WϘABk^^O[0M	H]mIlȷpם|PțCvݑU@HTlԼBՂH=9HO|g_T,A-V+j 3Ul<Q̌3<z"C.%Lb8ޱPb^ܣ {Uf~..v_F\I,8NBU	LRI(ș0<ᒻˋc.sD%?/}!3zS .Pfui=:BG2V9!'ph5EԟG^LM0TՖ6uECӗ<w $5CؿEnSAfQ] lMzЬߏRЌSGDl׶g	mqQy
wLYi[Le;hKqY802Ӹ骘Fd-PBƚIͱM;{D|(jJ_D_nj|Q'X#Б8fv>H\!s
LmO(t(j&&$ٹVki 	jW\,ӿNFtL1l4Qҽcj`%/֜21IWd2Cs(@_[_>!q)TsM!\H"x>Gta*3Ӣ3`
Q8euLR^3*wpa2أR\M+,lanFdHSЄ31Yռ-IYBkAW£ǑZ?gb[Ih
<n9=@D5o(h xGy`WXNeQX]{K_(F$=[!_!RFԶs͕	łoӌ"ﳉ\R)
WOձ\C>\*ם9Bu&_mD&j6Vz@ج#t'>%ȑ __X+Wf:W
A-ք߁y~F9JyCk!_/=ͦC::<cߌ1#T?ۊ3YU;_ˊ	Oi%縱]&Ȟi{Ƿ&p}cr[#;d"XuXrc)kDש	fjq12q+|7B<"`3,<mQP.MK@by"a,zU97cK.Ꮚ2t?ZgMV*Em '^Q
Kj0)l=!^T>Qĩ+ES[2{=3{Dˊj~Z3r,P
H\"-u' 0#t?桃%Ꮣ.Ɇ5 הTl-\
<Fo" XQ6@k0LO=4HˆӫX2:`a9'g. ntT
Tg{73Vz ujef먝`\AxY7ϺjA["nDjolvw\'Q"!J:l 
(ĖGpߌ+ pϓP
nԠ?O&4
YƢ
 IRyU&KINW
USS䅆M旘7ݿ$'CxʘA*ڱH%M8I%̔1W`l[	%$<8}`r:BX)3 f#`.w{ 
ttŮ[鎴9שhP{#<9p._";Ie=hv7H_/Wu6\ q5ͲZ}eIl?1/}޹@R^9b#T7xCq$7Q;k8&]9NǞ~ :{qcna6˺D5v`V0;Ql:1Uܔ\5΢<sFfī}buf:$]p晗ٵǹ|{n|L҅K['gE=i5p(/4wbP?"3Z
Y9tb6
R2HE>
M3	͆H=D	&W5A?I,Kk]U:5U瓋$vSRt>IDc%l5bMN8%!Zh'g^}2fKz-I +$	W8_9
Ūi 9W)=Yw+^"s7Y/'[Qr9ww~DS$afc@qbܐjҩ/"ijELXL/	ĢF>KA6 Մ#Fr>}
;Cݍ+ft1))ՙ	Ⱥo&VVMtOdlYU8ij,#^hAC۬<rl¤4)>aj*&CRAIh?GAwi\b]&|&# Xi1w'~툞9㍞y.)"2ICR*ٚp S'wbRk@^O.c'䁥Xs檩c5|4>cs-]9{8֨y\(]42L-`Ԓ!j̔¼{Wn*%I5}!Om'YN0M T-Q 3	gsH
7isz2Nv<wӜ5u#@phNq.1:Oul:F}wB^ua.)KN_X7Wgn<]e#Hd +RYm$n0@eF|e$*c'\3'ZZ 6p};_.58V{wu$R6)bYMw͎_|г8&ukENN]ǖ{;#}eq͉ǁDA%|tѧ91veHg1]|/&(jlqO5ʊcT6D
ڶZ _\]> {/ӫ-h<
X1|F8,M;,n?*.q(ņgXcf%hV`;AȞZ )[0}t&xpöcsp<>#8ĺ8}~d1:2?9tEh3	3ʍ:t<s:B}wQɘ@Ť|?4;Fvl[Exxu]EnkRh:E|e5JG=2!궰(qE}2Lǉ|!n^a|63ahOC0#Dya [A 6JnsyC"NPWjT!5`S&`uZ="%jSN7ԿxE/{?[*hpc3H]~,6ҼA}h)uXs	+Q]|>PzCLy;%@
}'FGrm^@ʬW$

RpUJms/ 9Kn%-ǟC&b  Yv>q%@iG "%6}CT.c{âYPfA\~+78ӹ5ʊjI;XPrIV%T>mZB{΁`M8,XZg]5G,)hZ{N}צ%	*<4Z*+A&(pr;ÝTzVN9܊9ŭ{3q3d-;,
H'peՏy
`gz2"XXY#\d
fpX;*N`!wO]HJBo\t26k̳%6nh4>WimX)|oXj&Bw_:&U'J|qmW@'cU:7.@Ǐd`	}{p^Hh*VM+kkb&6ZTS
'Y~7z9tcs՜}$(wo0dxmܲ}vgRП?Q?0SD/XQ+˗1V4zYʦ>/[WqH+zDEϳoپqaۑ6>- =	v#=6HNzSS,oyQcF2au MՎHU+$m㗃}q|\z!:OOlWxHy/r׵~eȽx@%-ӖrNp.FT.<^6:,oÞap9SW"<Le*%8v鶄㯛,`ؼ{8̣XCehl]$
ğBQDFd_]x!gv#T<9cZ8̈}yU'Gċgwc0z|o{lQtmI[/@_ʲ( gi
H*0Ӻ{lެ6b4}լOCCDT|q`Ы\uظB[FIc6%NLf
aw<!CidYtZb_B'ά*(F49J5u[|d43Zg'bSPVb/Jr'=7]Sy:UDZ0izFw$ZI&rKT^]
\wgzʿ?=\;GWJE>L.}Ҟ
O)/as-r;Lcu?ꄫt9}K4>79n$Bӎ>	'DFɸ2z<ob(QZ;9fXQ['
%Oꈚ=b
N{S5S0)8	KD8d۔Xq!yUjBU|Î Ipſb6MCI(N?튔TֵU&
ղx)&ew"DuzezThxrixlJKFv L:";?	jĔZ?u7A8RRk
CW{_\nܚ^Rx X	b2K.=9댸Oz~_Kϲx	yḺ躺`z9E
 v_m3sٞu]ײz;WӱS[u/0wR>&'<dFe&%b}Z"̳<:0(K}X+/13"ݛ*YbHHs q1v*krg1|+k'=r!x=!-&~m2$Oy;Ű5죔N<hMҮGI1S!1hFîͦmLǺS~<mvn$z\gژp@D=HV*t0^(3HQH 	BE=$Ǌ`_'%3NgMҡ	n>pG#6mNFP-ijJrl~LxNP3c3Z]XBQnljll#_H͛)!+8aʹ a([_ FzeMB_ʝT+X #'ag-nuȳtqܑ8`^O KiRZXnB.pKd%θW2ˮ!2Zؑh;0~φ/W앬Itmɹ_t" %djHg
Ej6]Xw[ugsUsZԞjMArɣ,VlJ^;;2/**	sxK&() h"EvWYOntfMbS騵Цɑ3Ld;yFЌy7=qO/QceE8KyJJ%hgs:
z8;?nI@>hBdKk0Μ{U~qլ|Hׇy%pwRhZuBGc?B^	>bs9֑кzZBza]Ԃ-JwZ-{ʡ'^s2sw:e ,8epC}!MQV;ʷ`Iwj!n>"62]B'N9yrbX9$ՖwUs{Ѱn«hYz9g)Ks1L*J#śZ$ab2]zvC|J=\&g͑-׎ޏ412U;KbQm -҈KYgV@5e[;l`=Z.áӥBK'Xy3U"k,|GP݉p_{~ *Z R>ݜ?;g \H1yo^Wx/E`K)@zKuJ!u^Іʖ}w^0
<<D
^Q8AtԵQ>@8Ĝo#*<V3
!Ζw{s}#96]aypSrsK6mpR# .Y i?6TP忎\QٟAȺӇ'-KZgO6yd#a sv
0p7Ll3ll"5dAmIJ5ffHjbǇɰx`'L.Gty.V"25ݠ \S,FǉP-EWm=OJ`3}E26é/݆v4v)}G7L`Ľ䓯q8\"%Wo

ӂT0^a__sPnF'oܔAE1)j7.տ
@hl35ū? a@^MtŞQAxe?=}/9~˔ttk_x2)>ʳw\
.y6hۘ:ns_dyLؠ-AÑvgsӧ"|AUSFڋ;>C
\Tv%F΁-xAi!wAptluG08F~C=uEFJofa}eu x@m @ҝo	3<I^j+Ap{|aaч滶;JZ4}g!+*Qb߶G
'K7HwΊɧ1R_ٯҍ'F{B2^bjBaq7O?!	ANŢVs&/
KqtV@z~đJ{ۯiyc%l0[?$-Z+` Ӎph(0$(ffu׫@+KHktaU\Γe3fϚF׻!X¡ X*%qgӸ?	HeZS'{z"6Zq)s6\z 79|,CC±pn1
DSI`z0 @G,*4}.'OQ}BK.]2x;bQ,~ָMi00oaŷ|P*ٕ9=18;/
"	HR3#>&æ{!Iڳm̱Û-s
/Vk(5͎
P|}.c,{>!IkmT[ClvTu60u:C_)<y<&qoJ%cׁ>,"
S'):MҜۻf"bZ:ƍf;ᎣV)11,2E٢MF3P'L?1KxcJNQǨEHgq6&ep[PH%pEu0`Vd FT2	}+y
{GJ@qDToNa(۷fױFsB^w2h r]֬V/XC$?69e`28W%/'ޅ	d>)H>; oUî5׌9w!x?KLf@gGPӡ|m1bЧ(a}Q޼8ń5Oväcw8n&*iq&\
ѵٌ4ЎUU$XYn89I ؛@jlqp]h!:PǟJG*K1|ZSz.ZǪ	jJ§<ҟYlHQrP)P3(99~hYsnI :c+!)lz\bU^ƻgs9~D|X%2"
&3Z+kph:{UC1MJa_]@BB'kk9_=PX+#vsfoFz ˃d"o`f-ً	x;^a
V{}wW+,@h,7 g{+^gcB}:hftia79db5	â
]d+`-C|TVA8e7_:Boo:W?U4c>E
a-3"Yy7m8IGyJoU &Ė竳/"׽xOaR22o{(ӿS6NН߮#QU[QTIpPz_7{"_S a;CRmԥ#Zcx\vc0x/6^UʺN6͞-pc%jXNfLbی"x2<gŻu3!#U'њ	ۏCxisj͋a-9=ljͨq],:oGwJPb/J!3qa6	a␘Ȧɪ5PYnqZ`i`K͏含ꁰ"'CIݫҴoZ>`E1G_-܇A'N#'%?^mTt{-y_lfrb*i/ē#/0:C
K?E&ƢVHt_c^s+䝘<&CW౴0,Ka(~veIcL9T}G'?|f1H.P]x%ҙP5u `iB]
hf+yt'	aDJF!2c'%sDFG9ZEO7r<9i_NN83xQVK+EYZqX/\;2F[e&2+$Au)iޞ yhv[أ jj~mkݖ67f|ZQȸ3OK+%|'nW2CxÔ𰤌JLPܘௌi
	]7og(l-IgP
[f%oC.6?+qMpu7FLFwIB`D?c<ѩgb1dyE +M~'և󊽉y^M0eB&uT≷C?@v>u>{)

|p-6 InzĀ9D;GAP
iɩ[D#	5
~tBֿ-J2LcDeHJJtSB@~Ňzw9BO=	3LK,8 dy'4V24ҥD<IdVzܼ?N"VApbvu.	]-6rmm{l.I<`LjQ5n@d
ѭV"G0C\
h;_Xy)r"8XBx;C\trYJrwR(<NKt˴~{#-pKe
t@MYA.D{f!)tlmˁ ->
G,xW//`f}E
"o.EU2:as{M܊/[ˁ]>F_&('3*9gK,s%.s9)A'u_S/F
 eŧ	? .Ja AWID-lVzWJ?1+A3YC2psXO-|[p`
^)udYUDHIJ'iGoظ9}dd6}y0ֿ35jJj;:0}V x #*L(;YѼw(cu#eR
^S(UUu#ذ}
Znrs~z6:ɊDoA]8ɓx{H9tţy~|CFڧpk!v75Ӆ[RU}6;䑨YӖ՟S^($V{!OrRђH }bD
 wMRۭ>
|^|3;Px<ӝ1H<
Р4łR0ƗBFOO^OV^8	O'"od0֥wQ#~ל2rLK7*yNI
weӐ8""2K:Rizأ	}3$\;af`$3AHa/8"
j`M}ڔҌx؜,#"a`cBzPWi
~x*1T'qvH:}}T#'!I w׻f\1U b !V&@tlX_*x_6R]c6Uh :yY1ob%ӚH^ɾoC!{uo{cHR?.grxPjSe>UM 9'Vd+
bc!=k&F"Ph>oN9b8 ׏H$ EthxRiAȱ7̖|>_2غ̠ ""hpx=j	<$D,eW]YG/S:,q?ls؂a1*jA#		(.$U'm6K\÷_/qZ_4
7AX"@!?2Ol/=p/>lUsoڰq<AB$Eu-54#f{"Λkw({4$BƧĜ) /B!ZDcرtBi|o}~g	u	ZK[xZ",@Lk2(˓>߭sC^P"iK%/6,]EV9*PQҺG8Wgm)[t\(*}/{@+Z!XL"q=О1
[f8$6qv`./rzǵ/M6`X׬NZSsXh~\PryDwCA8 h`lܠG1ܲ\t?4 z~*U	,t
JgbCY[sGQ@)S--Ɖ?ђ5d<i]mJhLAN[OFt/)g4_IPfT4k[U7kb1Q4,7K)Z"
œ@ߙXZuvTEm5/0$fQ(Q<sy!<;	=iU
	B]E*=U;"c5[-+UOzا>ux4G]Zq7lĿzPu"쏰!%1w#-R/""vs8Yו5Z̾T59ϰYȘYl"<At<Rn[Y([4O`3upcx|V1##2[L8DRY'n8ϑ0tn<K W[ôfTvhqY
>M7!K	miU`I3]IڂT9y8-:}uV_%iJq_/;)+ǉto%G~$Q|B|\r.M`L"xmHo1WV,EͮVg(33zYNOAݑD*bI Nb`&Ug$AeTH-~C۳22`ܸ:ر>!\3rr=¬)7K^JՕiz04W˸߆X0auX l?Ér i2d	 ՙ2zT1Dԁq(3n1 {a,,,J+C Xl~nJH]zobwO9Tc4QP pz\0J荙.zLO{([S@&WDq{B t5Q-R9+|ټ
P_I0(7%Qhʶbfժk:↴ /ChOo	ҩ}[9D]3եI HMU#9i>ˏo0_MJ#Ttnd%޾j$Rl@ֈ5).=czc9^r8BR{aS
zcų(vJV  Lh@x/psͫTSKj'ԟ=glѽڿغF<8iD5է}yLևOS,/n:u8u#ߌ|Wv:GPrd/2DI 7B0kd*
շzIxr؏)*M\8: "B5xN
?\޶j+p+:5Vʲ/ģBOۓ$\jRMT2ee4}ޑLca..@رNUUNOi]Uǐ>j13V:"WCGQJUɐcb >4.Bg|Ľ@T7c\STkHIb+k*|$]`}K4-c{Ah]>kqm+"b*߫lCUaGXh;Y4K푃XUCa[ovN[lcz<H!s׌Tvk(L7rx^gx,qCyػIx2c;V\٬EwuȞ$:1Z0LDe.\ewJDO#SH'ێ^qg	ĕ Iqh\ZXV@Dq[aꙿVX׫ip؃{E)U HdqS0LP4ĵ["UUt/Ǘm
t
.Zю]9=3j|(k~Gj6sX'h0.B5
J
wO-9WclwGZ״<D8Rs^Lƕ4%K]T^cI-ȵ	jiLO'aVjо6w
o1qwNkVRؓ*+(VEH<xDywK
dFn="ÜQXTpdhp3^=.ŰNmgL
t4ڱ`X->(h e<
Q>u[qQMxƩqz
϶:[G_օ6qnJy΅%z*`qA}V?u˻$_+EN{~`Mr,z5
{/AzX8(Pd'B3g3 3m4J^o}8P~WFខ=KMpn?Klg`EEoꚷ䋴XG,1qXh;Gu
>=U,q'' y;ń
)JZet3yo+-On w&:Z
p|L|,6Rpt9L_>!aԍ.4MeP_KOB]9RCHA]A[%@FR>p &$i)Ky?klx	QtHp?_P+Γrn,y؄_{ 7yqVDvM3+<j^JIHǭʄ?5 f)`%xZsEWlW@ "fp.lϒVߪ<&>TcW~jfo(-v}HBc-oi;<Hv'f׮cx͍' +jԻעg@m#kNZy(hj"krrb]#bi/śeGRGlpaʌl6^&Lz*k*5'cK3*c֛x*`uuMxfcx!Iq8\ˬ"F"r2VkrmEd[ؘ4CɦY{LY6vwnȥUoI9!孞6

6{3(hͲtP|Qnd/P]t@Hf,Skr+STH!%Q
K4
KХ*|y,%otT.ܒ	?zk[f)ÿ  DTڵj{+e{=Nmξ600Jn¿_&Rf~tj&0֊	RsDqtCcjY<&pm{0Q-2pD>7^:ņ++E'Wg)pJXX?/b)Ec37ŕ[o!ZyFݷ]`2=`n*zuЎh$HyȢ+uV6+#7DjL~qٸ_׬wmvAK-SAReCZ?j5 Hu}3?}R{p P/j~.3RHPsO/h"tRVuҼY-ѢiLoDY5uWid9Xf6넅Hlϵޮ+ilv^8[b>"fLE G$Lϵq\` ̻ޭjşC.[ے#MR+nv~@0q _fbcd?Lˎ3Am|!=4Kya*qL
eIY7ŨbYaW`smGIRshw+&DXRmƾ$(Eet-,53Jb3ǤLl0_7tq[: +68V5X_a6dLJ#]^B*HQI&%[
UXpxt+,g 5cYwݟ}[Ȃ4BM|y}=$ytX坓O/9BĈ/g~ͯe!t0뮯CvJc5ZFi*G".NP
BI ey2~]4,>Lq-;t)`AFKeJ3	t~]#9AWŻ(FlwWakE}  >9i#
SVE	DԀa_eʻBRAQ&}#]*HY5~IcNC$ֽY,!f39JQ| ]:icLʵ
X%Ax3[qǘH/&c;<kR-|e[%TZm'BY>v,R
?@LgjÜ\+«MsA%xArS+rb]uj*3ǚyvz5(.-ꧦkX
&FfbK @UUCDpKTuPVfGvB萞z9W_V,w׆$9oAk(zSX<,C+cF2>6CR&vTJ
V6ͱ9.!Rh~ld6X% okI	ҧqnG*>3z8HT Jh=BlS\MQtN2b>>w.q/[hyf	,-O g
!:gS:8a_;#N^/
v76-jpZXꧦִ43:F @~;c}h^XRO֡f?Z8^.4vy\I60#FLQ
2¤xU|-V2-|h&jQʍW Q&ۋa'
儡cgg_(7%عK{ْ ~4[(b{ieCs`}Y޶X(M˄E&/EzrL*7ƭDa><XÒa\و`
?}rB`gn4DxPQLiPErW@VtE(-O?<Pj}$8a޸L=F=?PsD`!9B6zm||uyO/r$ (iw9m-T4hƭx	
5 Ratw%Vk;^,#AH.5dFT
$:O"y3Aㆇ|+XuoP-KV~p7{vC%L!^{q}ԅ@d_hjW
t {?LNr6Ej~B~>;RC$,Cv-_ي֠3q[.]9$\R+(D]	C
١#5JX&7Ir@ It&@Ǔx[@}NS-KBHVrL	|n歹:
$! 4#oxւvaG)<i@>K\/+;wۥJNkChkEt>H`*a\Շ}YcTTV1^#Qٟtl	_>j[ELe$^/DVW[=8q\{4L8+(<#QY3cVi2KI3?|Ѹ~zKo \1sRc̊	膦o:'qh%B,a{VhA,/ZKi[KB&ڣN"zhh'~qyiMŲ^{(\b|:XP~Ny&0 盷8#xpM6Uu	>,S3,Ϙ&|? zT,'_lXcfiOX0UK H_&sbI>oeϔa#F4gº&Jwrv*f+*̛j#R/yCCs;)^J䙣
ðH:Tk*x@ɕ)Jg_ۂYDl邕*ciW"TXO8&*Cn_+%YȁiҫNtlYIƝ+h1OPz;?9:~b# |J`i.uQ9=FFdwB֧'
(<9Q:`AF`O!%ȞlzX5N=eY#Ns=[1J̬R*f̘WRoT*֛֙Y`Zuo?t_orF`x35$J,iG]udvUV`K\(]rDr|3XCi]mDY)yV
M- jPlS6sq6>;BI*pO[<B wt× 5cޥIlK1GϱS68#0KJe]&VnexTfݾ쩖8XߋR?gBZߍ5ZusJfV<&YĻ
$lt|W8L?mCPp<w+D
ߠX@vݠ
2n!c"[I& 戇ǟ\ k/%HzS֓A%zv`]X/,=x2!i[IlNIӶV&5,:^hԕ
g_
ӼTKGf`\P+{u> Qײ[G%ܢ	*Gte視db
j/j˴>SP3@#P5R?´ at )Rr~֬`Qmރ&w5XsMrV
Et؇եYഖ,djبdM=>MMn1bhn⛌RW8~n9=8 QWc?Ow{;UoO`Ӓ{Mxڨ@Dd!L|
<}G,})՗F|l; U#ZW+JqF v!̀jA,c?^HEsoкb؅p",C>MY,,H
.,goH;?U{+sY+'N_*A߁ Di4q)/;&d'YO9dy$Enl*c^ZeSB7PCɒAoemܮCJ=m(D̜''}Ey@CXhޚ"o~}kSܱ5i"<T1S[﹍L:|EuMgwa;Ja227uZs%&6y֘uiBd;?&DR1DPUE}rPvk,=A;āV!@> lzYv
('5^ٟhhDdmP`wZcBjXk?ﻃ\_"kYc0ɓo_]⼼1Dzꈀq:%&
V	J&,;f
߀13.5$|~?}(B{=ٽN,wlmV(]la\d児UP

X^@07:-/K)Qfp9oCPr*}MJRȧlLRϐO6FQŹFdGaqب{	u1WF<aC>^k,|:(>ǏiPo^L<L՞aރIVkG@2L)|,+.<WOKyX|KaMM2L<_OQr@LPz܅5RU"6zA"sA~;B'X#dl.cO#l
T
	53*0PR~O2w
L;>7mx'g20->*J^	\8W/~*A͘ISN.dY` TnRV6
 ?hYb9?瞚sBXtd͓,ohb)r%uןrتp0dK	KXw_m0jAgE?#KZm)VByVœ)T?ڊv&зMzHdCSzet Uۙv$>i¹
:
j
ReE<ąK1[~oAz-?Q$.\$wg*T`dTM-nMU"LԻ0d?v#\7ܺ.&Etkg5lb1Ԣv*Yɂټ.ste*j00Ῥ#uKMiA\dk*r*΅/ST>^
kPoK/i'FI@W}5ḵ#A|bkM	(av}i_A_OmqDEg#R8uYpGP̙X^ضֶٮbK(޵]J֥wV/48&O|VNaڭ9Sڊ&S/J
螷v)SSNIХ&=
e7&ζɵ:7mQ`=w :(.sږ4)SIڛ36ynRMIXg
z1c؜rҞܠ8t߾{M;>8w	-48WmFFYT/[׺ZNvW\<&	q~w([dYEL
ZZ7bՐztWGzyw;:FH(u⾰:?눝O='&4icYs6W"6yx8o
*PǱ oDwzPHJ{ #^@5!N0T`/Z
]Q@izxW_M6|NVĦF^9k;.r>vfބ툠|쐿 n$/\Y>.ھ$Dt{$m^|pյڱ
,RY</!Cq~*)S_j;IƤq;"c;?#&)'m(AsAIkOD<]?GEJ%Swwaq)dq|uǚFW>sMy$ 81zqqB |	JNZL%gtx
$1G_̠#֞f_%>̘ۘ^N7a|s**m=*ny$8gŬG+(k7Iп"%y?Q۾4vO3=^fb8t\C	Y9QDW筆Wf:[Nr"M{Q&@֦\
*nc]=e'Y<s4(k^ J1|Vbiev2FBs zؒez/M"AlF֚δi{gQgM7`]rApWƽQ=:Tl=$1șKv;dD<>mx|4]+	rgIdO΁+4eI+OmgML,ci`L"ͬzS{$`0d9W(|?s~WV"=~92hV{+AECKɏ1ɱlH@@Щ컢
5CF^?	d[m5\tqdi;s=1I)(Æ4A{_1ݻ^q<.&r:2b2-CYfzb#[%ai?yag$	3'|s=nJAlAQd7W^?G U.g	f67ua%DZʃ#Q>=8
?
=wc40
EA|5@me{F#aD
3q-G7R,PstVTo0~_KR؃.E&#d>
>Wq!欴,4K@'AJ eizvo`Lg䯞n|@LmGS-Y'	8Э__Y*Y(oʭ5:(ݵʺ^Ņ?lǧΌ%p&*	q|Fk8*aTT^x(>'ZjU<
J0#+Yc5/"TbQq%`TN%8N8ԗ[neeiz o	
U(.Qb8G7:}nF8f݃ZMQܼq${ذ Xw!7&gl0Bf⧣DnAZ,w*I$˘w98PyDP;$P:Գ%aX!Xl׭ YpM{F̗ǥ1[g샹Qjf$sƟ!_[R#lf)[յ?Ӣ:ltqm
z"N2j:byX$l7ۭ!ng\ߦ1bw//镴gfo#r9.@ugVjQìM1%{if	
ׄ
_GaUtXJ
SF=J@tҮvf1#+Ig9|g_zLp}woΆwvZrK{RoeNKCiL:97vBw/^?
OLq>iS95Goވa<GzE{'uN7+D@Ya ?9xf\\aH.$t&/>ԅZ
i*(ԥe
9lKf\"}TY60v{E
֊QJ9I/
	jPH{
Xz2q*\4eYG\d2C =JcO}rmqӁcEyV+:l$,&ecDW悓Z" WXx-M}f]cD%mxDE2Z36~H/icxzThBv	-ϋ7_ԪS2xz$
dΡC-
lT05RSȯqϲu}	EPSLq|i:ՀGUמ'pl)Jt{ްMH;2F֨ibI|o28_ѓF[z}QwTW rw>fO+0<4S"Pʁ*8ʉkV6n$ {QXQ1S{4ER܊[s~>w.^5w @*ˮP}r7ic{m8NKXS3s&LԖ
bմ	Ҍ91R?Ifp YGC.0=6pLξx"!ud)=RZ.U́͟(dfbF|]g1$~pV '-({Cx
XMN pഥ[5AL%8!f[~Q%5p;PZg
WWE]ֶG͍|R7k<0	m7ʚ@4a?k>[7m"wpE
7cn&_%Z֐jJe|E2 O
HkLWRjtm$&=@g! 
I:` FpX H)qFi(R|QoyD*j8hphFbwՂ|`p :]Gn?{iYk֏o\]M]A5-W=$T.U)A-2q\N{*EaN0KRY'$<cceIVh'>XKZ=i9.~e!l`Fu]O$n؀y鑕hR`FXYǞhǢ!{(,Mа>gFDIP3[_w*[eIczLa-7h)5\QLryU`N|PW54t{ 01<%XP0A|e#1OM/
#\D+G-~YAv%
}<x	<O>N?þU"oDi^rnc=}Ax>8&?*)L\Ay.;(|(𘍴`T=WҚ:\j`]8ަJ9FN!jc}G)H
HC,ۉ2 hzS$]y5o7Ӌ{y%iSت*K2<6gr8.""I	>&' =yxcEU/f$V,ba6Ӎz:RWʜ@\]2>s!$e1]O}͑jNȝg;؟>d>gtqGSK ?4b4No
P;	?em67jke[Qt,CLrIxt>V6dtldWxN1A.ҹ6agE'NCHKW?n^kj؀n5kjD2nz/;ϲc	xZMv5$f;fVLRÇjP$Yp0uSZi551:,YB=cV&݋tZŃh3b0?l'#xEwn sL}E44l!ԘYRZn9qM~; D_H>q,uz`XՄ6U?0<"YIwX3YqH.c-X;@)M#LqWhc\)ЪQYy~мWϗ2\e;Y|@rdLƹl'H4	Ӷ ERoL4k*"l_tWDtI6)HdIͷ&A@F8pԋ!ӯy06:qac}=ϋ1	:-f
;qq=Z!k[urWBLFUIt?_Ax\\q4K<	1k?}w0f sǧ$lo;Ch#Jzup7鳒"U q$:t(|r"b?t 1'9wJ
J<!4v½dnRN$H}XOOXe2ܵ"S=5LA+6h<IgvUXkYޙfs^,\vk@<
*REd?7T:~	]=t+kGc !I6㯌s"}^_+P!{\ͬ=u3V'@eVAD\AB<e.+r4؈P2`$flf1FMy{2V.Z0ڰ<ym|#7?tE?>3{Gl_wpI\!.;TR?',#Eŀw쬱~zzWtT}wB:Lm5uȀކ"Ag`v--~|aእMsH4`0uktmx3kNs,9[5fa}HW`uZ-@<Hˤ=JӞu 9bJY|fd?~E<*MF6d[;!zh1kYaƚ0<sitJ[S_82ၭ}D27yzU6 sF+|JQ#:
 w:AE6D+
ky@6t\37Ej4/VVW}BΕ񃄮ᬆ0*sj)LKPv:A4ː"
hʖ(7ʀbm'tWxyo *c4` }C(R o5nQ}{O7h]wύj43r;,T9aif!9xjq/ '^WWkY.ݑȪDM8sImiaOo}ѝ@icKfl6\C^*>hosr݁"He3"n8͛B5ݘ|r#4o*|0Hg1=+wSM!5
Sk}Q?e6<8&P'Q/}s:)ɛRаkg_wx6ۋЙAB{cPmƚO؍*+\iu|o2Pz(&4"㩧@DӅm1GD$A2
Kpj)m^o' eby^WF1ǓM4{ԣk",¤YK@Yant|<^i.#] bJQ?|bћ9Gq;aB16/α"sEs	ǩ813YJ㞤0[+笾0OMr/Oq5C>VBjo?lfa24G[-YwA-LLo
(/&Gw6 z{%,J@qz<"'oW=;n.9,ddV'\,_v>G `gh5$^p=q
Zm!i<k(/&JE$7~e(QeF\[ϩgA>",Pags?0)#~g#-*榕0tVvoUv5,Y-B}Fzw??_
fmmQAzG*E1-^US,7$߆}?s/KnQ
-}vҿ`! ;P+LT[>JL:.iZvg$/B
6x}y(ԣbLwۭI
V9l
{L?KnW^BaHU6zZI
1Y#|MvΛ)Pvz>7+HeVbQ2[i` z"+ᛸMs0,9흏/{MDPzK]H؃E 
7ou~aUshSi!x1)qD6₪u	53q"Ȁ$۬p^2-w]TILKa~e Ja2
aS)>ӾWAiyMq@f$#@hZ.83Xg\װ7ܛ0.b~ǁeنDKRLv
!Qs.we\Q皉Z>O_?"d#:ܪRhWqw+@,Kg4k£[)݈y|z}}bJɯTB˒7UM6![ז@#+kh_WW!ױ9"8٧"if:l+
֌'iEtÍ@v`jLE𕭰dc1ڙ@/%
_P_ҭBeN	 c\P
䎻OBflZ	PIÈrOxY2WMTJuUA@YW7HO%7k)\_K3_mcj'nTu1)2`aHsY2uoVƠ p^d\o	%,E[
fg
hM1m[u3)(q^2HCoޱ  2E%YF`3}a,|cĒ*XbcP`#ŏн݌'5'!j
r[L@UToHG_gr#n$&kthB+/M4$
}F?g.ɲÄC!T6o_uQ8Ӂ'1LKAa3oI$]{`B$.i,-(O=8+măiΨ۹u(
gB7PtoG;.?xFFqa5v#\j_^ˈQYllހ
Wl@íT;MDda\d[i \&1Lhpb?acq6cz/J~O{`TWB e9Oy< XPO/|#>xM
qb>#0^oQ62ij:(?1Җh
P#sImd.r(vZJW\x,+4e6ݨx,gң A@JLs'~6"c	l2č5.%!@@ );HّF-lO;XHO49ؼv_i1pjُ_B
_=Iw=뻄E\9OjĥIڅxI/
!MLyl1lBE{JRz)0&}P`8:XS-lvu9\V]/_4WZ; zAȡ
҉id QFXEaͫ%D~FO}21+#:/]3=y?/_濆Zԙ5xn\xGC'[~&6T6wWWvhPzu8Cr6/%KW~+Jbp<Y#Ys礡J2/r\5Nx3T"_)HQSSUx<]PnTϏȢvVAWYtcoj 8C@,Ai%LvU0l{\ I$LO1:a%?>DV8%aRQ@&{fvX4l$<iNZ+D!Vr%Rvm
oo:k`_x28V麁MlFv^;^`Ge"[cvdXP$$vPf}kf%	ۊ _{E'R	?kWM"Ji"V(`oq2ќfF#2*V'py{1(aY
HYxy]| #W^3|M§Q@о~`ڥ4GǁE!/#j.sPKwSw(UC[ʮ+kkmbcE=W;_ɻx^'dV2wΓ7h y\3*tb[r7˔3~փ<=I?{l!YM?WCwAc0 V`$ӤJ}Y!QyJW5Itf`sɎ4k'ys|Jk3fb;z.B&:o*uRB2
(mF<݅va<ӔmV wmbxF;OIPX&,RHcMvZI*?%QIX~c2*nJUYΨ
1g&>`ba$2uðe*{$}>epVۊ2d' xӰFE9-_NDH
jo9fOA_l>((AYguJJKL(	ڝ.sYs&~2P	]$dE僩& ճ̙2?Re?k@n[ޜ	RmHgΰ"̗tn1:P0
8 fsg1-BKY>'`^9t	MyhSuKzY䨪ɢ)UT}( z(`N50O(1?'*Mʸ"OBsfb4L`9oh,ͶS6Ix-ȋJlJf#ny",FzŬtrmѹt@6ӿgCb&y|L=ŵF=\cěd	ĉpBFW	sya+	LRo`~6n~[f,e<عeç=C>fu×dU Kw#uk&(
J hB<W;"M|Hc$ΐ'Ef|}w^`{$:7՜,ɋJ(i50nLVfS$E b+d\>%0ӑ7We5aHoם"YO%9%$
z<<G/ nا<aG{q\Z1dݹޥ,HƉR2ڀeȘN
$+ܳ3"s[cg{G6htsk
/}@ʒ<vC=%1HOns˝$NI<B+]=ٹ5P*s_uɣV%37Aȓ`GSJ,5heރGAr^*_'xpqtc_vGcqnxƗ6P(`ZODD~yQ {Q#gFMȘ0W}	KCӈUw"u8z4fl"FnYwxcB ζm&xU'W3lzBr'3S8=^v6mrI6i3%i.k	%}l8BM]-M6E(dY=^BA[?ޭ4lf9oXz
v[oLe9ǋk_U97!p1;P -M-uz
E Pa/Rf&ܙCs=0b3k<S,U5*S+CSF~( B1jnE2z,\4ou8J1f]|5ĬtQGr⻬uā-aQ*"|ǑǱ{[i^gsr;PkV)Cl vG>ood5S.[Ao?EMmTwyjT""]6f< | "D*8MP*2[xe}vBܦ:ڂ!ck-T~i̋trXwK\aхJ-u߮)$q@BA@^boK[]oX(m׮<: nr!t{?$VxqR< _ܥG V!99~;PL*	Dz),É.Ó]UD-C'2w~NWUV
]/N5ZQC(o$_BRYՆ";`JULRj(e@AQ\G#UvZЕk~lOj!ۀ:lWd&(j.0N-Bbj猗kuo8]D[Sgb	oۈ9+TX ! t`]!!<>7{cP.Y,*Ep~U܉9?ZRTK"x]ܟ#2R,O6*BǶCgҧ繮T4Eow0'zec"{"ЊFݩFhp?"ԫb>+U$򩫊»
_Ugß,ʞvo%#Q9l\xQ<<(-b~
Vf+uUubGu+}B=B]uMB5T3wg[eZvW40P3E=Q@!L I8Ĉi[Q)%qē6vtu}HSu)Zmrqϖ ~ºa-(ƛ9nЋ`DNuhK٥ؙ*Փy;`w!QIU'WJT#Sd[L&0`mp@Q[s횜Iچ~a	JJ̇e,/? !0!k;`.֧1*`.wd2k~ϡ":Tς"2a^FvP깮喨2@˝W[Ϥ@Q
Ac0'Gr~ꁉnATRror顾6dQ 8͌h(ooBr͔ ,cfwyȆ*UTwךӠ!V2k[1ޝ-U9w!
#3?FH;=^ t	= xDn1t=i,#5&Q-̦>' A
"G/"`:3#eӎ&$=xwOςZcPP?[#i_OŇ5PnQr?2ĹmMȑn>
'Щ1_3xxkPa
S?kTޖAT-g0*$*!	aI@$^>;
PHV(!Akӡ218{}~|^ֳZ #ko/&k}{2yz~
2rvQp=@׸M*Tbb1N+ʉAD(sx2LqU梏G]2nKzxZM3ls@}iqe6>3F hɒ41>++%goQQwNmWAZ)ir<ߏ7Βntt40*wU#^KQe:s;};uIEڔҟJb!=W')^#/
y~T.iC4|R45GQlkU,Ect8#S>Ymi_mq@Vjwg0_З!j5XܐHjP8=7]%OY~LLE=Dك[M
V3ěyg#8v4ùLRd@A=qgJ؜ҹ;NDQȇ<ћvуuQk7#܊5f5֪ht5fV _a|!*$`^݁J/#5ro0=*Zp/tELЩ]miPHib{kS퓮ݦ093ǐ*5VpcmI<nVrCu
2Ity@,[GImeO?2?'t]
C{R}6B6VA>3@m}i^<[SG\Lc6/jW?w]"NM!>HXAUX(٥9nq9Q	;vSFlfFs8=%_P iPz\gSLFwe RynҶ/RʇxQIaơy_kK]t7Fÿ QAl3J"Cv>YF=Yz Ns  "䶥fqLI	בik5#ϯ9axiXzN}3=\EQKƉ"9Q w0]%8\sD!Qa(ֶ\/bLSj,0Z/k[Jz'Fv%n*Bt)Ă\9bD
JL
v 	Kh)GPf}L뾳w2A1r`IlL}r1wH($ֵZ:t cQz"Ye}&TNH;gMIqw[BG)l=bv}2(Y64Wc;CYoc%SUQ׷dtq=/"r$ ]D!Է=AѴ3=EO8ݓ6."Cd+ڧo&n̗W믁nDD\0҅L<KcFl0	Z3[%w6_OQb
sg{~缿I$|BzqЭ\xbv$$B
^v%C!*uL,Lcӳ2sWkqs7
- l܃L'X|82[(Tb88"bҰ_mBVQjŰʾx0o?2-kLAN ?YPgZO=3d\6k\)`O7'+ҜN69"OTb"0<h$] >J
t
M0~'Ocs~9Q1qLM'fZ(X[ZP\0Fťq`>폨նx.r9NGdaaUuBC-Y$V`.}O-
ݹ:Ӵg7r#/ sXC{6f._[K
Q<0تYOŌz
9DA~LRGAsΜnSw#&Chp,]&PM$2[k9_*VeIR՘P+O B`|BT14`/8r0*mXt[Su' ^M5C ^јI>gAb( 6A@cGT,O-j%Nߘmg%*X6QKVYwJ3;+v}pq޶Z5Y| Pw9rPr=\+4i쾗ZR\1Vz͸fS
|iVǨ:_{X 8sTqRKcĜskyE-F$P/svX*p&ScYn
W#2ο'ZHLMshse2|Xv`40b!u^/]Pq\J}9c=%%yEi.uC*I4f ` QH)IVPi|MIxe&GvoN̹K
YN|iA
9)`Nॐ
kVٜOQ]b8INeV[P*/AmÌnUgh
%x\dcIF쁭Ixes&
o?9L6Z?Ix!l5{pZTT|3~7
XngNyx[~T@:WQE
|0]V
tD
o<F
~7֌n uEXMŴАk;,;3P]3}.F=وuܹ0_Tke
;.j}YjK56)iVտ
aʷ+,wxz|&-{#Q_"au8̼X٫X*3sj&`F2kN0[4«޲~R6=q-Ⱥd|Z"av<jm`aHt"gugC+DiuQٗW[[I~'L*L8OK%OCҔ谰 <IvʦAAZ:w}*g)#UQ|Wd	gSn2+Dtz|#,Y\+y?lT|DU* I_{9h;cDbP. ^gH»,*e`Y+33;&
/&?l _$Yo'8;< j
h*l
HϲKWD	s`
Y{MhMMkPYMDs|4XWUv99`#Dn4C"we2FdMQ9Pڃ,
4.SV4[R@^U\x
4Ң5s'4#&Eh_
a0+Vf#T!7@53R#3Ύ1DmGʡ-U'/
h5:#x"c4s&#0юU}OVޥ Yͱ*awo0ҼŞ>Yھˮxk穑_;q3y<⃗]g/Oav%GBt<ǹ-gRNޒk1zpJOۥQ(L*k#zߋś.X֌)ĖQQUFz[mC,"a
u D][N%-XfCc~JglYϬփ]IlLJ mi^o4Bm'.E,V^w2ĺźwӶΐ(dSJI ARa!5ӏ#15>ȶGIV+0h"8\NޫQ\2j̺ZdS
S&ƬMAl
'v/]qoX
edk7\c	tYc}J7$TM]q&S\Ls#^ˍ`xj+F=)&fpT"poȾ	Ip&65CV-fK4I'U n!S*蘧C(D[3l_?@0w	蚽!:38x̯舘j'FH84D!X8ouT,6?p.]ipFyl]fqЕlu\ ]W.@T]&ہPxĻ?O1H&i[R\E}įuO@
VܳY]yg<dX@ G:[	;ߓ
,]3OU=lf?=pA2.IڿC~9~gϩ0{PaCFhꈿֹIPo#@7mv;wboU꼞=XVֹWxɒAB{H%LNI ohM`M_{-u$2(EBlڮzHby0%d;
ۉW9CF~,#"hYKu֛E]6m"KFP>ym(e0Y9 \	\xgi,s3!ʽb3֙`$`hcZu!R:#k"cc`
(s_ @92J>#f&e~6z[׌12Uo'ٚnbC
BY?W<$Q .\z	;ϫUIBrayRv]$CHDGQԜ-gS:me
+ 'gRp#5QTNLDYߧ%ߔ`8׃#~NQIFZf*AA
CkInM*r(ؗphkKC7+UsG4o"g
T{E ^7$s(UggmiW0%~)$rČ/8dŪa%"ѷWM-&jzPɥi
@J^K<V2^"|8 ߨj"*NީS9Dj +nA`x\\b= HZz7!d_'X.}5+ɕwqx[E@Fzx2+wa'&i&ua
)U'uA
#ו=8Þmh=X&!ړhi*
:K٢o|zvf(E4opgaZBsD'j9ζǢZl(kp&^xv3_
~@}5Y6[x~24X!R7a൦,36ggx(!#
ِ̏QW
z!M-]r~W>;l0/)(Ԟ<Kspgk@y2\iHJ5Ey: L<|`׋yGWj<Ւn6ɭ%]j={wbk QE[1@]LW4Lތ<mPw`x5.X!4ɖ0otծhXwRHJT
ֽQ	i
9ff~Y`\v/XʱFi$2y`#PA}AI߲a:!yl4&
&n0ŷ}zEǣ0TF$B|%Șr@aMlH
ui~lȗ8o @gQoa,}OsÃn3pK}!mjkJiIy0B"5"DLHT;,&Ȝ!@E5يS <
o%Re9Љ	;
a|V]~lgIuc3}^kc`yW&+V!I:N!a-)o[C&{IO^1`Z{OVȯdu_KUN>& :5
cfv1p%d짒ಜh;ti-ґ	)lH5ZBĜCWi8!˙n-
 `|nSp.#dNZ/3}x4׉i>&[A*.1iX^N%^bdU54n fF5vr8k$ǒPjF#WK"UhXq+ԾoIw$ga"y@?Ux]: x9|+bc=&ldֿ[-/Q 7וnUUoO~6ʔ/q(g9J@BK<֘ L /<s8ʜ\J]1#
zSz[Wh	`+>U^-:a
A|rd滽ªST0_fV䵰<48،fTmRymP[>%4Zd	MxsVTJ{H~G5lwX={Ux!%n+3A{uv5EViS^deեb&qk݅9F)QCVw^_MXeQ7!<GhS@GRMY]ah٨rY S>G)Иf{	Hݑ(wSdBP2w{t5rLՑN)
5.bz;jdf[919uaEߟNnkՈS
U	"qDz+#>U_n!A'"K٦!
FKDYRUO+ªad;ͭ
t6G"7ze֔ d2#yL<it	Kpt`ͫAvm
4~ JOC	,),>|?o=
tqI5nGâu1.7r4#rEJKTs"/D0YC`;AU^[oC`ji\
!6	)@)`khlsA[}3K5BΨG͌NLe5_2e}rO3
sbBZD+hwPlh	Rr 0uVC")5kt,%N.tbsؘ6LVDt]$sĕ[B\Z#Yk~"[kDӭY	 =c?PѲg4kaUQym.KX$~HƜjB!i)W	k'0@%pD>6ğ吮.eloeyGA_a6QT
)~x!bOWXeÚFƂYa_ĳucaO
X3J7xAՊQCAZګY޷0}O_Ʊ(m9|O\R;P!lz!&^G҇NHhiShQP:!u6Zg3/J-w+u'q<heb1;:xm#ة^]'Դ]

&H'킑svp6tOKHs^[b.|Ċ/r]aC7p3]Ѣz;{vVPc{5ݹ.x9͓32t
糅`à掂)\(Z4IGfBэlxMG[3.^^(,/v1z9CX{ł
U+:\&c-]LQ^piav>R=z=fsnf5'=PD}m_K6tP&!OR%lҌEuGL?Uu7uޫMNjVbp.2fq3KŁ?5Lm3)$٤PAPpLEEϯھV>FDz3Ziz ۛ>.6a1H>ANt*\tfrFKm>5]1ˆ5T|~U8tpt,St-+=#lOhgX6JRz{2<k3Ah{]W֚㓑"
ʮ.Z>,1)LN~ܔʵXu?ʫO0èPrw
9$v6my+_y؛/x7N_`8;+8rVI|CMDfr_˿
vP\ن Ԓq}ː)$MH8٘!(%+
\ݏ\[v0G< e"U3M*\2fŌ"0k.<SL?JtvW6ŀ++	phrE@geޔnlG}%;jfK݀T3/Mځjsf.d.r}ͯw:<	!zUq&< 6nw{Ex5$`u|혒`.=u
_oOΆۤ 5~Mp0S\2)uԫ2[~Cܸ$tֿ^4Ķ3
$񐖔ш$c*Gk,"\kD;6I8$Ǆ gmIŀ)>ELP?&_%/]V-^A/!*]H$f}*_[~A_OS
y=}Τb"ȶU_P,\	ZbXX*Lz$(T2\7[tqANd	/d 
| =D&WYyY۴~>k:G"ZǯWnLg,PM0
JCD81sԥ4+LDYCϻhLzݩ\,0s Bߢ@_ MHԄiNɠ_gX.U(Iu@pU1O±r<W<~
('{VRѼ]~:q"*W9l[ 66yJVq4fw:Ψ3S c<}T]JOiqxF,ERtu7KzܟK}G%P1!_Β1RU_DjUBnhBHt!k4'2
:"{hFm?c/xDNx!& \ziGώ#D+;ZPB7_A5#8W)9ϫKdCU
UBQ$%o?5~NC"XjxԠMG*pPoSQE37z]7/6YZў-1)ЄIe.guBGJiW
-AV;OB7NX'`ϛzȖ&p7R
,pj_gѥ=vDcءaQje}fwaU
`
=L&we]Kmz1E(ȯ[	#+|bƲ֘0]γ&:
ML2?prStRYImuO9J>c zݙVM}oqB{PpU$Vp|c$0]"&I~YkKh>Yq2JGElyM5Xs+Pv}ӋT,s,$_XYScZɦxKG,IA=1V1y;4h=^ i?P}Ԕꥩx'MěpL2n#}ƕ}\]<݅.m
	}*<4ں\gP| 
e9z4+}r.`Li53{p4w{X5^EcGB_
 ne^֎JZ ۮ,>BV+e9Ug b\d=@HDqW.TaAo .X=@zುgmߏM"Ҧ컵di6:HHHd0k{#	&q,xx0;]A7EO!EoSΓ%084q=]\Ij6O,?j5zī$AS7#^0_|b$KӜ[hlRT$@ux"1n,:Cs=19~ps*$yb~6JXeH݇,VH`\`|0BN0()34yEޯ6R捡Zϼ,}
{֗ox'$\H"}x.>@X-Û.j- Lo#	
t`ϼqF]2syfРXϭ,R>/`3gS LĒ+np}]_-­	DWaM&nX}Tn .6߱vs:>4
̆ NatETS1:7p{J'>jΝ&iu٭cIw1FŻ^CnK?B% Lw]/:̥h+hTb/Ko	
=s6gPHki
zXR 욢,#y p[60P8y@:BYviwCDJv%YRi#z%YK [	.M[*@ 7}Ruٸ ]+c/"0 Vtu6݉MP4z8=*62Cc B5Đ.V;:&/"zp{;CGyt|QYސ(7"r8yҐ1P?VyF-DcRSޖRe%"kڠ_^ya}c38O,|`D}58oe]N}wp	3S8q9 ->XE|Y'[{,I0qż)sm\o7 0c#􈯒'Omqe걫%BVK}Nw}jd,Lw
g(~LX;2)!E`X_#4η2ӥN}<i$qՌ;yMq]|M"-Bk(r=(
kfclSf^nwK<Vwx̝(y}v^HB{O^][5A(ab(bdFH?|VrꑇS"Uu$Z($<e(EZxDKdINHF%UwC˙]d؆pJ :(v
h/9 [a]gx!y'H2ύKeBAYm3f9`3|
n/=u	@gIU=he͕y՝]*aI-=F]#
MBt|%t:Bcdɭ0t|})SM,OW=RCQlϋ+!=sqoqgWGzu7agrH<J*Ot:^LKL`;tj8x\T?1924%%i}z \o]^i]R" 0<$7e<mƉ
ިg1"/vfa5`>TF8*@\/k9Ǝ$)F:P}MZ1^ӴPFp]i*	 EEy*` .{qڽv P=q&jdCMמÁitQ(ML:摟mG٦'cp;k~Z@}U2tMp8OΕ5mOi̌Ng>s7`֫Zd2RTGP)~[jG6ҩ&un!	VzI?Xf'L쎑7{x0r])+G?OoO#~г^#g8xaO+2:0ihm!FvMhRMa$1J茫Uז%8	;tNfY)Zmz,;`uGy&4j~@ =&;@ܞ5pq_ y';.o>bneI{{m֠1&~fzpdhQOzi	IV[sc߬	mk@1yGAgr=ٓnRl9VYYmw.)8ʹ:.郐._yaͩ;ThzŁ#>?-Iw_xN\"hg,*9QТhDHu)Wbo<m27?zZf/yiO2" |SMNNOP7nS`lUL<ygdnۆji]C4 gS>wA !s6!VMћWn
KϱI{9Ld=7,zauP	ܽ~(>IS0wsU}㈫f<к..e$J9A@0{GeL\HdՒ8Pꈹ׺.	JZj
xdGcKɹ[S=!]cV3c)<]ޙԵ>yB%t*ׇɻ~6h80+V"o;ҭ^ RoGNh${
(]7 K4@h]<3IN m(Ekz۱ba"X' %;M;Ɂm403 {IvpO=!{"<kW%\."_OsBJ;g\q娕Ct;ai_)tqƎ=gkֶWo8Fx(a/}LPҊ>OۅYLg_DxEhp`!L*A@*
kHt+`/G|
 B(Ȅ!T|й
2cbCksL3@՘
7ІME	'lٮIM'ޣjL~=Ĝj!*tvdyU04?Ǭ?p
dk-&G^+<veb4#]!p~!=d?̓D}<R2veev\	xDK'e'v+ƹ <fnE6eW@X}k/,ĥ-shS3y㹍r46Lq8٦hci k ^^
GeQ5S/W{AT]:(nɼ {Zyd]hSx/?uLt=֯|Ph
E?T[onSd8ܐ~JNB)&% pNJZ(4mLNdSФ&!g4d21B˔&CMȤy<in$OfQU}V[:Zv3/މ14m

Yz%^=LNN
zz|^Cx^x`pAIy3V~2+hKX9ſc K]&ۧ:ws
UR[r
|Z' `9xb_#pܱup ߹Br<`(aTC*տ͠)74|[ysĸ^*3o׺i꯰t9ʐΓ6I7(Nxr_*S4[6TI2*ҿrpIIuB"39ATWe{Ysx jxۢKrB !
E*ÌSվ+\ɗ?lt+MXZ0[]'WR'=?\Ni|KA73,;w"\O+[-yjs@H>]0	ڃvۮQÂj%AS;3@!JOi1hxWDj;5c2w[|fXHhQ19fsK<XЖ(>@w]ckH:yRVdh	W\3k[GXYy pP3EuB~5%yb ']MblK ń5AX%0W|EN|Atv[@wr['[~n^-ڵ.Fբ}iA'bǬέouw(4je>Kr<hJ NsaBJ_-$
1_4V
=9;%͗fF҈Eum$B
Tߚ83k%%Le)4$ FC2b3*$PzVG/x'@U"	1vᥥ<nI4=y<F 7srbWT%4ϭm;@KƊ~ʖl6	W#M4
FF=5[G?r*h!'-
Pe{FK/CK&%ab K6D؞{%sN i,gPѮOtŴ3RCGtRst
?rpج؊;0;Olc<q%"E۷*J`L`vJ+eB$	
L;:~sO8ds1P
X\!b"@g0)vZZma6"u:@
,,hQk"*ŝ4Ju>-I9c$%]6lˀo|ܢ{uU3)cv84`SV_K0i(e98 9m.iQVs5Ws=Y9^}Gv	.q;APF?(#d(Dp>KIXn*56-hIl[~'B)8:;`~~3
sk8xy_=$}
2	>t;(J%>HhA4?a{Д_FLF~NW`)+
 `ՊT%;/*]QhmJ"Ò/e{a.I`b5%+z9J{蝘\i+~p7cÁTrS#j\_G{aѦY	4P'Jt#\bMU_{.r:2솁. 1vR(X7@˲=[Lʧ7%b.9G0w*V0@WSYJj¨,řH ݼ!@˱4:̎CulJ:eH&LB2a~EFxP9T$msKnKR|5kWǨJ7yȖA6\Rj
ձ~t-lnt4fNEƶxpiU_F`s'epJ$<DtSCR]oCD=ӻ'a_eEj
}̒29[%HPgOX4]=eS P
SǲLg{䁔x757	RI[ݮ)vfE8K)Xcm(/%IZK_=C	HƏ5Nd6tL
_P2;*F&1Q's:(]lYX%$:J~K{:zWdZs	OE1
Y>wP"&:DئFڇ(o5--v]Ƿ^sNLIN:GJȩYW?
JV<Eu|h]"n\Eiϋ~HG]P3)ݗ Y#_=܊|s^In
+-	-/X$>}omMsMFfmHpkt'٭w[@iRpb4x%O%3~
9~]@%YtR#g8
:Έ/<Dsm>G2*ltRfDQ#[ւc·4B:𿿘d0`)$adhWi2y ?+~H\KQ"j wlp;L)\#pp\jxGbKVLCw+$InQp[jLVE)#< (([8#٘S>ڡѲQjy5?
vg9yT<Tr0P[2[:xjt]fw֌ҡ9B{,4|(7/ӔW&z*k1z='[r2嫉]
^0Z229[0z7cf^ϥ4"^QV+td(sd\䄩^dT 9q
*"9ɯ~ϛ)"n!%X10Mg-P}~?X?:PEXw-WXSBg AQ$І`AP:f*ąx2I&pC![ͨ
ɇOMyRgvZ1Ժ'@;!Sٌ,(ZNKDWTBa#>zŶ=a7S>2rƚΊy	kg^0oqY_PMQ.
w s Ժ[43C8/h.<NJJj\wUtMEȎ]A%̓phrH>\O*3Q/ʼB)W/
!zUYx4/ۀ Ez*;"{"~YD}Pu:V59Q1ЉlHtjȋ.钗7񩨁X8g+U]Jiޚម@b=5!YQ#]ȮF*(r,Î+!UE/?FbbOyZ"=Ԣo#$~o	-=?lt<<#>Nk^JryA0U}mpC{Љo]&
O}#Cʝ[mhhY.ߢ&eF_MձҊuS:c`Q`nS.|^Zogz<mGϩG1Iؖvj5e71ΧikLХg=4(iM=SYG^'@h7=NjzkMӠ*\%_Ƌy/oPp(*VM1b}B'FARt!򚛦.PT@oG_D
.E&4ftNxLQ{;m!Y/X̂8,fphCiZGz~gz(-:9PkпYi1k?5gOq8QCBq_UtU6#.0؟S`z!7[@Es=3t~|pDRC33P;{a8Fg1_Q{Z2)0JMcOec
ElJonG,y)<}ҩK{+l2U=I:z2]uZA#PSs5QC"uŧ.G~xTj1^hb/U;/o#ɔ]7aTl+ytIF~O(4A$YUm{QI &20`E|d8C!mYM&^t`;TaٕLIWHP=?w膄fo0
6e+`_"3n}]:Y# ?ԩ.tE?g/l D_+)6^?c#أ'gf8@JʵpaRv5"Y+E]Z3B	ל> C!ėF-"ʗ4/yEeORrT,IG
UIPyb[w_?H	tg  µMtdlBAbFÐ6Z8L唀
A$w|]%[V/\ZD=̽D$qgŤ]F7DZğ&@ʍRbE+CZ;ҡ$XMWEP*
(O1B~a?Gxy"ղqתߘ#FK#n,"{Dl7u瓶
7ڷ*lPyelA(i4I\Ιܭ"],?IX",W$fA1VC6W6ÓgH!eOP@yޫO+.Y.M}<O3c/3wZyv\E
{$P(rQn%6
$G3tQQ'e
TAdgxC Xa0,
OK6*laϕTG~rR7K(j'+}ϙUeI WHT&4*bp@vxQɲTbnHJPJSEM(_p6&١J(8SwXrA:5{ۣFF%/(+<^F:ݫ^gQE!&Jz(";
`dI;ː#a
:#+~m00¹$"-yi*h4E]/u&q!!aJy
=AP
l%ʋ:0sbYU8Ѱ *֛ e<b5xA\ȖAԙzdA|9&肟gSR7U=Y7{Zv`r+7f=G(LFI_ٗdlMGm1PKk>ېU7>`;sTAڅU;(7q+ȋi'|SLXd[(eh4Yۣ	H&.2<lBƮV'~	Q_\;:Pc"I3.U&|I#݅	D+!Jgy<%h2[der͈.]}.]Ii,1^r#	S
@nG;I5CIU	+5\%rև4V"*K>ǋ޲~Ʒۿ˝T`NSE/6<t)i7)p=z=%!-6߲&pڮYA
2KkE益_=ȋә3o
dy0}'1rv.RsƨU*qmmgU]z#b#Ue<v/ps
=5(TS0o
 rNqTd'#SS~H[ZҰ
=174^cҕ|丘/9ޱla[)q32dG0Ybz_V|QԫZ6C',M)D2Pvڥ3ō0BwUP:%_-a@~ObD<=v*JDs$h6?ZCrƮ'O>"Q/|vXb7>EEWc^!R-r0I6<j*WдVpVFYJ",~/aDfTS
dƽ"DfV7o|w[]=}\lj'HdT68t,Y<"УevO hqFqZMVҋH'j&vB㡸	X1[JjTgS
*!Q@9
]|U'6NbZ	bOWXj$;hxy9=4[5
QTXߐٍZ]ŏ7N;$2)>.z&ilӷDs6%[䪸vo1\f=)5e\e/'*1պ%c_Ӎeiu>:u$x( cSY${+b$UYkarbkT.Y-mԅ*y6SA"yNL=KБy"#/D]Γc}Q#0dxbY>g2qze3k9%1UU2YRZsٔ	_+,c#!dfV&Fه{
i':(QxN	(qdlzy?BVUdj~;lMNP?=Y7s:Ǥ)9Tk3ND1x-;'=BaԽ:.0mNSq4o\z
uYL2rR	jr5Tp`l<jK'^GYEYst^\ ->!N]uc/͡6g~[k5,ʙDoNWTy#<S}>i_B^=l 8_(y0No${+Nf4
]bMhVxUutzqfXuTxHI(.i Y_ ̄uy1
Ǣc%Ie,s܂AY7u||:&_^-~ɁjXvRs;*VdNH[~{'<Ҡd(ƨ?	
I͐d.X#B  @qTY0^?Ht9w}]/ޖ%MӉmަ
 B6-,)hhDc=0	Vs8ZCcͯl=/u[
wTB
E{嗱JX
M#osN3cOٛN&薣zAIG>`LQ<g:ZB),sqyL
v&ik^lҽH2*߸V;+
;Gꓫ)ܻTh޲A582BH?a@cPq
fȷxh65 
iqmp-$n.2\9rbPTK. $#:OШ#g{gFSZds{YiolK b@ɉ0'N~je,2R.cZ`}I$O^}
I}w;LLu61_tb> JbIEsٞ
Nry*Iv?Lf+үb[]2C, A\]C	`i{)I$'%9ud/%FӛC/LH$rr(Oaeu @xB`lt8]&(湟?
+򺳓y'^ݖ<O/x_B:d_k'+GaAS4NO[[u{O"]+h[0jটs"`a*x\G]e~Lv%g>[馘zb8vNZx-.U~\,^x|~HsLق <fx8K{G(twΒ_Ge|wW7j`
d"f$PV[-/b+=yZPuܷR!+WV֤b1cnvoX6un߉%u?~u
b@}7
 >n6>pY%zgE]Xgӭ/BFv 4Y@PK:fAksialLgI0?c
CUL Vr9CA?/bu}f#sCNFK|{x4 3ׁv꫉%e%@YU<4z.h!6|މ~*O3 ~Y'/G ȺD6F[I1.ob$hI-ѥ>bJ}U߭+J?>.1$y]uI%)ۈ@\
/Y*KњEG^Q`7@ fv.8c)iGtݞg;ǇA6!`kA4<9uKnCۓH7!r+~m1judkH3xy K}:vAtʄ[jU"Ob\`	dѴcm1/2)ӠB/ƞ+Vh̵x0?vhUuuH' 623"7Y4f]ʐ@B5yz!ɔg
B61Ȅ7N1)
E4+pJt%(pI҄$|in^Ax)Ae6OhOl3F}v:h-
OuH꾋i<ߟ뇗/AKh1eV?EM{!ޗۘ󘍪=t>{9 {%Aӧ5oc}ՈRvz]&JIio5Z9J]۸{3ZiѸnrʖAMՐ|xۧc]nEwtt4oJL}sU~dk~2#j$bqt2H1˟YI;unV"q6*_,K^%M*VOKB'G[ED}=LG'Zr2WHʩ/p춝f0ޙ%jsZ,MZXZDAscx '}QXp*gT.G NgZ]ۜYC$?jeua~ۭ.fNw{tJoQbl[.LS]o?[?s
m'R=w5h#Fyu!ҞFw-~NNUR8|@0p4 ^\t
CвHe
nBYJ2Ͼpgj~Hr]@F:'N
QPW<Uo,~^*Sx\׏^G^i*4d	G,@aiBme2
ぞ;
	s^\;#&cnrAZޅ:[!]蟾H?*$+*ߧO"C?B62JeՀ-#:ce/7Yx.8|[[[otF'W<aow[.6J)jA=!>y%r8=ap9"sQON!4ggMZmЁ4桄O< &_w 
\yP5umOxpB
@~Rkdt@	3(gꝔࡋӴ/1]ˌ+	$^rTKz愜.̘ԞA{ʡg[	<&W:X;5#.ĀVMc(~թ 5B-t=Ku*15FoqH*Vyyz:6T=M[%pOCZpeq.}}]Fk%(ey,ցw\b}Xb?W,6n	ڸrR*EJqPMͧyN܌U%:Mr8Z4leA̻phWOq Q2&iF.Q+d)CyFhg7 
uY3%P쐄Sd/_51E$ES=B+ ;Sɂ'0`^ȵp0-],Pj`M9KԤsB6[FH4xyxS(C3+(U>ԡ8shHw|  RoUqS|ڰ@;>:a%
n&q;\ t"1 ֵ@Fl?ތo2F
u3&2ްΜg5W\3S۫xa<۬bZO\ۥCC@Dv։MF[PJX|,>Tfaj;'{$$UW\QUD{Rg|[Tb6Hgf+a%fJ3J[zأaL@
0J/ӑA'g9{i9'n=jR&^f'h`*T&|a7.3X2Wb&#wOHBo^M9JkwЇ+m`
]Kf foZ|6h8hr)_W{g|YDi@Rq@O?h6:ES.Ѷgns}E8nl)d25L=U17]q,[13,'⎿AZ- ?Rg`~N`u=`mN[J(us(s7atx61%D|7s Ck32NYd V$|ZKdb]ĖfsE6wsxk%׵'bZb29#L{<lIYV$F8Ñm'9_C0+zgP^m)C8 ":HuETH<&X/[: |C0aŦ	=Q%.<>RD+C3ӃRO6@7>	>92UMbq"blUybpj%>cF|%{*W`N'U"+9޾o~Nγ2$4I;wPYW;hzEyfWO"Io
˯yf1CpEgYᓅ> w$[ puz#QB%
R BJ/ݰj}>H'>F)LFCMuKʛKGwqT1<ӕF1ton">-ݳYlgZ|;0 6&Q1開%!2vPLn	4P%XD
z?THo2$ߜ\kBĮGYYO&uq>R
BZ4|#wpgUƗhHoϷ%)_槫E&5xAo}ۻs ;~'aJ0Od>E5Α4\G8lJy^\A64>TjWfK]Z%t?U
,5g(i«k	\hbvYK:d|Ge/!NDwU6^upC9"[63a<Oj8Q"9{Fɞcs\#&ZkT龗3Sb4.J	O/3˟G{=VG :LSۙ@%Sr*%33]6P(k>ܽV[D^FTN!1'y[1`sSPV&PJ@m7뱥WvCT[|I4Nvx#6o2g24*vQ#:p?l[;C,2r_wcs>X$C#/HKV7%塙L+/ %bigظa'4>hTJl8hQL^ۈh(?d 4 kg"YiA^z[]F҄<ZPp:IdR}脲,wtƿ?9R8@Rw4#Ҥ5xcF=ӣ̏8=@UYݍ#fzMoCC]' 669f\BG}JiVfZp`_!cavYu<\㠋oG!ewF[,`*z}ىJwCZj-5U	vVzϫ8¦@k|+vVvqbnd ӳ-Eȣ!	5[ywj|n"|=@4NqELpyƺHw
=DȌFm{mRv#c˔W|J_-@0!s>tXE)co#wd*`mA)<.-Yߪ	.f
PSᯰs|Ŗ˘Bg+]LE,t::@8CDDJ~f2Ilx.%DwrW鿈Io6tMV'c-AMr5SOziiYQf]џ򗌒a	5[1yW>^&Xpa_/x'b!"j-idaB_m@_ػvr Ӯ!N?%POymW)3m%0t2=,Pj͘9=%[8㐺n# 6lw$j}S[Tȃ,?n=|UghNQt%o7N m,XW}֛}v(P
"0K-SrwRe $4`_RJeG ZTHE~%UuGC/d G'aQ]wǭu(XCAy94LqrQbD}jGCiEoj(άG
k	C/(G&XN&"
!/3FKcal,)l ^)x%5-nt3ڤb=vZ
#;T'dWTݟ	ƶ,U1-kbe5 S	{k
}3 \(3Џ	5iS kMП)%,nla6XLJ!H(a4Gn͂n.DHT/~,[?qehGѰgzx!LJ`@(jf7B\zNքR ;,ācZ8
	Q46!`نFf`=PczXғ:nf|il/XD~-(wC&.Uc4
RL|2tNRZt%9?yEhXdԠ{ymb>	,}b
Z-cޝ*NoؕNsVc;gr+OyU׭W--]Fp#wGt!wE A*ɺD\Ybו,Hg 1ı*Q6,lfp#۬8m(o(.)iWhWMpZ ViLçs;( k7>Vv$f̜QGÕfx.Јtn1b([3";,2Tԏ td#7&࣪Áè\bD+[:AnRzĞ2'9.Q!c+FFE9&s	KՐ_Yb|Ao
x@A\ fAo<
xM߅@dDO/[\x~#
Hо] FrG6A'-,h尀A4>lX1FzV ƨeS´49~ln]>Q$1VN/sJ KvWѓ
{T^M4pnack#e\ORj9%ܞCkYD?]sBsd#[OdwjTqaNdۉ&#85#f<3/ܯ7Z rHlc[XDx__4|$W0Um.d2"V8-KȢT0¾r'Fװ*Coh{·(b 'XOzC
 3gR|}a.3W8`mź9uX߭ԛwMd'((6#R5̽/3R	?^_יY#nX)oI`02XlM/uK6.8إf}\?ƴ/y8aO#ibGwRR)%Nsѻd] )wזN=15"ԥCx:BfqwN%t t{@Z.~'Rߎ0Q"ї$w񣭫L8p][)O Hzż/%) ,})wzd3/mk	G=`'커 hO0DB뎌G\9.8b h1:6Q>XSM6=>k$I>PNڅBP4ͣK.Z9ܧeE!q
aԵд<ZZ
դ)V/aJ[C|XOjxc3Q}$q|j_y3D{h潎u d:LXiS<L^u`lLE:CGKA ߟfwQ}Jk\>y\N;&͛W}?S] -^'݇u|VROos8qQ8rLl(r;(o,zJb(K1z"W˥^aMwhPx`:InS@l6?h
@}U~-r/P1{ِxׁt(G?@sHakY^_sL	?u
ne`eV@V\nJ$T
Yo1rkZ;%Ztk:$$ەNnv yXѸ,-*"#U}7?NA4ڟF[X`ԑQN&յX9soXwaܰOFm@$$S@i/	ҘOHhWVdOjbl~:`Q$u~lbί3|@uiK<flpĢgп2Q4LqX.)՗}ؼA)1oً2A&ѸYi̗I}VKX
{p7\	^xfJ{.1JB]ddb%On333O\qfn%
lq]Q01
z#?.4gGR4\ 2Wfsuu+LrHuE33	 =PeqhQf^Oqg0pWsj't,!.LVR}<zASnW	+לjVMKO7M8nQh!?m4.j`r3@>4
JMaZ
a#O;D	lr7|7d}X^lxXf="nڭso鬓n@6T>sP8!>-=UlcP̪pvʥbXQB}>L>NUZ"QfD^i0G-|Hij#}Ƹ(bh@ؖ3q,b-=(' >BXK[Q3׷STڔ*acLu ]8^x T)szf8`]\1ƶc<Ѫgg,uJy6jzAdmZL;n_߉0ok4A=V<8Ih84 }piQLi\HoPM¤7Ȥ]t@P4|Eѧ(umQ	=\6sEa%w-.pDi'q%VnF|+ev
vzT
`CUh6e #I-'˲I^{xÙZ'Efiԩs}wU|2}O}s$iO0;?,{45[ZkaX%\iH&k-yx{x;|CTQ7olh\as8/$7ݼU^t`#ŎY.`xfI)`lշf|{\>̙{^I0)C,z6ضBC[U˔q3<YOzUܦ&LzA"<	aɂKsMI@{&WՔeYgL6>W2f@,չ]зzCy%yi`%>hzSHU.B>
0Ly>p	si@ܴT9s4RĚ
q+_9AJ'_ޛFk{ܼKe\4j5TYjgEm(eiV
>b(#a|
0(?ߔr8]R^l	 C0f됴J!nƖZ|/^e3y%cDy;($@{adPHd\vWN+ u#iJӛ_k<QN&qMEƽhQ&0wL	MX9"b|ţ\;9a3 CZ`{8u; S$<ol~D<VvrAbvQT΋a
?÷256.|F *һHdxiWQA /&Rו׹0%0<ciߌv8@B0K
|;rxZFzZl,/ JEDgegݝIM	Ӽ6_័bZd%y >h0q^jۂJ	^Ix]"]/W؂༲
wGwx3T""R>će ǌ7$\JקUvP3z	E>YF7^70;vdjyghS3q79wč\82_U1}!lB<Ca&;l:;J&^k?T^}\?ݬ\f;&%BG3aP{K	X̷=Z *wdѳr`C$pJ7MuÔ/>X$%5!`C?RxZz_Jʗ_$ЧxZ"-"ize>;Iui^УYY0>;f+:A/}
KԪ`bAa'RQd[,z)DOu
U/eh5l+,Aҿާ<+/1XS$[ef-M1g~ IyN0	MЫiI+)ņu\(٭X%k?@ ޽8;t@}a1Lxe
0N.5L#B2#a1a^|s{/lWTxasVRd@sȣ3#vV{yYR턢_õe= pܼ%TkTOgo
P?2Rb&D|$#gh/u")zLI3hw/C7zېi<uUsX>vd$Zfxx#T'H7>W,PI.h0}.D2wzPtF.9$IVT_|eVϪupp`ӳ}͘߾^{!QŲ*n<S$Ck.R9]dJ?ԇ-?beV|9ԉe00A
h4W(~"z+f~	:!C{|]Qؐ<YN {s#φj*hE
\oX
/7qbX+_vn(lKM<,`11u>l@K,"Mu6R ~+".P]N0+w>ŔxUJz
G,jf3>BbJ#JA^B<rN* 2MR]pQ([KB@ 70kpbr*YW( >qkn"ADnUb#>LSVu*:r!0=!!SV:'uq̊t]VOϹ(r*8gű
lنzz}~(ƅ'QOJ'"uCm1ZBy<D?)}>Ř	 @1ُ"IA9UٻȦ+_M+/RؾԍΘUl;K}36q?/[r_A=,89{ci-rdsH
d95C>Gdڍ=
AWT%KD{A_7T9{q;WKpC^`+J#(:(^T`'ޱ ޜ0 0I%q%i%*ʁ&'sW
"SNY
|wg*5JĞ4E|ek4MU"+	P]4Pj=DhyyZg	9dRD8	ބ˙R33Fh$REp1|$CAM(ύpm@M,{DF64c"*q 6ԕ#tm&=:̽&/G/ڏuܪnK%5ucÒ1q#?	HNQܽ@Eydp 9ZU(-;t֗MJ[?]ç[09MWGriF[>P!݈n^WB"]b 9#˴\0N%9TD֡@Ql+g'u_Iu5Z$*4O*u%XrRq#Orru(ݽnЈPuϚ1ц^gT)}yGT{HE	U*HDJNUuhYecV"H畠w_}TO8~ʮ0$w	4
(dY˘.v 53OmC:!c:-:Ʊ~wM_eU"CXnyI2Cǋ#F""<x6o5>38LhOEc%|i˸wq鯭s?8~͋\}2+}CKLyIOB,ίgСKZ\y<q7bQ	[цjB)q_hjEir{ͺVMK*ۨ-"S6,5 M4vQ.30o0u-+=6
hS*F/!vPY]fgcQFuoۀ7./Â\*a[Bur~:q
(eˊ6_q
Be2rIu*О)$2iK>Gꕢ\)hI}q	tczY>N)<ʈLs@{@2{Mu?+BPXt`I~'c/bB+H>[OfTj<H!J e0UOv4cc'kAg/3V΀}.ӳYsna6Ŷ0$	 Qtӻ#ЕOiD_JRYbpH*E1zi׏q U\풿 PEl,`gq
E,f,T<pN[xAxb^wYjr
O\}w2o{ V."喅[\:r{Go6ft a(-bAჵ`,;d,@/71يDjib&qXbTªVeY&E	6#.8#[_~S2A>yGy	(j
+6[C{	,{7!IP벉)阃/+(hBz	ۺ`֡]qdOZ
{z	RHLپ5?ƵV鳯r/@?fԹ1 2^ ?,J,!oc`GD<u MH+;&]'=ƔMvBVDV$S)Yj1s2zqbM Zգ]2^Xs/]R`5ru]:x-b%ݫ?,19a4/S_Z:RIcpOyu@o(>!GBr7Վ
-`$z[aX9"Ad|D-4[0S6,ؠC
n87pN	O6'Qx<s2ѭjp=ޔ)2/uiQ٤&3
G՗
v,^ԋ8T
aU?7i{?CuP~̼:d'OdqЪ\;~ 
X].?H*@<Z]6i4ۉgжNe%p$6Bвp4\2[s_S ЄDƄ~hIK"Wa%qtWd]áj%عYsߔ||waA"/Mf0(DY%v×m
췵}@𠒛T{H>,8wwhg\Ol(ٱ'<8ۼV?̼cMs>ZOvFΨM]Gkl(RK`C79|slBE9FS0CyPZ[myM;4vZ7-=JZ
d'[op:;ڋ[1D|*21Ҳv{Wϸxڔ4 [uhhq<ۨU=%3!06=ʔSFc'Շib\*DTuPd׾Z#3/|wOM4~`ɸrɧ:3ĳo][d7(EKOnG!p*K oALY
 Bb^A%.rDЖ ~>b)Eb~u "wR(q2Z.fm0,*X?Y
}oܕtiƍ"(bـo;P^
>nY@H\TЎGҔh18gud&,$gOjXQ˕'AL2ϸrK_Њ4	?,
Di,հTz븜S
q	Vեn$ȫ˝n}mYڐsr
0$I&
$lŪ!{bUMU6@	FqvY6uR&r7F_&"ɫbLnpm5
XB>7fƤ3DB3i(ib } or~TYqCӻ34QT:$yp{ce&Om'lG9u/
*\J	[dV3FyyjX*jPM5cS.+) ]10M;tJv9%=.݉ϊٳmѩtf_TVĂ2RAUmWdD$g3MX@@q	x"o6g2n%H]6<"Cgb#900|: F\>^|=a=ۤuqGmK4WwsѴDed?X3t}{҂C4:/*mb#fIe:f(KG6$@<߂Ter˳2rdL	|D+!ܫ^DL 4d5r2+D4-/ۖ<و?OR GgYnFi<9'S%QOIpP+"D:C[0k@ecVf#Rv_HI¶uAK׹5P'bjW+^?$FuX_\^fJz9\L3ἚLVtcz\y6 &]:@یcƚ6eX<a1!7elSsi4$/yh3*h8zn]jyMPEBW#ocrBr?g)ȎQuWH&O
l`#qng>bU*rP[_'V
[yd91#f*Ր|Obslԕ:䖀Tw7Z|ۚMi20{snͥǓ͛Xs=o=
3\$aa+k}z_k3{=/&,lY>?7siSd7HHs	(ivג8ƙ`Rd銬֘[02_?tY] ҆ ]ŠiaI{m#X,]a%2&?F8]ipPfl$㫓NJxbI>.%F0$fEcJDA2}
CyxF=FR`[a0ФĿǹ+ܽFO8eOt6Տ[k'uT8`r!0YH&^Yޅ=+ #c퉚aB8iytk	`l-źx+ݛ̍?[u(2e9jN]9YI=
DBvaCWlKɂ2''xc^iLFdf^Yzޫ?ͣv}0x! Ʒs,aFf:p/Ojd>)^He叻nDN(AuKT&Dr;k|uSF`0bvG\i_ȗ>fBcTajXѱ23(dVȠO̩/4.kMBě?n^걲$3ra^=B67I;ˬT2v 3ڠHM:XAR|gep5#:z&ljS^9b\#:+\І	fONd|}D`*2uM<5T0RWՅu̢am'(0E",9h} YHE5r
SV;m5ԜR)u]z.)	Ih-Yk5:	P[-%8,fF!uy)jӽKeV7+cI$xsVk$.#HiUF)M4E?b
)Ux'&L5d~xJ'o(Y,$yvȚm5@\/e/gO;K!e_=EX.µNq>]C|[r[_J}E.*Q t@;(U?=F[`%L B] %jhr#%mIJN1*OZe5LɈ)|
m}Q^	~PوT$`ȃ^ǕI,нJ.#qIYڼUgqX>|JrXrOX^5o=*\<2E]	I/LTTԠn󔢐RܢW^fO1N7xp*'he}G-53&!hK۟
L&/">>L
d (qIT7.FT_MO7%'Ҁphe*1o5VjֱY
8( e D*|cJǠݶ%U&Ix橨x|QJV8*h@;3N+αwj35	m 'nXc;D$T_C  ;!؈
Us=sA
<+f+[%5ռ}p|ɊE&$N3`{}d54c>(mޡ8lK&	;,$P\&кpP_Z,˩Qu$ugz̆ޒa}LŘ{90*:=wel菿F>\d~B3eytfjG/D!{=Ά/:*jbGMNM:OBTTMPwH;k&ou#1uhyPJ6(GbgϝQlbfF\Q83VV5]vWm]qoCAʫ3w#M<u$#@ḝ>P1dA|?-V*,h	e@ِ)m[܄K߈HU_+RiN]|NH5AnShf> y+O!pf)>A
Bl
:u	(d*B<k9k }lzrgnnJ0]X/z?Jaҥ2Aov3=aY@޻]|񡔴
_QA0\l4&SW0%OPp;gNqkǭ>A
'\δnWӽe%^k˙|.w e*FBuɱݚ5'^Ah	.6s{6O(zCN\ʆ+OlbSlq/p:<XgZ+&GT5	lש/}WNe#qVf2hȠ"z34ꯀk>2Sۑf#ПOCs	S
Jn)-BBf]t~
.kX?Al,Fj.:Ϣ N@}x,AS;<Fqt{{ȓ?x
GƃmP[~jnz$瞲k/=*:R"9NB; nx(ptU*ltoHd쳉r0}4qυ-,
ABYA3IHt~7ldn~)]BZ=FvoX
-}o+@Yg==`T?D6
P_ZPFXգ|b͹43ÎX$A
ɉJȓ-뒎RWj4&%%	VQyMBBȤM5%aȮ.
r(#U\[V.\,3V¼@?P]|t0e;ǧ+t^-ض'(
h&MfdڻlNINDut*unQUFƕ^uzÒɶKt-u`/,Sm<ge.u+saSw\^ʢ%#E.if	.lf]Zurz? ICa/cNsKçD /fI' `6ѕL}z*Z@_.xx6?3Tǽd׷ ;hVwBǉŤaMwNf\'6c~Rk!hi	N/OK1VJߊW5}77{Ha˦foK NS an,}tOFEux
iW`x./89dgi$c6\nan .*ssZIǐmc&ɺ«0ufaee'Ixa
HGk
]ŻK9T0={U S~]AZ8[y2<3}Pd 
Ap)gJ!K:6])x8ǹeVVUkU:Sro,EqXb]	g;+bJhCR*}1ǵBj'*rG`d\ߕqrgr5k68vE^t \bĩJ&:<+Vqbb5*vR&tC8XUQAB!CT<(XQnuS~PQuk
aQio T4?DXaIm)neN	Llv?֒v:~WdRnn Qbg|-js6\?7¾j#dLXD$01솃xV{b_UTUo|<f8))Ens%dfA+.ч
\W!U2#8&a22sa6r1ж԰
2N^.|@QGM(rWneRMwlTbe_t[YnyhYT1='';B:^LwTs\ҡtȰ(˅Q8#bJ2P!9_C3a~A8ma|	,~%"jЉ#i
"]~Y@;{^ma#Z-'#M5+rp{\7m1/
4xa/khɡߺD8K7H e=-äPGɦ\ژ~,YC}8"SV,ci,A2zm,~j/JH|On'X1vbrZ}eQEx祜dТ
۷K#"0sZMCe'E
Qe<A]
@T<2\xK`c
@NZPM*+;\cr7iSE#
!i">̔F|
8MXnTu@\MϖVFjs+O|DCu:E+>	%P7ތH,>^	"pc|2_&mM{)tkeh_a!w;Fr@@eE׶6qҁ@h˔#M SIo8߀2Ary$&yOW3be\9s
+!J6
^oo49tA03,nSx&)UE^-.M٣&z"$J+:&U
hЮەd d7kNUڸS}UP^+B !mdz{!{B	c| )%kfV6GB_k<8c<~FLDY5h
+v$z>`ʹd)*VkXC`H٩,$qv%{AZqxʹI:PS~sj|H%9< *%
meg˲
56[7Oehq2?pwƆHX8̴ IOs
~q -jm<`sםW$wlK/7щxʖ͖֒KDX$m
ks#Fv3}"wF۪ŚhLz_`yIҍD6pO99!7#ګr'{@FEaUQC$+@U8lQ
JrYwfZ¼bG?(鴃 i f[xzJÅ'3t^Զ27ڗh2	5U읣{BNJW,?F&{{xR;lO%X\(VἔPLVHX0 ⸤ㅟ6l7's1[eear= eE	FFؠ@!/TlՐ2r+D)@4@˭/C!
K`i7[)NO*|L49P95/&#U;Z)	{O'f"7vr`à(ABa?Ķ'<%4D~7OK^|0QDBUm֡#(XX?zd	!N!V9"2Xw@mwE.)~SֽlQ^>oݢmB<z
LLIb/	4c̏SӦ7㡕C.Z鿄
fhjرm?G"YAnA^sWntasvKN^uiIܝaJ&ܤ3*CCanDTV^RZ4B$po,c8RȏPCg 솂04=;@./2;F(>A.쮅
D9+,T+_SJdk(#!	xK!ya7@>`amăg;2-T;׏
	Lne0=mHv(}S~̸jU#S/^[ *^[c¶IpONnu<
D|2K$!Pzz8	*aX~
C2ٽB/tbfј<$K[g`3	@ޖ4hVp>H%AiH.tYe^r3)ɒ
Q,jԵm
~"ޕo5I\a6ԃp:\lqeҳ%g>[be%PRS:$-+4ġmj|\AyE|ыE=grSdhq}؋?qG4pr?G):xLOM_B	^1SVYDuC8v
L`pYJG >S[tmQG7\2=\N~KwofFENpIҺN0c+G='taW8e}vʤ=03_3anNhu)	k1BmХ"T]`!(dkl)A;ay3_t8p+W7
emΎ   M4{ / ltǠ<A6ƛXBJ.i|Ԫz׶
erwiF3w»ؙIQ8_epmSvA }a8Rtϩ-OޗԩɿU`U+|S#,X:ϕX[T{C: 
l|A%xA5c*b*Nwk!<h0#X9:^р w},bIZgၞj~窪sSP䓕6tʝts))kIsяͬxM_xC0͜˶F{qF<]hg~tWGm8?0xJU Q5׀ZIl(Cp]^^Wɾ2
lg|#ҳU{^XSѧI4j$oڴ,żM<4ҘgjJ)Tn.证6pJN+)Aým
xhhՑ8-'yFV󻋰G?63æIW>`B)\O@ƬMY>f_0=m8OF`&@4npM2u#wE|syj^i$prbiҹE&G?s
Y2.Ś;êY%}`9h#
hx_h)=+I
ȯe?ho?bnB#ǏsĐُHBZcEX2	-;ddmp߃cIZ=ӪlI
SW34M7?@IO`l~Nr`U#FBxb+@Zx	=NtD	8טeQc^}bbtMgAI%.IP~o/5L-֦_`ټB<!(;ㄾ5ulAe$H+utvة)VTܡ7{>-5E
Gn;dO9 DHChV9J_)JJp7
y5}~CFHϏȝ7Аr50xj1tGD)JRH'ơސxU%R'l9\	*Ik<^52ڢeVE<d'X EE o֬ܔfhS=N%rYȄkݼ-Y20(71``$LfP߀:s8GgΠ>a1U}u7p̸B 7aH0A2$RGTYvQ蟃rlpA<9xcAw"KDsgv<Ke!Rr/hޝ2 T$-jNSL(	KI7`}'!2acO߉WR<fJUsif.ssfG#
ieFcˇnA,atJɇ8ĢEWbJʊpfTOoAzpy[
uJ?
hJ@.`$c{|LLQD@`}%Bv4&tax7!5Dq{NAR%NH B\R1H(M73.WQZw"<tҔCb<_OŅ
߶".=JJa?UVD	*31YD)rEV'{)BOf!?\Rۻ	7W(e@l`|7~vFM}p	0T}mD`ZtgSr!=$r#}blWqm}<,lbofS >1u}ލL&HK&dgb/*i*kXOR+o#r}zznpC&
@PwM
C߆k3cZ`%E#~Q qܯez,/}+~8YMSӉ֬!Dͩ_kHXL6sQ	ceвZnAfVʦFg?To#:N3;sc^BvNKa	F79:Oʬi]K+_t]̓p68f$U$BҨIrjfHS;+:8$Ա*<%{Q0KݜrO9La_Ɠ! 8nC?y-mOg vǫAA&HN+ۤJA"zu 6/' =q fmPR'MI;LK\fQAL7$
ׂ)_$Iut32)`]T"ۯ(~L4oꄮ!
K(I*&[5!8"Ju^ZG<GqyaOꆨ`BƷڑ?)WX?zO8D\b//J!XS }wwͥ;wX|j3?eqK	,!uWfib~Դ%J>ϥgɢRpEh@\mkĹK]kR@| c@7_T_H|y:2hGW>At*DU"2FnOC:Nij2jWP1'n@5PNA|]JUhn%\6JjQcY?
!=woIy7˲xz4{?]&^T+3M4/N$ᰒ6:^ڿz#*X\;A$0Xp~mǿ.|YlrWަ-bΡ3GH~suPm̶'tźxiֶL`
WZ2&W'ܥ7NW@q!Y9>cv
<D0
>f)4(b.rc\qڙ~sՀ.
_(\ϥ%$`o1TRTFН+#fF,=[;!˜u5=iR"UsɱŦ]ztY^(]akf4Kq#g 	vvPPAj#3БI	
o z!4qhl%%.M(C8ɷ)VZ.F8 P%~Q9)«AA(\$@+ζ
?1=L K,vf^]4\'Ϯqŕ2I9<I<	5$@$OJ`po
D=Yg'GUC10o8
y!?E[V= 3G o5,Qϲƺz4|SYMX94!{SЄԣL*' Q"t: `nY^J!?a;
U5(HG#xB]UUeCooz5&Bڼ#GE:&:7B/
beG܅64q5jKы#Qȧ2Hr.`qjW!pqM"FЂ#4H*spB!92;[UBWZ4%tEb3לpVzyS;
쥅IƳQ#>1Kן4ܤ|Z[ȥgN_m23@)92T?-O UCͫH?{ݨP`.w* n=rey;"(b[-VkSB\(P4cf|}4Ϯ40Feef;̜թиl9Re"Jէ~Z@x
aZ:ѹp_oEnFESmlcR)|[X#^^*&%?0
cRi$cO'Qu;V<QYhlL.9uQ81	0xJ jo&dy'i̖+#FHK_N芙}m?Գm^OLPFi{m
~_(֒ͅzʣmϤDMX[ GYacTB6jXP6|w,U [	8k:jcKUTť&ͽa}ʲ )Q#>a5	PeJ>Eh7=F$y>AބԼm#+
	̋~哏HX;P`亓~ogF=C~Nś?_	Ԑ!3T},NW=c>spU 	Z; Z_~	̛/Uw1|찴q㗣{|&ʼ@f+,^tGE4JXI$L\]?|Eޞv\cLLG_x#Wc3
AKL3	
)@X?fCP8(eo)avmS0z`{5*Sd=YBC3nj7vg>:s{%H"NEqFnN)[2 <"$hn0F'=BjnCƾf^F?HH.lZiǐ}<mzpBJ24}]##W;:t``3Hl|GL!Z"ocaUC +]	PP!WϿ Om@҈-debh^ɶsm+C}ŨRv#GEYͽJC&8`jZGƔ
I4rdQLMoQ
r(Ҋ\wS&w{X|׻|?--Xo`&f0
Ƈ 8'AuM~PA;
@da ;t\.$m9QG[ԦҞլB w<G}F)Rr%"^\3R	+QmIm819Ì}gH
ۭ*ty& qxZn.-D8O3?W'eYXb9F	&1¿\vZø1yQo7y$0J7X%+2QK.F>Q@ktzuP*qnQ8_$PeAeS)!jpdAc}א\0w.O,[ra֕zd\<YwF	"aoᐺ9ów} yVGVxJm9RզAG6B61~(E0cI %
A:KTPll' ".}+Nt]P
.n{oPiĜTjgKoͮa[8fУ7!Q>S;etqU7?%.$YLs7BmUmrw7hMT`aLyc
IˇM5CN6΀v=UFuk7F:dW}V r/]^s-Rn0-n^g4 {$ǯhx"R(TR&s㷺<p!<wHpvfH̂AIF'*'_fuף6%״f۱h xj6V|󂃩p6?&qWlMIqb.emRrJ#vzxm'ji{ZT7S0s}x;ۼMX'E {}[L=Lj_a?)Zx~єČc^Cl!iUV"Yh><a.+J\_m@QVbd:#'	j6Xɛ6Ւ[<;BmʙvV"3Y}uW
{
gWն34l鑄u?=gj sUlxsBb{cj(xJEp^U݂t\zwgsyl{uqDVfbj-RQ宣h`ޑ]MONTP&찦hov<b87-;<%/cpLEqD[Jm5Ûbe%K	P	`dO
WOa%hH #C:c,;IsZ߉oewčI^L @2dMzlQG䇲|Hk'lVӓYp*㏲8<Q`T#?Lbq WwJm\I4Jkƛ6YzS&fD+"%l?/W>)2g!m+1_@fں|F.oMxb
9 
dI~ !U+AG:AWOE\LCde?$!,b;=݊Ik$A+
a '̈́PJIU|{gn7C!GǗ	K
ºNlTT;=EmXXoYR}|A<cۧYf۔^*rl\B]NV +
w`lr-)EE䷶NY53Jh xMށ7Z](%Qq xvزOTm7csX1 #|7J;
H	H<2h/s&]ݜ7d"g1/3O#]z>]YDfήPQԠEv;y
 Wڎ17 6ggk)k.Y6G8)<;1a,P]~++F.A-C@.GLyuy.9},Vبux5ZN{H{*T|:t{󙻥E,Bl[#V?CkU]iw &jyyL`!ih6[!	0=-͂+C	ԟ&782Fh "8XS71_-0zុ9ъi[&p_O^WJ7C2!BeLmV
^i#v=`KHHHwfDA"RdknMTdźC˭h(~4H`=S*KHdWSk<07U!;؅bQy	jk5HJz4MKy 9F~֣8fX x_XsFOH>3aiƘDA|*(on* &sUFOA$۸)N#~q>D$X&x&;'*ODs&@]L-3@!l%pۢ+0O'V,cHf"V=\GLJo!{t׉Qg]yXff۹=Dga+sZ	bzqX}!	;+C`ح^L*иID!Ev֟3P=lF?+KzdVip>,]/kͤK )}G @Y==@nWH.$y{[2;4CDM79Yl79n^:)@N&;Nh+W˹81KXmcO`*54n
ƌZ.qv*WGȓZACXp/I|,RXXzFmok
hqafe.4$;F(ӥ5:I֍.v/8/\0	Z+px+'q@bn$.cV̻bp!XEBCB	m]ōUMݒ;PMRA*mLgTjGf5Τ1Qcs2oMD
1D|*m@jg#'b(G^DHP~u?jXae{N3/W-{2CxyC͎#h*2H DJfUKF)9*"F1 Ek>MO\2, O=:e	@VOPлIh.[Z,"6I'8cg.YyʉuVuJ3';ӷg.$axt˙}bܠo'wb
]	ɠ%)
CսM R?XkUHec9xa^Bg'&$2T"zMJj,'\yv8ɒTsʋ jy'H?a׮*6㇋T^	?vnvO(L%H2佛xЩ/7InS=Cx߾``VdºolLW>c2Oֽn'oY	ũ~J&58h
`^k!e2i:Oo/Op};\&X&+^cџXsmxfk3+/Պi63
sgK2Y>&I1 }3ոTẍ́{H˹"3{U27LN	h,Bgd2jEn$Ӌp{{bᡊ0ZSFN#	cr_dpH`k	?xu=p2w[dEg-ǟey\Mх(ؙ^=C'%V?~8u7z93ڝ9-BcZ[p~JKΖUUD T[1Yir<n \.tqcOW@xyYqA⍈3Y9ldD߷S:zv(I5yqoJö}0,g޲J BҡLƿ3
L8>8b	F<Y{k>nv51k,a
28e?.y\$`\ ot  {
`]	~/T=̥ȝs2RB 
٨S #{U )hsNeP^zZZ*p
BUk\>i!f@/)@{
U$ :hB$b dpCSP	{+{l(}F<9Q-'*}UϦ9ר
w_&	.L,I[7#[Nө=GЬظ ~> jLT% U3@^Cq;/},sx6/k&\	-I?y:N)\@MUCt_0o{H.)^mRkf{oBW.[
VikO?);CHAPpՅ@J9&HP 1Nm¢z<kWc6j	XUg-U;sDSN91w_)+'dIog`o	-c:W%as9xF/YѰkdTC.k,oIok
a~2
ɶ4yf	,
ݖ"8%YGnrugs*L=>0X*	x>.-agxrX]xJ&g<H(Ѵ{I]9 c#; o
Dd&滂q$3OT+Yd)k4F'LxŤOD
!
Xc-$*/rۻ%"/R`<D 3,ŷ
6B3pjP]<AZ#ڃFpAZ(>z٭~vKZBCI&h8R͍<q!5On/\uYZ㈇RJ)5M.q*:~aW&mϛ:MKgjmMo%fb$2KI 14xmϐSI%iIs[PTlr?#?h3,"ʸH	<$~lƣFo9!=ˬ2UivEiwgxC
2 z^}ϵV\љYv}Ew=: Jl,b|hj$"D#E\^\hjt0GpױNO~E8gO+%CR:	
U`R@Vٳ\ZZ<F0_CJ5c|mmŶN+[Ƅ^6c{">>H0nVt%3	!}7+S\ |Gy롛H푇PrШ/	Z.&V">^ު+R.s
#92M/ve>g&xX YuRtuet
LhcC!GAfXj bCo;8''UTʟ$M)[^pE;ٿ!U V2ǐ4L	= H@Tִl"d+
Oq5]Jj&lXV/@+gq7 d8!]#S&{vO{Io 67py;28^Y3!$c_(MaC]kynP#ɚA4m)L	D?]T|Y@01Nv쫊cNDFXV~"
EWlEа0MJ( Od}I0aPH1#||=@q,L7ǥ.% =Dּߥ@%u:/Ayv	0 =m$[ݚk.նزHr3~(M\p{ap
-)ݳnk>y^b6qԘɁm`|wFM?=- ?zfISDv3zðf5n7pBꗍ`Bn떒3(/{G6OVPQeO&b~$zrLx齮r󩘲!ڨʲYELŏ}JF,Oͧ}70p2?c_fDf20Nr,WtO_½sȳ|(WiWh{*WZ.r Tn}f03:k@KTqnL?J\
@Ph\`N
ε0
djr?q  uw
Q|9P%ّ+:֔QS|
k.gr_S%A3g;Ήd\Ma|yqp_9Ws"ufz4uʅVlTƧʱY<s^Lt͓"7ڿ׵;dˡC$m)"ǥ3hm'PxMAՖl5+FY8ږ1[%dY_:B;>d-2%]dMq>}Y'qtMcPRhh r6Y_Vm.o;vvҋV|?@"ރ>fHGذ6ɚ?7en <1@`g%\u꟱+d[$d5DKեpI_-Qfz,Ģ1.lE@ˠ8{&LӤRrF"k|(4VldmZ 9X]*]y-ϳP=[ܜ캱~>aNٽYoH%۟H
F#'͐)[g@> wMdW-38|xz?M|dt}nH[0ԙA̹5d ޑ#L;.c\R_Q Ua3|h;nMQFI
z]#p]tGlqpKgĝN  F6.IMG gzip by FbinstTool رk\wwҞWjA TS!	QJҞFpd1O w4$XRtq
A06`
*Bі\gAg
w?;rlgL57v_`d_XXy9|`o4x`o}Wo|xoJ.^n}*uɕ6g]+z*;z꯷f:e?*gWizT8׬E]ӹx#3+aHգ;=]lnz=S{b'kkaFx9N_=zV\#X/.K8m}=ɉ2ہAuzR~.iE;?A?T^=TrohwsQXNG_=rq޹cuԯQej?fkoynI~IdSgܱ=\>^/'c'_Uk!<r:lr8?{Q ( hQ0 @ @0i'Qzٌnʛr׏_ʒa]LosRI~rj<ruƹl/ :_2C } xdgw T?tNg \B_K{:[~Xs38ɶɶWU:{KTvE/Ȩ˿u0(JCy,+)w>K@>  U8AJa;׾vۀ|8 N AҀH:py@I1>oW!+8zFLlfU7F5P@Mqh%|X9 4 "y.G+}
h PS;8vV99$B@*	1\bcV? 00A&Irc]Ϩ]Ei"j>^ȯvU]׽˙0 oW0=oG] K'(˼2éW{҈F}tvPLZ`h[eT6 f,(TKhYhqM  TKV~6:96ԫ!_$m0k INGX RiYef>{
40	 L`?r*w}IQ:^iVgj`\@$<x<g`RAAtcV73F}>}+1#y'Nй:Y$tXmT.+U$d s4B#pHnLŐTb+wnb@94*,Yu#m-{{/gW$5lNX#0 ꬥQ\#'G_L(6fsBٺљ$
тPǇ;}તQj0s 0Uh֖Mv^.kAXr#H&Jc~K;ȢJui{}Ҋ/~,6fl5[m9&|rcMaJ
g?7ڪ岄j@"M``Gr$}MNC|낧||ͯGǒP͖с0
]gQ͆R&@˻*ůB6t"|x ݙ
\ޤ
	{ j	&)]pJWH;>Eddf``(iU)V_:&9ߓB8O|(zg%;rYIE6;k[o2''(r"!4n]l3ao-NllA>y7rO,:[ExrZE+NQWƁ.MיĮE(ZѾ(~AlDC7钤&BAo_Pw&dڮl̐9w;ٛ6H^4̍n>.܍8(Dt"[̩zPyL
YL2Os8 IVX4〬	Vu$cOҰ,$ҩ캟֣,,yi42AG/MO,.B-؃ƺRJWz/\U	UjѨ7B#S ɒu@z! &yh^|,Klp8h@UࠫXG9Qe
tHm}<)r6d]4	ZJiExQO}R@yLСHj.R㈇l}u˧w=_-fqZDd-? YPkJlb .p,ɍ[a$ukh
j,AMʅTGmaөw)&slz5pm6{ۑHzx*ժTX(N1^YDcgWLpaL!|r*x6҂y7~#->_>Ĉ)fu
0}@KDdx3@|v?S١!mY|]G='P.-7_mM[Q&JmmQS+VPN	rySnڪg[5cf >ՈJ<s)
j~ PdJ~"45I^%vFuu%E`:| NJ/"됄ۙ*e/ {; =9z]@dk^7U؏A2`2n+Eލ-0ُaNE%2bkzŸЂDCsㅹ(X;*-$SݔA{H3qZg+۲A&~ƤkjN̾9Y-xWr3讈fyfuhKx;rQ:Y/ .g&䷇ő-x-53`Dsvx&}wY`~poD$]oy,WfpGAmXK|sXmH<D3,kȅ筍Y@-4L=hkN(#F;،݅lVd0'd2f6G?^0]rxFLyk-!k'\%T)D3
 pZ lOܲL6n`.3 3`dsSR̈́g<p$8!Ӎߦ{ 8<R|K biG2{!@0%ܶrUgloᢔ
4\|Er)zh7w8۩yJze%s6zG*&lwS&v*rF4YX3BO$<'OY^s%XɹM΂يcZ؎ ^!!<{y+P
4	ӐAC5=.jk׳NbKkƁ@]KϔMI}B Ɉ^ҍ)driafZ*EӠakAÝ)
^f!-]|6FZ_01eJ"1șdRkEqK^N/H'rr
4rOAAǉx`)y-RZSov42L4,Y#@JB+݇B^ZD6-.hBKf`GS$m;@;ZX;Mo
k3Ͼ/ơ#3t%>p7b|ǟ[ <d1K?~f	7o4	{'z]ze~,#zMO24osgFHBgD,\nċMl}bVNiMp7onN[ݔr歴sbWLg+kSV߶㷲<xZhDrFUY<āKm0D`o.M|+ܺNWnga޴5hȪt +SXYә.YKgVɬ05,KGw!L]6JvA{O19Ƨ3{@1xƍzgQ}Q
Oз'OamSvY__w7E┤pJ۰
x0
<Jm
J~yG:CoOgtf vmx3&2sJH.0x%"vV^9(nz	S\xet=H."؜ (u@䃳t/<<z\#E8qTa&F,%2(M CvY	[֭,w~*1SlikmSсb*<:n4ƺgc挑0/	009m$F:\~:8sZٜ!XC)G%CYlQJy6_>-ܔ;}aXtB'.tER؈hl=; [6gnAKx3~fyMb؀fKtYn˹<Ӳ0
Ù-D2SjǬlhva2R0ޮ,.'x;]$^X~bvNW )SiO|Lt8\6봅4I8>Nb0Y K	^$?`JN(hkF׈$(LE"Q!
Q}AaXQ@
s$t{'%Uw%}q],ꘗĲ9*:.O嶋KrjmЖ&TxPE6
X^L۞+&Іo6MJoӷ҃)[i0sC|*!'nl7BVechCǌ#/c^RĈɟc/7Y-f}.eOv95ܣR>3Z":9x]	V[xǀ6dsIܯD¥,"B#?3}A+\h9oyjSX_'"7,5?ͣ{(7[|V7Cq®z/u:Zԩf9p6ދ}E8<(e.V]~F}\}-U^e`"ĉ|c;?|3Q9+(ܾM_kiUOZl`~>5@t-Q-\f8\,Vץd;w(+q !yt4n	M<AltKq,k&wٜ+ϬR
YLRXAr,q
&W
o[(cPD{D&ׄ97];hk)R]Z@)eGCQg.S`Rڲw>|=3t>7nxZ)?,u_ƲzyL;Bo[h(tRaF^Q;$xBV\=Of|ps6,X	azE~σ$xy>8$A56Ƽg2<_E3~ώ̃l#656
SVn[np?GG-ĩ(QD]z2юR#Q#dxD/mq	C3^HK+h@rNQ?O{ñz 3}10;=ϲT>t"Lw"T%Cso=HfuKcv5g6胢#;K73]x*C..%ڋh2H´Ma-߮2~-YFꞎt(ɋ`q37$
f)YoYf KFf&]86f[.Zbij?"oP8
@ugʔ?!XNv{}>ԩ~ล,;,CL܌x80#7o܋^KM=RGL ?OZ^$y_}lsc..Лk[fy&'Bn|'
嫁qU&ʓ`9y%S!,s¢+3ue,C#a;['v#d-RDb!
 BF:)8n4H>;dC{y#Df70jvʅ1. ptKs70BmWZhb6Zh|~aʣoOĨɬާ^7@Xpn3#!']G
,Vf,[b.0c]j}mj,v+I bC,hH7Le)974榘FMjc$<|:Ƕ؏$x):8Ps*vܡ=?V݀?RMU_pI˚K1
S3
o炆ޙه xgD#{hU,oc61
owٸ?A,]Q8qMh^~)"F(tʹf52Tl`g2;^UD-B$L-O=c r<ʢl'u#gZݲpVfH3v},ޭ5.Z4	8tO@\_2O2O2=	^WPtu{{|lO3lnhSw3)[adPm4?\?#7gwOhnz[)qdO{=Nտ8ݬ"iItV1z;u8@oݽ_}ۿjqbmux謡m~9glibr.$ڀ{O ͮ NvFa~y?R)ٲc(oz55e(=B:w7O֛<O)$=_a{r6!$@Pn]=eX!vJx4B݆'~gd6N+#t 2;rLʘH
~x8&R2*[HCH0K0/$2Lr:Qu@SY*[L8e:NP@<|<"!V#ո0Lvɜ͍ڿ86uFEe*P"طu`@
vKYA[`nԋD2Ը,Z}EL749`~4@oA(l/Ǘh(f*l/k#YR
D![:Rծ{aKhO:O@?
l֯[ʥ[ZFl:B(" z4/\TΡs<le(w_XY*k}T}Z8/ 
-b
ribBD"QH6>1#v&ɢ1sF'-ѓ恳zD8GGO,8Ӌo3T;[	NfT!L":hrTM,3X"q!uJZ&T,(ZF]UsԥT
V-10OJu-R.-e¦WtKE
`ֈo~/DŬ/5g]:뢔Y_2YOZ.&Eq+E2̿r g:\)8jw3AgaF;e6:)-ЈO[ƲPL8[hyTs@G92+#+sm)Q1A/k"%
/ဝ&M
kޞL@\9+$zegG"aߐwнfdb5R"DxRz:$%pO\ҏkΆpM»d8#{-?һT:	o|9O
32u`2u`
	L{F{?4
1Ɍ`vG ^fc(bLnx):;C/^{l=y-cv UNοyAEm୫ݖ#͓y$i
JEUݢ7a>dAŜY%(\d<IY2+$ezWfHUx^oRS[U{x)wWyOڳګTU5Ar_KLO޿yovlD%n+۽uʖj[*r0k6CRzEzzNm"l>OO'`8iS|B\\`jvgU,]z
E%%JK˷)Ji(!ڑBRJ^QYf;P|U5(q2nħ_2e79+GyQdWUї)U0;*oE^u (5^SQQ筯WJ~tu[pn"TtP!8_jZ1Cbƫ6ߜumwޚZ`GYOH:;t7TՃUWzų_Ӏ*}[FDUׯSWnq-HDBXjl*ޚE mh\&eѤ*zEoߤZwM4qFԳe})kx5vǇJVS
AA님TVP;|ޜl̸jhf
[^{z<h۾h޼-[A\sy}r$	f(mZS[!!$ĸ"!%KdPϿ}EK^l㦝 :$ErIVG/74/QY|9{y)Mk?E]^`ՍO)_,Wz*/rHݲ_tumRm VT߭\?Fڳ߹(,!PU*=xy\^ Pl zoQ_[<۶ՂbQ.(RV+YYN 9D~πbT=J+Paj[k˧*-Y*+~/:u[6W(|]~s.dB)3	|
 !辆 GuX,MͣVO=13>,4_3:b@gT\xp,B"ųgjg0:Xr(by V@8LV6VGK : =
s;lybHj*݉
GVKVWmqږɸӖ<6mal}1m(1~2q
SoWֳQ~ycV?3	d1F=8     mUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8     mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa    _AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃     FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8     mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa    _AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃     FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8     mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa    _AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃     FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8     mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa    _AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃     FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8     mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa    _AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃     FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@     TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8$    3,                    83  