本帖最后由 1五湖四海1 于 2016-8-25 22:44 编辑
* P( k; G0 _1 |' r# A/ c
) f6 x1 \: H4 t7 m+ g8 v: K+ L0 Z这个defaults.h文件作为一个中央默认设置配置不同的机器类型,从DIY米尔斯数控CNC转换的现成的机器。这里的设置所列出的文件是由用户提供的,. f/ _; u# z! q2 R7 ]
所以您的你的需求可能不同。所以应该你了解你的机器和调整设置根据你的个性的需求,制造机器。& _, w) k! w5 N* s& p" k- b9 ?
defaults_h文件是选择是否将一些参数设置为默认值
7 {, w5 `1 e+ A' y- N" g定义各种参数
. ^+ B* m+ n) [8 H+ `4 N1 N! g1.defaults/defaults_generic.h //Grbl通过通用默认设置就可以在不同的机器上工作。
( }+ [* k1 ~8 X% a0 H7 p2.defaults/defaults_sherline.h //描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机. H/ z; W0 A8 Z
3.defaults/defaults_shapeoko.h // 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的
0 W9 v; ~: l, X5 ^4.defaults/defaults_shapeoko3 //描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的, f. h5 R# ]. o: v4 e; I# E" J
5.defaults/defaults_x_carve_500mm //描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。
; t! i+ W4 U) H5 d) n2 U c$ t: E5 [6.defaults/defaults_zen_toolworks_7x7 //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。由30 v 6电源和TI DRV8811步进电机驱动程序
6 e& n# ~/ b# G7.defaults/defaults_oxcnc // Grbl设置OpenBuilds牛数控机床% _% U0 F) v9 e6 D2 O
8.defaults/defaults_simulator
6 B3 ~0 I4 f5 Z- q2 |" K
0 J( A6 ~! P' h! N: V" x/*
5 p/ x; }2 ^, D3 x/ d1 l defaults.h - defaults settings configuration file& ?8 j, ]& T- g
Part of Grbl$ B a2 H7 d. U$ S
2 T2 [* Z9 k2 h9 `# ^" \* a7 |4 k Copyright (c) 2012-2015 Sungeun K. Jeon
8 {" ]. W5 a# F( d- Y* ]: K7 w3 v4 ` d: c# o+ I( p
Grbl is free software: you can redistribute it and/or modify- I# t$ G( I3 w; Q3 g; T2 P/ t( l: b0 {! `
it under the terms of the GNU General Public License as published by" w! w* i, j& S U# f
the Free Software Foundation, either version 3 of the License, or7 p. Z# y- y0 w6 z- c+ I
(at your option) any later version.
' n* h$ Z1 T4 x! F$ [9 i! j! S% F
8 R6 x& G, E8 I+ X( } Grbl is distributed in the hope that it will be useful,
* y% s' R& @. L* c, o but WITHOUT ANY WARRANTY; without even the implied warranty of
6 R# A) D+ D2 A' A& s MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 D2 b% J1 R: b8 I7 Q* i r GNU General Public License for more details.
1 ?* N! n0 z& h: x9 E3 v+ g- V" W
0 g9 o8 c! C. a' l8 Q# g# l You should have received a copy of the GNU General Public License
7 S! _( Y/ }8 o/ d4 ~+ N- S2 ] along with Grbl. If not, see <http://www.gnu.org/licenses/>.
. R, X' O" j, p3 s, q% E M$ d7 j8 c9 x*/
$ s4 T/ N& Q1 O% o0 H( j/ M
+ w/ Z& b3 S$ s4 `/* The defaults.h file serves as a central default settings selector for different machine3 s# s6 X6 A, T Q
types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings
; { C" ]! ^/ g files listed here are supplied by users, so your results may vary. However, this should a1 g- k' v9 E& m7 @* O
give you a good starting point as you get to know your machine and tweak the settings for
9 R( W- i/ A1 \, a5 Y your nefarious needs.3 w+ Y& k; A* _; t- s* M
Ensure one and only one of these DEFAULTS_XXX values is defined in config.h & d* M5 Y- F. } ?3 B. U
* ]1 ?. Q8 Z c. m7 K( S The defaults.h文件作为一个中央默认设置选择不同的机器/ G) h# ?. u) A, x+ }( @: [8 _
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置5 a1 z$ \. I# U# x4 e8 \
这里列出的文件是由用户提供的,所以您的结果可能不同。然而,这应该 H% c2 I5 ]9 [1 A/ C* h
给你一个很好的起点,你了解你的机器和调整设置
- T& t. w! f5 W0 T. V( c 你的个性的需求。9 q/ I t* S+ O9 Z2 z j
确保一个且只有一个这些DEFAULTS_XXX config.h中定义的值
( p9 l* e, x) W */
% s1 J* \$ m R3 O. u: a7 {$ N2 C8 N+ d2 g0 a }/ ]
#ifndef defaults_h, |) P' o" Y$ X4 f( l+ K
" l" Y$ G7 A P4 m9 B. O
// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file.
6 M9 [$ H& v+ J0 ?" N5 }" q* L// Don't #define defaults_h here, let the selected file do it. Prevents including more than one.3 u: V: i: {9 C3 l9 G0 s( d& i
//只有定义DEFAULT_XXX在哪里可以找到相应的DEFAULT_XXX。h文件。
' `7 u+ U5 B. K+ o( W! a* R4 I//别在这里# define defaults_h,让选中的文件。防止包括不止一个。0 ~: O" D: ]: w! A$ b
) T* n3 J) {& B( p. `
#ifdef DEFAULTS_GENERIC
' \' X( f2 k" f# w e // Grbl generic default settings. Should work across different machines.
9 Z+ D1 u$ J; U: o( N9 r // Grbl通过通用默认设置就可以在不同的机器上工作。
1 T% E- [! F- @- ?' K #include "defaults/defaults_generic.h"0 A1 p, W3 I1 n% K
#endif3 A& F5 ~2 D! k* D& t7 B& |" e
3 m3 O! R, @" r7 c& \, n4 v2 \
#ifdef DEFAULTS_SHERLINE_54009 G: X6 a3 y* r: A
// Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors,
3 Q8 q9 q: r/ p4 G9 F+ ? // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding.+ t; `, l& N+ z" X
//描述:Sherline 5400制造厂三个NEMA 23客户KL23H256-21-8B 185扭力步进电机,0 q( n( W8 M I2 H! G- S8 b
//由三个Pololu A4988步进驱动30 v,6在每1.5绕组供电。
- s3 x8 T& i! | S6 Q! G! _/ b I; N5 {2 }4 N/ H( f
#include "defaults/defaults_sherline.h"
$ h6 l, Q* u% O$ j% W2 ~3 p, ], b#endif
3 J2 N9 a6 |: `3 q, X% b) L; S- q
( I$ S# H. t' `% Y/ p* v#ifdef DEFAULTS_SHAPEOKO. \4 f3 c7 R. a! x+ V
// Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos# _6 I9 ^6 w1 z6 N/ ]2 B- H* k% i* ?
// grblShield with a 24V, 4.2A power supply.( [& j4 `' z Q( X1 v; }
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的% H* K+ z9 X9 A. X* G U5 ~
// grblShield 24 v,4.2电源。
; B: i" Y2 _2 q- m0 A' p$ [
3 E& q/ \% n8 G/ g #include "defaults/defaults_shapeoko.h": P$ ^3 l1 ]( t
#endif
/ h, q( \ J, t: E# H6 G8 ?' r$ |0 Q; S
#ifdef DEFAULTS_SHAPEOKO_2
/ p+ k* L, b: t& ~4 d/ G // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos- ^9 |4 E; R& x7 v* t( X
// grblShield at 28V.5 K% s( L7 C1 r' s9 B! @! H1 T" S
// 描述:Shapeoko数控机有三个NEMA 17步进电机,由Synthetos驱动的4 L6 \3 m3 A2 m4 b9 Y! Y% b
// grblShield 28 v。) i8 x" P& y; A4 ^5 l
; Y4 G n* Q- S) Y3 s; J% A #include "defaults/defaults_shapeoko2.h"" o; l1 E2 u8 R8 `8 W1 T& q
#endif
* {6 a' f2 x2 |6 K# r$ b/ p. |7 I7 ?+ e# @7 r( A( [; b, u
#ifdef DEFAULTS_SHAPEOKO_3
, F t" _9 ~7 l, l6 G7 M1 z // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion8 g3 Q: X7 ^( k8 J& @
// 描述:Shapeoko数控机有三个NEMA 23步进电机,由CarbideMotion驱动的
) N7 U8 a* ^2 A* v! z+ b3 T$ x5 c" C) L) P" i- c3 F. ?
#include "defaults/defaults_shapeoko3.h"/ v7 P/ C! b* V' d- C
#endif+ K/ y# ` }% f( i5 ^
: h% m+ _# ]6 U; m1 f#ifdef DEFAULTS_X_CARVE_500MM- d: Z5 T7 {9 _4 `% z
// Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos' _) f- V- Y9 G% o. A$ S
// grblShield at 24V.
) H- k, v6 E; c$ k3 T7 R // 描述:X-Carve 3 d卡佛数控机有三个200步/汽车由Synthetos牧师grblShield 24 v。
9 c5 }; c! u# y2 k# I #include "defaults/defaults_x_carve_500mm.h"
; S0 J1 ^7 e' s- p4 ^#endif
x3 e+ R; ?5 i9 E5 y+ }
% T# m" z0 n2 j8 |! X9 T$ Q#ifdef DEFAULTS_X_CARVE_1000MM
4 c: d( Q% f. }) \ // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos
) b- X9 p: l" |+ r9 _( d // grblShield at 24V.4 G- `% ^" p( M) p8 q( T1 {
#include "defaults/defaults_x_carve_1000mm.h"
# p4 c7 g2 @' ~! o# J8 n1 e* K#endif5 h* e7 K2 Q4 U+ P4 H6 W( {- J5 A
, @0 V" u* `& u#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7
' A! E9 e9 `7 ` // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors.2 O0 V4 _* n- O y w7 n, S
// Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here.
( |- B1 `6 ?9 _" i // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers.
& p* Y- t# n" O3 p2 h3 x( y //描述:禅宗Toolworks 7 x7机有三个Shinano SST43D2121 65扭力NEMA 17步进电机。9 Y" E8 _" g! [1 x; ?: l o3 y% q
//导螺杆不同于一些ZTW包,大多数是1.25毫米/牧师而不是8.0毫米/牧师。
; r$ b7 r2 P4 y9 N& b9 _: F! \ //由30 v 6电源和TI DRV8811步进电机驱动程序。
9 Y0 M5 ^. [% L6 J4 j, V+ U( r( k! y4 m! H' L
#include "defaults/defaults_zen_toolworks_7x7.h"
6 W9 A% J7 q& W+ S. D, \- R#endif
6 ~2 ]& J1 d; L. Q1 S6 p Y' ?. c4 m' [, X
#ifdef DEFAULTS_OXCNC
* E E- {5 O! v; y j# k // Grbl settings for OpenBuilds OX CNC Machine
- _* G& Z5 Z% U+ S. ~% f+ b ^ // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/' Y7 G3 Z! y/ J8 S: S( W
+ m" n9 p( z; }, ?
// http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ & m* ~- A, [, y3 o6 A. K5 N( r P
#include "defaults/defaults_oxcnc.h" // Grbl设置OpenBuilds牛数控机床+ d+ [/ N9 m3 c
#endif
+ S# p$ k' ~7 S, k( f5 X+ l3 T5 M; ?/ M2 ]/ V
#ifdef DEFAULTS_SIMULATOR2 v! x0 w7 C8 ~5 A$ S
// Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim)
) v; e b$ W X7 ~! M i #include "defaults/defaults_simulator.h" //设置只对Grbl模拟器(www.github.com/grbl/grbl-sim)/ M7 C% q0 @& Z" Z2 _. H- M/ N
#endif; M+ u' E2 d* q7 K7 f
* v: w8 j( V2 p' b" H# U& @
#endif7 ], W: D& ], X8 U9 L
8 i B' \+ \% X8 H' B, [
__________________________________________________________________________________________________________________
$ l z: R- S( z: y" c/*3 L0 f6 _% S& k9 c) g
defaults_generic.h -默认设置配置文件Grbl的一部分
7 I& U; S7 d+ @# L7 F! l9 L版权(c)2012 - 2015 Sungeun k全& Y0 f% k, {8 [( O0 v" |
Grbl是免费软件:可以重新分配和/或修改% G2 g0 h) g7 L+ E: h
GNU通用公共许可证的条款下发布的- A; n2 j6 _3 I# l! I
自由软件基金会,版本3的许可,或
! ~) _% R9 y+ P. E(任您选)其后的版本。) u% t1 j& i& h* u
' s" H! A! `1 @5 c! p# h7 g
Grbl分布,希望这将是有用的," o: ^- a4 |/ B9 n% E* ?. n: n
但是没有任何保证;没有即使的默示保证
' t+ |* `" v Q9 \$ r! o% ]适销性或健身为特定目的。看到6 `7 s% O& ?& {7 d \
GNU通用公共许可证的更多细节。' C( j' H" D; K }/ Z! B
& B: B3 n% F* ^+ p
你应该收到了GNU通用公共许可证的副本
7 C$ o, U* c1 K% ^连同Grbl。如果没有,看< http://www.gnu.org/licenses/ >。
. q& i, i' g5 Y; s: \* b* R8 c* /& T4 v9 R* }! B: z4 ?$ y! C
4 `* K( D! b T- f! l/ k
/ *默认值。h文件作为一个中央默认设置文件不同的机器+ s; K4 n: F+ ~4 B. U& d
类型,从DIY米尔斯数控CNC转换的现成的机器。的设置
* }9 e! o7 _( e' J* K" i- |1 g这是由用户提供,所以您的结果可能不同。然而,这应该给你
4 j( ?4 y+ t' ?0 M# o; s8 O) T一个好的起点,你了解你的机器和调整的设置 D4 H+ c- B& c" o$ ?" Z
邪恶的需求。*/
C5 ^: L8 J# J, I" m, F4 m% Q( U. _( \( ?
3 J2 N* u! ]( O$ Z1 b+ @: r& |1 @
#ifndef defaults_h
$ g6 Q2 T2 t7 ~9 N! s# e1 R; S5 L3 W#define defaults_h7 ~' x& h8 x% K3 Y! X
2 t* I Q5 J" H4 \ // Grbl generic default settings. Should work across different machines.
3 _" W3 W* R% a, g8 B' d+ O #define DEFAULT_X_STEPS_PER_MM 250.0 //X轴每mm脉冲当量 6 {7 s4 d/ L% [4 @- ]4 {
#define DEFAULT_Y_STEPS_PER_MM 250.0; u+ G4 w1 j; C! K7 ]/ I3 c
#define DEFAULT_Z_STEPS_PER_MM 250.0
9 v1 \& C) Y+ y/ u) G; e4 P6 ? #define DEFAULT_X_MAX_RATE 500.0 // mm/min 最大速度
( T1 U1 u: G' e- ]3 E2 s #define DEFAULT_Y_MAX_RATE 500.0 // mm/min+ x! ~. a. L; o% y- a+ m
#define DEFAULT_Z_MAX_RATE 500.0 // mm/min9 B$ y# z$ v5 e. L$ {* I
/*这是毫米/秒/秒的加速度。- ]6 N" g- Q- D9 `6 Z
你不需要理解这是什么意思,我只想说,一个较低的值给smooooother加速度而价值更高的收益率更严格的措施,达到所需的进料速度更快。+ z3 q+ l; K7 R6 F" S6 {+ U0 ]+ ^
从技术角度讲,这是您的机器的点对点的加速度,独立于轴。设置加速度值高达你最限制轴可以让你在不丢失任何步骤。
% Y* X- \7 I$ `4 Q9 G通常你想给自己一些缓冲,因为如果你失去了步骤,Grbl不知道这发生了(开环控制步进),并将继续。*/
0 V m% t1 H) \2 J5 x! l #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 加速度( t* E+ L3 ^6 q5 E x% F; B: |5 m
#define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2
5 G4 z" ]2 r+ l5 n* S( l) t2 p #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 @/ ]& W' i! _4 x1 l' O+ c
#define DEFAULT_X_MAX_TRAVEL 200.0 // mm 最大步行; @- w% {+ o. `2 e
#define DEFAULT_Y_MAX_TRAVEL 200.0 // mm
8 w% y/ t+ k$ D& n #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm / |7 c) q' I! Z/ F; ?7 ~
#define DEFAULT_STEP_PULSE_MICROSECONDS 10 //步进驱动脉冲长度
* B- @, C5 u" ~ #define DEFAULT_STEPPING_INVERT_MASK 0 //步进是否反转
# ?" [+ T/ E. |" Z0 k* m" X #define DEFAULT_DIRECTION_INVERT_MASK 0 //方向是否反转, O( s' v- b' d; e+ ^
/*
, r( Y; F$ }- P" l0 R) J 每次你完成步进运动和停止,Grbl将禁用默认步进。; _, \7 x" e9 ]; i u" p8 s7 H$ u
锁步进空闲时间时间长度Grbl将步进锁之前禁用。1 G0 A, G7 \/ L3 A1 j
根据系统中,您可以将这个参数设置为零,禁用它。对他人,你可能需要25 - 50毫秒来确保你的斧子来完成禁用前停止。(我的机器往往漂移稍微如果我没有启用。)
# d) n- M0 W3 J: q8 h$ C" r或者,你可以让你的轴在任何时候启用通过将这个值设置为最大255毫秒。再次重复,你总是可以保持所有轴通过设置启用7美元= 255。*/
. L1 D$ H8 w) F1 ] #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled)步进闲着时间
2 w* t7 g& [% z #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) //是否打印状态报告
/ _9 m) j2 E6 \5 z/*一些高低cnc-stepper控制器需要输入反方向和步骤。6 e7 S- I& t3 ]( W' g( ~" @
信号线路通常是高或低信号方向或高,低了几微秒一步事件信号。为了达到这个目标,Grbl可以反转输出比特来满足特定的需求。& w! ^! G7 a- I( N, B( ~
反掩码值是一个字节,xor的步骤和方向步进港数据之前发送。这样你可以使用这两个转化步骤脉冲或转化的一个或多个方向的轴。
* m1 Q3 d2 K) f% `; H8 n/ ^这个字节对应的比特分配给介入config.h别针。请注意,不用于反演位0和1。默认比特分配是这样的:*/
) b o0 `) w3 n" B- ?- K% v$ A2 `% T6 R. Z
/* 转弯路口偏差使用加速度经理决定它如何快速穿过一条路径。5 I9 T7 ?+ @ d) t* Q) h
数学有点复杂,但总的来说,更高的价值给一般快,可能的波动运动。低价值使得加速度经理更加谨慎,将导致小心和慢转弯。
) v0 h( j! n! b7 n/ e. u 如果你遇到问题,你的机器试图把一个角落太快,降低此值使它慢下来。
/ s* k2 ?/ O8 [2 K9 B 如果你想让你的机器通过连接移动得更快,增加这个值速度。+ ]% k! U2 Z! u2 C4 C
为技术人员,点击这个链接阅读关于Grbl转弯算法,速度和结角占一个很简单,高效和可靠的方法。*/
: s* n* @5 c! s8 O& }# h9 b1 e, {8 Q6 H( e$ ?
#define DEFAULT_JUNCTION_DEVIATION 0.01 // mm //偏差
5 Z0 y& n1 r+ F3 }) B: c #define DEFAULT_ARC_TOLERANCE 0.002 // mm //圆弧公差$ O0 j2 K/ @1 P0 i
#define DEFAULT_REPORT_INCHES 0 // false //打印英寸& v+ @) f; Q7 d4 C5 |
/*默认情况下,步进使销是启用禁用高和低。如果您的设置需要相反的,只是反步进使销通过输入15美元= 1。禁用与15美元= 0。(可能需要一个动力循环加载的变化。)*/+ ^9 |6 K) ` `2 M6 \& S
#define DEFAULT_INVERT_ST_ENABLE 0 // false+ I3 }) X3 B6 W
#define DEFAULT_INVERT_LIMIT_PINS 0 // false //反转限位引脚- d8 n. q A# M! r
#define DEFAULT_SOFT_LIMIT_ENABLE 0 // false //软件限位
/ M! y6 U! g0 { #define DEFAULT_HARD_LIMIT_ENABLE 0 // false //硬件限位" i1 ~; U6 A3 Z! R
#define DEFAULT_HOMING_ENABLE 0 // false //回原点使能& h# z5 s. m) ?
#define DEFAULT_HOMING_DIR_MASK 0 // move positive dir
, D2 d) _! t6 L! E8 p+ x #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min
7 ?+ w/ E" a$ k- D6 y/ s #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min
: O' y( I3 r V' ?1 ~7 X #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)防抖动延时
+ R. T! K8 o/ O #define DEFAULT_HOMING_PULLOFF 1.0 // mm5 w1 F h5 |/ j
3 z5 k+ N, H" O% x#endif9 t, k3 F7 {% u
! L9 F# Q* d6 c4 Y
8 i' b2 v- Y- J. w& p3 w9 M
3 Q9 Z$ S! |0 M$ \
( {) Q: E# x1 a3 C, Q
6 F! e Y* E/ h" U
% C6 A9 `' o) C3 l1 E" H2 F" u! x3 V* }. j$ l4 B! i
3 o! M6 ?! D! {; i
0 o3 ?' e0 [: @ o/ j+ j9 o; v/ B' b* j- H( h6 h$ a
; x, n& L- }% `2 E4 _$ q+ T0 ]6 \" w. e3 @
/ L0 T# c+ u0 t1 e) l
3 a" Q* ?7 ~& G0 ]0 J y" Q: j' D, V2 f+ q. z+ @2 c$ c
6 b1 T7 |/ e9 X) B- z: l/ ~! O9 a/ S, X) {3 t
+ A3 ~, n$ `/ L `! T
' `( V# ~$ C: L3 q
( c z9 o. N" S& h) t7 s, V, m$ {* ^6 |) q
! w3 R( m) u) @% Y! n% o# g4 g* M. H& J$ w( ^
- f8 ^" ]9 i% Z3 J( w1 R3 U w
) j/ N( _! N+ b* P! m& |' X2 ~; f
|