From f5620d888e6978d9fc5d5c8fb4f7b27df34128cf Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Mon, 7 Sep 2020 20:54:50 +0800 Subject: [PATCH 01/10] =?UTF-8?q?1=E3=80=81=E6=8F=90=E4=BA=A4=E4=B8=80?= =?UTF-8?q?=E7=82=B9=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BE=BF=E4=BA=8E=E7=90=86?= =?UTF-8?q?=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/kongqw/kqwrockerdemo/MainActivity.java | 4 ++++ app/src/main/res/layout/activity_main.xml | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java index 0bdfda6..86d9869 100644 --- a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java +++ b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java @@ -18,9 +18,12 @@ protected void onCreate(Bundle savedInstanceState) { mLogLeft = (TextView) findViewById(R.id.log_left); mLogRight = (TextView) findViewById(R.id.log_right); + //初始化 RockerView rockerViewLeft = (RockerView) findViewById(R.id.rockerView_left); if (rockerViewLeft != null) { + //设置回调模式 rockerViewLeft.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE); + // 监听摇动方向 rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_8, new RockerView.OnShakeListener() { @Override public void onStart() { @@ -41,6 +44,7 @@ public void onFinish() { RockerView rockerViewRight = (RockerView) findViewById(R.id.rockerView_right); if (rockerViewRight != null) { + // 监听摇动角度 rockerViewRight.setOnAngleChangeListener(new RockerView.OnAngleChangeListener() { @Override public void onStart() { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 20e3a55..b041ba9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,6 +5,7 @@ android:layout_height="match_parent" android:padding="30dp"> + + @@ -52,6 +54,8 @@ android:layout_alignParentRight="true" android:text="获取到摇动角度(可自定义方向)\n自定义图片" /> + + From 00cac6f844ae003d38b1472040d02ed75ae09f87 Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Mon, 7 Sep 2020 21:51:04 +0800 Subject: [PATCH 02/10] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=8A=9F=E8=83=BD=EF=BC=9A=20=20=E5=9C=A8=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E7=BB=98=E5=88=B6?= =?UTF-8?q?=20=E4=B8=8A=E4=B8=8B=E5=B7=A6=E5=8F=B3=E7=9A=84=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E5=88=B0=E5=AF=B9=E5=BA=94=E5=8C=BA=E5=9F=9F=E7=9A=84?= =?UTF-8?q?=E5=85=89=E7=BA=BF=20=E7=9A=84=E7=94=BB=E7=AC=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 61 +++++++++++++++++- .../main/res/drawable/bottom_move_light.png | Bin 0 -> 1416 bytes .../src/main/res/drawable/left_move_light.png | Bin 0 -> 1816 bytes .../main/res/drawable/right_move_light.png | Bin 0 -> 1756 bytes .../src/main/res/drawable/top_move_light.png | Bin 0 -> 1493 bytes 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 KqwRockerLibrary/src/main/res/drawable/bottom_move_light.png create mode 100644 KqwRockerLibrary/src/main/res/drawable/left_move_light.png create mode 100644 KqwRockerLibrary/src/main/res/drawable/right_move_light.png create mode 100644 KqwRockerLibrary/src/main/res/drawable/top_move_light.png diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index 2e62b60..c750227 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -33,6 +34,11 @@ public class RockerView extends View { private Paint mAreaBackgroundPaint; private Paint mRockerPaint; + // 上下左右的滑动到对应区域的光线 + private Bitmap leftLight, rightLight, topLight, bottomLight; + // 绘制 上下左右的滑动到对应区域的光线 的画笔 + private Paint mCirclePaint; + private Point mRockerPosition; private Point mCenterPoint; @@ -92,7 +98,6 @@ public class RockerView extends View { private Bitmap mRockerBitmap; private int mRockerColor; - public RockerView(Context context, AttributeSet attrs) { super(context, attrs); @@ -111,10 +116,20 @@ public RockerView(Context context, AttributeSet attrs) { mRockerPaint = new Paint(); mRockerPaint.setAntiAlias(true); + // 绘制 上下左右的滑动到对应区域的光线 的画笔 + mCirclePaint = new Paint(); + mCirclePaint.setAntiAlias(true); + // 中心点 mCenterPoint = new Point(); // 摇杆位置 mRockerPosition = new Point(); + + //上下左右的滑动到对应区域的光线 + leftLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.left_move_light); + rightLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.right_move_light); + topLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.top_move_light); + bottomLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.bottom_move_light); } /** @@ -150,6 +165,7 @@ private void initAttribute(Context context, AttributeSet attrs) { // 没有设置背景 mAreaBackgroundMode = AREA_BACKGROUND_MODE_DEFAULT; } + // 摇杆背景 Drawable rockerBackground = typedArray.getDrawable(R.styleable.RockerView_rockerBackground); if (null != rockerBackground) { @@ -246,7 +262,7 @@ protected void onDraw(Canvas canvas) { canvas.drawCircle(mCenterPoint.x, mCenterPoint.y, mAreaRadius, mAreaBackgroundPaint); } - // 画摇杆 + // 画摇杆背景 if (ROCKER_BACKGROUND_MODE_PIC == mRockerBackgroundMode || ROCKER_BACKGROUND_MODE_XML == mRockerBackgroundMode) { // 图片 Rect src = new Rect(0, 0, mRockerBitmap.getWidth(), mRockerBitmap.getHeight()); @@ -261,6 +277,26 @@ protected void onDraw(Canvas canvas) { mRockerPaint.setColor(Color.RED); canvas.drawCircle(mRockerPosition.x, mRockerPosition.y, mRockerRadius, mRockerPaint); } + + //根据点的位置来画摇杆外围光圈 方位会在滑动过程中动态计算 + if (mDirectionMode == DirectionMode.DIRECTION_4_ROTATE_0 || mDirectionMode == DirectionMode.DIRECTION_8) { + switch (tempDirection) { + case DIRECTION_LEFT: + canvas.drawBitmap(leftLight, 0, (getHeight() - leftLight.getHeight()) / 2, mCirclePaint); + break; + case DIRECTION_UP: + canvas.drawBitmap(topLight, (getWidth() - topLight.getWidth()) / 2, 0, mCirclePaint); + break; + case DIRECTION_RIGHT: + canvas.drawBitmap(rightLight, getWidth() - rightLight.getWidth(), (getHeight() - rightLight.getHeight()) / 2, mCirclePaint); + break; + case DIRECTION_DOWN: + canvas.drawBitmap(bottomLight, (getWidth() - bottomLight.getWidth()) / 2, getWidth() - bottomLight.getHeight(), mCirclePaint); + break; + default: + break; + } + } } @Override @@ -288,6 +324,27 @@ public boolean onTouchEvent(MotionEvent event) { return true; } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (topLight != null) { + topLight.recycle(); + topLight = null; + } + if (rightLight != null) { + rightLight.recycle(); + rightLight = null; + } + if (leftLight != null) { + leftLight.recycle(); + leftLight = null; + } + if (bottomLight != null) { + bottomLight.recycle(); + bottomLight = null; + } + } + /** * 获取摇杆实际要显示的位置(点) * diff --git a/KqwRockerLibrary/src/main/res/drawable/bottom_move_light.png b/KqwRockerLibrary/src/main/res/drawable/bottom_move_light.png new file mode 100644 index 0000000000000000000000000000000000000000..53fd3a4aaca5f429b2e3d18d3dabe96abc93ff36 GIT binary patch literal 1416 zcmV;31$X+1P)Ez5t&DiFfz{s49pG2_zm05)u-Zwv;?U3$UM^wG0&%U_ViaB_zDw-y#THkY z@Wvs0ONK^|VORO$fA|C5kTdQboGZLQb?tTs)M7g!#<5!}F?(dx@g$zY$7LAP#5J78 zKk!q$L^a*(uiu8+6GPZ1m!2=;t1{;L{|T7E37jnLaU8>2`B}Bl>p)xF35W^lJP#H= zBEy$`GKAUL<-$e$4nLRS_nTA~*E*UWrOp_~2k<3)8;510eBDWy$6VpGTqRz^>-Zzp zd%gXBi@`wb)$!zqrDxwE zF5)Qugulq8>?AH1UP<=vVO#VIQDF>sOK-hXhQg1@#PpCOmN~>}oRU?z(^73}^1qn5m4wxzpNKJhXc<3@2O8Wf zWA>Fic{d!BVNJ~=RC8+^_sUqO3U3U{L}rhaO}~LJNN;hwSdbp!YJ;eYjd@pT?~?+> zM%HDnNC)&5{whU|*Qm~H;23U+P2SiRqcSvlK&}SQ;5mHE#{N;uv7}?@b$hK#8>Ju8 z;GnhIm>t?T}BZ(YeadZe_&%Z}@bu~l$cDtf=d@8!xng^O#bxUL(v=&sIq7+=TN zhf9u^o^(!{f3XzFJwe#jUZ3e@Y4RXyFO`M}{%8gC`2y zhygSH<%l{qu4CW_WqskW+~WF#-nHlLg!A~b+&b_ZS%tqUCqc4TV*#kfhG zorSv#Yl*PtR$D=8<32Cz7t^IbU3jk1o@*SRzZ1Q9FW830-wjb~>a~Pehf?+Ny*d-4 z=KWGX-z62P3AvI?=;-kEJ05fW>e5t2=A|LemG+|a)XnysR95PCrkuObovo4I3hx6| WdW>wF+}G&<0000SP)w00009a7bBm000XU z000XU0RWnu7ytkU%1J~)RCt`#n@fmXMHE2K>+b29eCLxm#>v-Dj7bplF(yJ3qZ>aE zFc66du0&jjD_6Qw1YNin1wm90cP<3c7z_yJuR+v&h>l6dNlY>`$xPxT(=&Zt)NAK; z&8zBquj+xh(9m5~@6_dXy<4}cZb49y#mQflfZz^b4e(b1a2^6qCkq0>r5)G^>?;7y z>X=mv43`Ml3JmG+03ub8FF+pGYeJZ1Gq42h&kQ888{|unIibPpK_ z;0WaV7{1rmGLOyI09)ekheN}kjh_?X$AEC@0U8c!m=^vdtLB@4rSbPOz@SR!_N_Whc;{_4}8fJiGF4*-`6u#V>O9SY8^z_OI`ao}%XcwgLsE@P-Ds}OiUMB)LL5^y^(FQx4t zS->f9Dk%T0j}(CZ5b)K8w%(ez0rwc%{+Si7iL6ZoKKiGcm8NUH+0bqPq6uI4mef`` zO`^jeFtp1&QZ%^CMh(L>$+ee~)O;0cw4{miq-=ug@kvq!Zc6wKGI~P|E^R1>l_n$P z+|p}k-V4mNz^$vcR`6SBj=__1*%#ge%r>;S;tOBU0$%rl_W-jj@VuH!3AHkAH?$e` zfKx?{7L$zPVU{+O%}p|fr{*Sj9T?9VQY7IOpvzD{q2T$XVU}(~eGPD0bLN3h_`<6e zxVPqAm}j6VJPtW3*oR>aWtu|Zg=>DJD7d%g3oZ5DHlJ^)7jinS2E5Z!?`;-+F`E=` z&C}LD4VjETx#6a{6AIS6PR@y<0XNN^4Y-$COtZeXR7hWQ27?zSt!)1Ph8HGc7hZ}=5Uy|-CxTh@(0H8C#mlI~g3RX@4fqK5>24WtASXN$ zkQ2aT7I0G*5_>L52+{iZ-w5+`)I2Bg>wwH2uxn z2RveEyByEc^B*j2SKychWr80>ZGoiu64N1-GkhHQota59pfvY_PoiF?G`P3sHPm=d zOPpD%E)GP_+pju&Du$=oeHJQB;!I9>Bp{8f)kRucUpSy{c$~Muoh1!ENP3b?5cn8y zikYEC2e3#bTDzSarNAQrIhq15qjF!`aXch3&FY6y8floiehFklDEJc^{3^(fCUUkJP(m;*Aa0C+S?xD{WTNL7vf0_9&o%cGume;#lE0000w00009a7bBm000XU z000XU0RWnu7ytkUj!8s8RCt`#+}n#)RUE+a@18j`Iy36%jHb=xy&5gbOF3XrR3K4F z4?+?28qq`a2h>v#^wN6}1Z9ClP!N`;29ZIURz`W3932rab9J2iob&5p?W22^Yprw6 zT5E&-U~tY_vp@UC@9eYo+WV|69m@Kt2H}f%Jkr6A=fHH$aLYGa&D%H##1^31m7g%|VbwG4Vn=&PckG%@J_` z`7*@?14JedIb7nlYb(#Gv- z%AHJAvx5pDuY%mvO7naK7}TI8eH#8nEPQ@?(#YZ$K<0DHK0y*zOUa6&S42u!VGLWf72nKpqZ+Z|&f+hL3{05DVXH$o@Uo7PU+n zjseeUZBNI-|2DKe2C^W+^{aG)Oc_eEBM=6VE|5zGd}j=NImlrHe%W^7uBGN2x+=*HCmmIvMnECL36@hjYUx+_Nu&>n(Mq0Ty{ zn>@{^@%^kXK7*QXjxpDd(T^-a#@1#O0ghMJlD)~#V7x_c&=rM`o*;#;~{tfb;HsYK{cZW$6#W=itsf2+uY1N;S_d z^J!ox1fPpN^Fd%L6t}I49R#NH%sdEh!k+mMFyo0!lH#`Uyq|!Y*Q364vPC}uWvK%e zIQp*r@bi#Nhv03fGm$CIlz;KXUCWv8ZhX0=eHu6&irbblpMYd66kly=|1JB%7hh#* zKji6^LmC}l`psHnN0ZzogO_`6N z2CP~4Uuwi9!JPS33=3;&&Abislp+eg6g3&r<6^plAbgntF9F9Ox#QMr3|xRCra$(< zo3*wH;Lku@3MsBnn~y+Z{Q9z%%$otzlTzQ>HmDWv(AtW?H!<)Q?i>+ML(&rq*UR#= zYlB+w<-okm>k{xwEc_v6-=(+$oQ;J)s=Ypgc@>}+o_(00gc`rEMZje)YEeu%CQu(9 z=Nj~CGvB2B?I=}DBdW!>Xs^!#=VIaA+Uu`PL##(g1IWqD#AgCzMFbc?)_`2g;6GNo zWi@4akl9xeU&X|`GI$>qKJqo-Qjc1>TE6vhlnNi58gLc@D^O!f2{=r8bsPg<%2?*M*R4-P~R*_KW^^9bpTsr?6GovVu6$zRg|0000@6w=5@T$MHPP5h znmO`2v$h@vojY^q%-kt^!D64e_s*F)YyVgKuYD6m7O+5-fIWNYzQAF?k-!m+^ zpt<_Ddjqa}H9q*D#`QKpRVv`mc>OEz2jIFD_!;;G_#W8Or9T1NfgPbc8?U!R+Eun4 z+}I)=oN0?gfx`pD0$I(kUDfz-CCkZ*FAL zHf>CXuXYEH1I_`?15HT9~ja6 zc;KXn>PB{>`sv{WE#hKsZ)K11A+RHWw&TJr|elK78ApMF_|Qt zLPkm_coKL5(&xk8xb62(C}1i9ZS!eUdNOboa075zG@)(VVX^mE0UouSQMm zYk}bJ1ckp-Gu7zY5ACQuvXh(9a!-?K*xcWAuhOaZJ+8igsl;bq2fPHl0<4cRNrp-L zEs0DR_^YD;8`CR*3xKnLQ-ggOmx0_U`E#j4DMC}XtFKM*vLddkj7jF<-9%ZG=IXWJ zcJ;nGf$Fu=yzcdU0$yMXV6R;TwQB~rWnc!n>pl&Yu~O}e%$};jCF>zU07%_>pHYhT z_%;|Nn`yIy&Gg6P?iVHi{FR$`BXBQpJ>W)2Gmf%m7tA(l8-OojwO&=-7{S^dt(#GM z7o-f}Q39pKd;i0L=`cD{cBXutvxf7F6GBgn%xeHTC4Sc8cd7$}<&jjY+2C>DF-Y#i z$Ylw@Um1Oj@HVTr0k_8MVIEc>YQ!9g^D3|fx%FmVH$ZZ*Q)FNZ)PYLJ&=F3HtejW( zHD?%C1DF|TP%(SH+Hr!qL~Crm8Ii1`F$;PtCL|LG+balV;wA_igrPO)Ag+WnU0W4JF zS{~^LX7ZK5qn#PUaC_b|`0Ix?{aGX42izUaRj(~El3Qcvvc=(v4Uitc3X&1N$jn-x zvN69TNDj#k89mQXSuLoRTHQFc9}^=F1J8E|iX?spl9s?<$r@Z5M+a_>(&qoX*@!Km zZE75qf7&=pvL2EwN|Cv>KxLm`c97|_GTEm+XgFbE|^g=>1Gg_f|skIBk()ftD>$WAQrR zmS7FfjM;~D?sLFH(Jb%yul}G<@YfSpr>%P2o$*0>qfy%u#`5Kp_#lTCtH(XCXxXae zc2jAAN{l)n_2lmP!90o0XM;9f3;!~J3xL0-u&lZ60+t2%jqDzARb^qUxf~WbsxFMn zRDxy}zjP(DWRGB(BmrZIZlk=aQyQhMJ-}aCzds1v5q132F?e_}hDoN9sX4wni`!eC zsb34!l}r9t)O=oSO&9p Date: Tue, 8 Sep 2020 09:25:32 +0800 Subject: [PATCH 03/10] =?UTF-8?q?1=E3=80=81=E6=9B=BF=E6=8D=A2=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E8=83=8C=E6=99=AF=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/drawable/meiguoshou_fast_you.png | Bin 0 -> 43496 bytes .../main/res/drawable/meiguoshou_fast_zuo.png | Bin 0 -> 41551 bytes app/src/main/res/drawable/meiguoshou_you.png | Bin 0 -> 13053 bytes app/src/main/res/drawable/meiguoshou_zuo.png | Bin 0 -> 12152 bytes .../main/res/drawable/ribenshou_fast_you.png | Bin 0 -> 40914 bytes .../main/res/drawable/ribenshou_fast_zuo.png | Bin 0 -> 44092 bytes app/src/main/res/drawable/ribenshou_you.png | Bin 0 -> 11807 bytes app/src/main/res/drawable/ribenshou_zuo.png | Bin 0 -> 13454 bytes ...btn_radio_off_disabled_focused_holo_dark.png | Bin 0 -> 1498 bytes ...tn_radio_off_disabled_focused_holo_light.png | Bin 0 -> 1593 bytes .../sad__btn_radio_off_disabled_holo_dark.png | Bin 0 -> 615 bytes .../sad__btn_radio_off_disabled_holo_light.png | Bin 0 -> 718 bytes .../sad__btn_radio_off_focused_holo_dark.png | Bin 0 -> 1923 bytes .../sad__btn_radio_off_focused_holo_light.png | Bin 0 -> 2153 bytes .../drawable/sad__btn_radio_off_holo_dark.png | Bin 0 -> 705 bytes .../drawable/sad__btn_radio_off_holo_light.png | Bin 0 -> 827 bytes .../sad__btn_radio_off_pressed_holo_dark.png | Bin 0 -> 3144 bytes .../sad__btn_radio_off_pressed_holo_light.png | Bin 0 -> 3282 bytes ..._btn_radio_on_disabled_focused_holo_dark.png | Bin 0 -> 3190 bytes ...btn_radio_on_disabled_focused_holo_light.png | Bin 0 -> 3297 bytes .../sad__btn_radio_on_disabled_holo_dark.png | Bin 0 -> 1258 bytes .../sad__btn_radio_on_disabled_holo_light.png | Bin 0 -> 1456 bytes .../sad__btn_radio_on_focused_holo_dark.png | Bin 0 -> 3896 bytes .../sad__btn_radio_on_focused_holo_light.png | Bin 0 -> 4020 bytes .../drawable/sad__btn_radio_on_holo_dark.png | Bin 0 -> 2740 bytes .../drawable/sad__btn_radio_on_holo_light.png | Bin 0 -> 2843 bytes .../sad__btn_radio_on_pressed_holo_dark.png | Bin 0 -> 4481 bytes .../sad__btn_radio_on_pressed_holo_light.png | Bin 0 -> 3779 bytes app/src/main/res/layout/activity_main.xml | 10 ++++++---- 29 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/meiguoshou_fast_you.png create mode 100644 app/src/main/res/drawable/meiguoshou_fast_zuo.png create mode 100644 app/src/main/res/drawable/meiguoshou_you.png create mode 100644 app/src/main/res/drawable/meiguoshou_zuo.png create mode 100644 app/src/main/res/drawable/ribenshou_fast_you.png create mode 100644 app/src/main/res/drawable/ribenshou_fast_zuo.png create mode 100644 app/src/main/res/drawable/ribenshou_you.png create mode 100644 app/src/main/res/drawable/ribenshou_zuo.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_disabled_focused_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_disabled_focused_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_focused_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_focused_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_pressed_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_off_pressed_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_focused_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_focused_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_holo_light.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_pressed_holo_dark.png create mode 100644 app/src/main/res/drawable/sad__btn_radio_on_pressed_holo_light.png diff --git a/app/src/main/res/drawable/meiguoshou_fast_you.png b/app/src/main/res/drawable/meiguoshou_fast_you.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca4601a8f0266ec8467ae8f4d3872c65bfde134 GIT binary patch literal 43496 zcmXVXWmp?b({&QuU0dAUp~ba8aCf)jP^@^+;x5IdxI4w6xVyHvha$zDH}~^>Ka%T8 z{>;wq?AbGCW+GLUWie1mQ2_t|hP<4#IsgFF{O^N|2>Zu3X`mSZD6f^5meBmV_O~lA z#c0`s{PxuUtjigIK2iWsBh_u7N&?wyGzU;#o=cl948%IFx;paI2WX}RGS+my=NQ&2 zUmr8pZdEIpt_^NI0=7q*3azGwD5B$rW*OOGinWLcH&? zeQ%e=ras=S3lLAC%O!xU&y3OR$u~NM?xwQty6;ZAdR`n&W4MNhE&l&kO>x3MCgR;y z)TA#@Pc9?<6gAk++_Q)ECzxs;@|4lEn5bV9_9P;d0qg)nfR$uEZUo33-Y}s4lQ^{m zUVca&f+gw*ev`H|JN6d|cp~JQ$khtX#a-|d80k(rytRyZf5i@ zgZFO51JRG&XbeA`AR?6gFwIUt6H!80O*v6#e#ntY#5M=xa}pq)c~4FAawLgAKD%2X z_x)RiMGQo6s1YrjV(%4=h@+cVTIACXon#w9uL63ft-wnzsyC=NPvbrT`L)y2^Q{jK ziTuNhU>k2Y>JTx|BZegokHY-sD5__D!dSVF4Dv^LcNsUO>wz98YK#aFpd9g}c{9(U z?=S^#ZXv!_hWAN!j`iyU^)W|B&*yZW< zy1T>D(N7=dokjehW6wB>_Ob~3Tyu| zNMK7cB5ut#eAEB;SWW-TPZJ;Vp5&P zdmiS=u>SxGV|VPpa?JFY4xY(B8Di1757|E6UFX-%n{=*z+W&1bX`ENWW3DfIS5m@T zD1B`gq2L8IC-w<;PVfPW500Y*JmZo)BDO@fXB{z$bit<ɇU@Ue&??OE(R#$UxqRUn)JRMD%Ebjm3u|3+(XG= z{@7E>jh((R`&l5bo0MKO7rpm6Gm&n2`B^AGQ`wOSdUQpAZ_b27tj& zxldT{McGp}Yfqq?foIN(fr6N1|AmGQl~ds6AdTZ;H`dsB!M}sUqro|e>&_W=;yo0| zq0D~gj39a>#qsE>y#l;6q6nn~B?5l$bX*Xnm=jH&!mz{LD7TO?#G2tyClQgv?#iDa zRsirNgxQ(;hVruj_VlDna9MW9XitvjKQGa{ex#|m+DjbO;je_d@Ou8+xwr6>-J1|+ zAJ2?r;s}Ons$20g zH*h9TkE7)p+)yJ~*ojvR&U)2S$k1&v;PwnNDoo=B`yk|UUZ4<&Anh{K7GT8|6fM)y z<#A1nlhDQ%yv4&|qroX`EyK|qQ_<&txz&~0$pn88pB&K42nYu%&-=pz2TO+C@(b2? zo*{f$+*`mIOuZVEcVQq9-!85xhpMXr;ve`1Z*7RyPjGu+bXOK8LtHd$eaEm&ZeNntI22yg1-oFGY_fN0r9{|usW zf|n%LBu=_R0YriXCCz=5(th`!J9h@|-d*{Z)NG7CNGS4mylRH5H&t;?f0iK~H)Vx7 z<*(ut{6XI;v5{Inkye(f?4WquhGGrtpCFf6{G~kmFlxQ_c+MT^%(-)<_4-c(xjSZr zp!_-;+em&L4ULA1{<8-lzkk6m?l`g~Qf5-Oh<<2=nx~J17^9aPq`&Amu`o+QTS0?8 z?-=Z||N78w*EZc}R=FF-zY2YJfy^#u8HpvHaqNG)6fzn5Y>S6;no-4QFD{`k(?99b zfWGqpAgp1xA0#REJ^xkou>N$0E7ooQA5KVh?!X!Pd~tjX!G2CiobHGU+=>p(CP}MX$mAL2*(=Lf{DrX=>rqs7(%Qju8cudLBlO) z@wLMe3O!;SyRi3Ge0bF$GbyiZ73|@Okbq9sY#u=$F5!MAPW}QGEx38;uNBooK=}>Y zjD`OYf!*5hpPMqVym$#WGr_rvd z2fE>p4)G%F5J%A?g4+`1Q2XmvX(G(DTUnhqh!5sB;Tte9>pob-a!Inl4;Z#jh#y)H za3&5+I2j?<%MHJBee{oaJ3jNvr1*B{?Aa;bxc@MJzUtulQb57WMg-&8%mLo#FUu%bq z&~)&<=rfx1Pml>N9e45GK2q7`C?;pZ|C}jKhv7#1 z(8~qj*syw&Rrm=$Tfr(UcM=4VX+yWXa$}`ddQj!ockm)KO$3n+DqSFK*gJE z?o!Q^bIZ9)nQoysH69aM zB(q$cvKAEaVDBydK%OY(bcq%5z<0vzKNtan1v~0*eYLoR+-H0jyA1VjO6EuPb@J0#B%CnVHpfv7#^WU`G?D=`l{xEi5 z^A70YwIs*U;>^8fG@TL~F+ztMUk2?Tsv)pA%A$dz7pw|HHUEB6C*?1nSAH!5VV3*Q zQ?GqI6Sfi}#RO-$6_bOXw&DTNSe}AZw!eQb1i_UIL(K_F^-QW`_it>BN}XDKyQT-8nF7y0G1HAX~aP;10UwES6MiC%P6Zs)(=JrRpo5BLQmoYoh1hHaL4 z0pyDVn`=a>{9ir!?MQS(!}(){SY)7be0nH1T8=&KBs4!VY>JexpFR-|P^{8CHZUgn zSCWra(H)RA!Ci?OVT4$P${zkIjBw%O!osUonZ_0IQ?T?>LQto1s#R@S9GUShbvU9@ zJ}e>#=7={clxaF1bM~}Spd+B(lbeWWc=X52taDM(_+D|Nocc>-Z%&3>bx(ocm3BOaDP-hytm__d; z&sPEIg!qcFL-7tvd=B1%&$vr>YpORgOADn}SwWwbRnX8*JVYI{;f(Ee$*$1OOl}%kuM;!k5N?d`Q5-egAXu zpFSV#MqmN#vXo)SJkrkIV*xZsT)A#uUx~CLGyo%D+hz}LNP?SspaX`!E@X1G5%MO~ z#Gg&Zj~tj#ustCu7TDf6a(C_~VAQIJg}3>B=c>R!Kd(55&-#GE22U5+uRNa1)ak9^ zCe@ELv*d-pLUxKL3KbR)K8?JOAQUMcVjW0l6o~+-k}OE1b}yh)sY%M35P!Cmq4PJ% z`wK`4$UO$mRIHD@#{uO#d_?jTcQLKTwv?u^i*G@o&p>zT#3*`eg>%Stz?N`u?JVOr z$Pp7kKyeo^4y?lcsl~NQ*{yu&5KGcl6avN+^(gk0W z8@oQGYyXdm(~M>&JlMcYILam;SuIf|=u+(UA&XE{pxZ!JyvuqwF4=FRnA86q#^#gz zJ2a4Cs2i4i6A$*aQVG?`->_S-$tUioa+=6OO^Pdr4*kCpP3g?V1It)KP-r#mLY*k!&b(WIt+7JXe+GBmaUQo&RLbK%fbtF^&3y+SK`=68X zcRN|tQ+c@^{#n5_W&9$QlRa*h8p~~dl;Py2Pd=>Bk~(iqh%QKXNEr&w94T@OTcaJ) z)63@tDd^?fRQHO9^Ktr8(L?C!w8Fl3t(3jt{JS>s!hAe&_VIW7a&1Khys0E_?F#g< zUmk2tzHBHR#a{wGR54O;k&VMurh~^boyVm1A<}K%c=99+@u(+aTS5f8jzFwM=c9{Mo!%+1Si3OaP6;MYYF6 z8f1a}v09Cb4;&zD516y(UC!zs3*Iy&y7*B{HEz@;<%X??jK|;sGxEzRk1VQG>d?9M z=X%x2EI#c@hwj3HUzem%ths zU8Yyr!@G$mG^3^w`c59e39qJao!VC4KeaaSM;&U+(m&MXGs10UmY7{L3Om2&`GEFVCp$-i;gwE8ce2>UD$_jiEHH&;uNcFZ-=5$*(XFG~{Q_pPh{CM_!eJ7~x| zCqsJ}j4Gu6u_^{|bdxN(+5obM9c&8N_kmU#(_G7aS9!fRUrb~50=B=%i$}CCw;ljN zA-sbXF1nawx{-oigx4(8KTkr?HoN&KU}x&aTmaceT~L204NIe^E27+gATRqIH}GE{_8| zDT0+wx-}ukRpdgSJqwh3)Ax+|@Z88iED+>KE`Av^wFOXEGd({P8nFUrPwG7>Me2r8 z6|@H~rk@etv!XOnH1`{;sA`krZQsqw zVoxgeH)&ej9Wl3mt!S*!glup58z#rYN9*sayY({nRGj8Ky`5Kjo&|5%m2A^kTlb`y zlQnM#n3I3+;Ij?vFz`WFCyfs$Uy%@=Xv4e)Vz?!wl-HVk!hrD0Q)4Y)whd((Q!1Tfmhd0v)FwH#0r3l~V$ULwO+1V7e5r9! zo?=@&&E9&5Qvo#jqNhK1X-&Q|DF&{_)c$N>(2~2Lg5;^G@yv}wQXA66_N|lYyh?Ku zF;9NLjcQDPV(FC$52)f+$TmE*(NKfKR=SxP$hVFy@)vJh`jR=BNTiOMr%GdX)aG{O zF*P6ESnR{_Wi8h0Z-c*V#_Cim)|rWIxW}4aIc2@BmsvFv-wKJZ5{0^PlY9~z&W&i} z8j2-urm1{du~tpntvV|$iMBTK1hmTkF#*E2tXHgH&HfT$?_^9sW`BtWQPpE9Kz#85 zI(4X5H&r~3zWQtv$wv3$sMdan>-IVoGJ8bRVb0dxW~R!+AMvg$`fDqlQbaMeLKKoT z=Kw8MIRYIKn=ivzniZ96oBw8%T=AsnB9YN0qjUK zLU%_EKY=5l-Y|^f;FSWB3aoIx6+K(Z(I)U!7o<`#>A)kd*?I^yg=?kA{&cgc3d+l# zT~g1V2BPHW(kg7!BQcGu29w1KeAut7ahJ^i5Ea~R=6d(VRhKq*M)I=+i{o&Kl(JYT9g$CmV-28zeo`&7%N)y_W7S%1 zh#Aq=p*x{(m%aj3B{5z7UhHfPRLT@+kr$f+pWIX;{$`lbN%VUq2!_I?UQh_%552_4 zaRlS29_}o4aQOR%K68(T2qCGvOSTaO^T??9WW*Y80Q9X-$Dc)v%!=h-2mUmdPG0{I zPm;tqJiuEiu}sT$!Q`)?YH#zjAYtxQnmyWEHON4 zV5_9!O~=68i)1}6B4LJ`uxcZyV9kq~#MT^NNR?xfD7x;suU9YD-l4;9+XXjOQh(_S z>bakJclWk^KTH86pxsZqQx41?P%)HGG?wm>+-4B(&>WIcnjxgr3d=kBb2#XcGg!B( zsWF>Cs35GJDvNw%bHtTpY$w-4@{Y_-Dri7jhrj5GSmL^kg~C5#u^eLy)wJfoXIm1q zT!20v&EM5G-fNJLj-g65rE(PZBgpb(oYP!?qW6Zz{T>IVKXdn zO?GyeSvsrV2c&(qVS>7-7(Mkye^+WP2tm(r%@k-(>277R%aZ z;Dr*B=tmHgJ>K9v_ca#zsW^vlLuP>TXMEE)b$|Dk<=mlsROgVkC+>Y|sb13!QSPh{ zSd&>ERQ2lTFEfMP_mOF&#{to=)YcB}9t0QPbe_4>TwU@B)|HyolHQmgUQU;!bPyBV z#5Z4oMg8&9r*jiq7x>TQ22N3()rwZBK|w_}IUEQR84dU{z2g1tv+Lk+FaS_e!~R?U z+iqp%20TVVE8vzpsa*;*_wh)G!e{r_8y{@FvFV*&FT)e}$vQ40_)+o9R;fdrE|AL< z#?hmXDA(ms92!l;D&D6=LQ18^+k|{A16ypL$E{vwUE=l?qEBnfvc8l#9w%rtgX|8R ziNe4witX~|M4aB~=#ldE+YV<|B;nT;I}Hca=n_7zrHs7F0ZtOAZgCa{vO6aJ0){yQ zV!5xF_E?e0^bT$vDP3$gX=XP(r71hg0=;4Iwt)-65~SktB=9xd{|zR%b{xxqwQV+p zUTWpKoepi$D3Go#Y;nk6vQ>^%QNt`R|Dq=e-rAmZFDFkeg7H{R5gtOU=Rt&~Aq(9R zebE8#7C&rTJ)!aeERaBuLzaX);59emdA7!H(%O_wL$5fBH;Jo;_ zOP|Lg%p)0-Y+&(bCcfEZRx(R>9#3xy9y~<0I2t7pTVqnYBrUuvq&j!k0ZRS`HZwIj`RV6I?|qw z)irXpaqndtV-`9=)|k4*-TEc9V3Pd%#;GUxiKqIKMb@}D{>bw3wG@JtD-0Iw^3_x= z0C!|mI*Rv6Tt>wa1%==19>w#q*VrJ8E6m>?ba?lhT+E5l?7j1hC{pX2hh(3IJwiAr zktKdN&K1yTItkVDOWW4#x}0Q@}lSF9j}$}PQR(Xw_v}{`gP%d zKiT;`QR@C7Fg|;ybO^62nhO64*YrSE|Hth-Mog3YnTA~tYT(yV4!91{=1oA!FyL7b z5~6Y?YY4bVrvCC)Q){x%wX7FQfWgUQnSr#_q$l2FfAFk3-b4T$GS4gnH!o@muqkW5 z(*j6MG6#K8UooqgrXE-Rm$`vS#AUKQoM>vWkJ7 zEs0!}^llMx4doL^Gffj%sE44Mh9C$@X?HM*-2xK45T3cPKq7LhO~smj$7p#H%Ut|n1*zlj3f z90=fKSrX}ORXRRuoD>{F>+}$4Co3##0VxFlpjsPB?67Uik7FsE2kt+=eosALoQ*Pj zV*GD`V1XBmeq|-HJz%kacz!8kF~oMm-b7e|X^n8#rtXT6WMDG-db|klScKr$lCY78 zY4Iq6-I1)%(M8fG3r49@@3r^G$+vc!WBk17<2Rk#xvRBhon`IJgL?nTnRt&6j&xkH z^{Bs|i&EWVr89bi2MGPU0bKmQ`aB`q!Q$qUK&>LK9n8NoAPp*&I{mLFPQXPY zU|H+B|FI0&o`C1yL&i%z1W|#eKPSrqI%{bM$-xC0%fAXg%%;_&jkw)gtwp+b|7~XA z&-_lSjXH5%^bL~%dp){}H{=)t@cPknjn(h*A0?!RromTeOl43z2qOdtH!iNWOpCSD z$w&Dc9?WB}i=hDM3L$Vz+90pt4;P+;LcJ*@s zbbRCZNxU5BCd;P*Vt&TM%T|kGSa`?kosM}@yo#L}&WR6AXBX`oP(JpnUw)S$(Ua!ki9BzfBZ`eNU` z03OeMv{+qvSlED{N1&a3WvRWGLEduj_J6PQvjVQSG-2RvUIe9L@GAn#&o%=mZQ!5Y z4BY(X>L^|-VpDCML8}nJNPcDu=tG2_20y5%-OjvR1}MG~E#beY>;TZZxq3PoHK?_b zU-UpLlW*#Io%Sl^A;6(|Kq1KGiz4bJ(s|kV121=VA8|Fo>lwuU`y2yW4Aasj$v89a zm`?SM`(#YCIVgVrXr2RpUjhUm^a`9`B%lFAL0eb=KWXWu%V|CM3rD~!__bYQ9SXz7 zs)*38`)90ifKp>EFin+AeDXLmf}P(u*I@?KURNuD77_lbl3xDD7$pEgZ1IEL5q@Q* zDw9Gd6&4P$m89O%(yw#MFT;EfT3nybh06$Q~ajKJ4Wi)R(}h+- z0C{5%+0u69hdZJG+^0D3+~owGv0P2Ru&fxfT_6Eo6%s|-tMk)!i*c4#3NlgwN#_+& z{QYb|D>QqX`N+B&ssv&S4K0YNacw4jWf7MaW=2IXDIS05AJzotjZw{1NM76a!HaVT z`LJfKkhqA1w#`|_>wM0{0mF&NLs`OMxNSh&`nfl?f5xy^QK@^uNs_az-fwiH&xg<8 ztMJ)aYJXPXH|Bc+z%b$V-DP{?gj@hgugPZN(1RHukdhipwBKz#E$D{tE0pxK2k9c3 z+T8cXIT)*+bgXi$1=7}T=PW1k&S1StPYXCXVZq05J||w7;<~sh+3Q3NwF?%2yJQnG zuVAJSdwdM*@$Dk1F!X}>T%X;TtVP)9ko7U7K z&Y*X{I0HKEInG5%`K!Y5w5{Bm1sZPGQjRM|O3pB}vlnKE<)<}~erpdF1<7!E+*oZ? z(7k-?^kLxB!g<)r5IFNagh_(xe^;hcAR4(P+iG~W$p|LK$HFd4rJsciRk#hm>tw1( zR4#dl<|D3Ta%6q7H$s-dCD<(#bN|XOh#C`pA@}MJ2t?~m2E1;f7g7);-W=Ww-U9E_ z&}#xodSd~vsS(e+UC(z+`96EEsfYllZtpe{J8hdZNB~@!XY!P|TE+nJJ6AZpR6%V* z2KuEGrOMFCaY6v99f2*fFPBo>dD&B7&O^De0L15HeZFUQ*7M$WP)u!>hpAbGeg^Wm zu?0WM78M)-SB^R7NBwmfcD+s=9IvcP=m$xl*VMv8v4xZm>j0-o%E!`Wa8!=Qr1Qkq zV?xApN7rks;6EzuL9DHR!!r(sgewY_fD!3;R%>PiEaeCuG)u}pSP)?mxA+(j*Vi6)0N*Jj$z*+YEs1qaU=D4}2ir%zYpj=T?4U12`&oe` zU+W#<=hU}?`q3G?+V7d!u=M6GvtX3CBcVEg_(MbIoP)Lw2E9iQB_}!oV7+Lhf_3N< zWT;%pd?KH@yu?m1S#z+eT|g^n1M~8vHBjM4Sl6)dRMPh{10TRmG;RmdSL z{{3`5DFf=?+#VX$)O}LfZ57q}2C-q8KurF(@yqZD_s`8<4)MyuvGq^l1afl~-l~&X zI)egGJ`5lwZ(<|g(yTm&Cbm7pPzAe&R$)zApQe_H23gUY5Sa!+A{z4jti69$h4DC% z*VFk0CG+c;a<3-5iK1zHL6-BHoiy%QNRW%@Da*8}ojl>bIkH5hyP=FqV?a#P#P0bf zg?~&Aj2FK=B9~bF&HUg|>Ry`ge%cTLtBRW3@ULv?yN#o)l7F8Ku$ya-L@cmBFLD=+ zN@Uved6rL<#5K{%!joy4V-EnzzCn_fYo-2*syPUK0n@YoeDV5vp&vkAt0zv!bQ*T! zg}buU_DPzY=uor(AB$1FPr1uZ`N0jY0xnxTQdKx#~NW2ra9xbc6vST(so-Q z@kR4tQ#7-;6rsRZ6T_u$AXf~CE5xa(4x6JY3C7o)%s&Hq1u0gRHZtj7emuN9{YVd! zAs7C6)MfJTKZVKDbv2JP$USDA^gQ8gWv9X9V@I&mx9$0WM$I$3&l{N@o19jzOAnNY zh(@1tLIFq>ZpOt~)ri4Ynm4Fl2Y6|v%s6M$LVG{(t;r(j{?7fpE#%~Vemz{fSbCNz z{b+FBeSMmE$@1H7QCfdSlr@FnTR=%Lv0^HzxoNSZt++&!m05`q5*Rs-z2j4HX1UVx z%P(3-%AAZWT0Q&(qry*|WELC)-*m~^0*m_+t^Q;)RQl*?>D5y|kxG2`c%$PFZV##? z_7_r1|NG{X!|Z4dwfnEfBRrr2kzL}NkCMS4By9#I@U}qU?5!V1wKdXV@UF+vKtKuY z<`s@oWkT@rDxjnSDipoVJ=@*BB#&H0*hwts>~Iiy8!*+b zq}iGDk*S1{PlM84ak}~|Wi10q#xb#PN;$cSR3m8X05jJ0gH|!dB|QMeEZ~*G!y+NG zK6y>cqezL_gOAl(Ds}utGr0*IM|_&qg2dsy^||%pN9o3w(+`nG8hi^pi`R!Mp^HFgqvpCNunq^XDeJy?;p&s;wTQUjJuY) zBN1&+v;WGg)P8q*P4ut!vl@Ai7kf$#DCtwOiG%RaTIwojBl$I=`o z?FyQ8=v&4x{Gl!oSWt~`zCK|l=1A=*oJrd%_?5HxVVJPdG!TBC>-KAQyGA=6AdZdw zN$Oj=UrhAtj=rrXAGt1Ijj+o8d;p0#)IFCf$ZnY~*;B`G-3OqaM`-b>-ctE=kXEkg zN&08VlvvNxk#FfHOvd@IuZ!r{U!oQy4ZUy2!;B70V*}caE`gkRn>PnDkZ5myF>U}E z2;h_FUb5QXG>XBfyi7Zka&X529?Co>wz$ssf%cbkoxDWFyUtSRzW01fE{dx5_BkJ1 ztZKp|l5!!@qydZddxNRP!^*)M{H!4LqOjv(fJ5F?*2^z4hKFA`s=&^W1qHK5So@R% zTnRlj1zwnnXmmLW!aSilD7sLyHf>2by_wFzPyv3EL{4xsKKa0dPKK1v^1ncp?RzD* zaCi(?I*+s%PV2g3dF@1(@Yty~OViB|_y=sC@jMc@ILW>u?AW4>k|Od^Wi!-DUde-$ zLJBV`?vFf;v0+VHsPiTP!{{+~>DQrxc{s=}DN0ym&>57ZEq; zBcC|CL%N7+9V2#&$ahb&_rVM~&c_;EO{{bFbJSgM(dEE>=CAMdhK}cHzQ=J5wIsgN zf)z)%u{a(=kcj;Ag65NKTz-S7_yT>md&J9XnuQCY0DO}j(VJ3>f1HTNG8YM^PyaN5 z8!+3aWWKnn@qr0X9Y0^$ooWR-;1gBo`tcm8z-qG8h|RnRskS{TfN@nVKs%-~aWH!m zt$(#GPx-#9x+%ry*}TAps|^O*g;kjt!FjHs6|)pBt!$&9$~kE*raV4}FNmMXfi4J| z67iU2%#;J{(q;-DC>9gbHhMID)MTyn)8wOp%A$1C=`D&c^2>wwHM_8eWD%q?m28u@ zn zBNzu+aW7r_ma+(870t-26S1yRz|G3j%Q&pI+v@us0gLfox;!f_PSm{nzM)&XDRu&) zaF`Q1qxTS)`_ZXNMczkD1HfW4?{mmCNnsIFn)k|3g33yjI)hpU(wJFfJ6UTq@2(9= z#+EyzVJVUS)WQp2>?4OSEtRGb_C2Q@-!C{AsihnJvuS#mU%m24e z#F5Uzg&wICR}`V(FDgeSHWmd|F!YG$!=dmMG^wJZbF}J5-dqB0JoqM8E4y-Q7^RGB z=%=9K%}Tvh;Mt!j6aCB}yZ(0~IdX{_dWUe82%CB`-?j+QsXY7o`hZ6Z&GOa#1G+|t zOtVXJwc*pKdy%K?46t&3d|>cR4bsB!Th$8}O`H=($l zxkL4>y_j`V%Gj0E_0TyTqu2AWL1qer!!mXIPfHO$;@|Y1EILS4oqgY~wPyk>4LreZ zItb|i1Ya6`$Jnu^5<*o8Mr}W3!Jx|T=qhvJ>O-_BjYD5t{i-*WVOMgvwU^k!@P#p; zqWH=r^i8AYZnbcnbaCzh2@q}Mk|{fgR1Gy$xWR6sm9|X}?R5T)R`4?7c%HZMpRz?( zNnUhA3kFBO<`zepgR%y`g_9T~w=hU91{_1e5`o1xG z*Lsd?=xd8EG;+BJXVL9Y`?)V9+L(|KrD&?hb$xzr#0vlszB0+wOpIeMz8xLbH3y(K zF^ZJY2j3imKDN^3f@)yOUYV2!gy?OXu8)Wn8%T= zBdSASmeWwKB9fQ(+fP18BSLk|u@_WTU}JA< z$At*2=$232i)TU$gZo~bU>n5@4rUEY%r(ygfukRp#8WRD{xj=S6L5EEsSf?GwQ7*_ zMeOq*pU#x$n6eG5IoVzX<(ntR;-XSY@s$eNnd0`e{94_I9s8&j1f%t(F;0UDq^~_Y z)8q!^`)V){d@ub^J(etUQ7c~%LK@)T;2LdLmDxU(tXb$f=K&EcC$mylESHcSw_eaJ zPvysvlR8phdJboEmD%43^4S*a_^&at#j8KC*8!X2{aHg{jO=DgBx~2ZT+fk?JnZtYf+LN@~ z%RZAehCZ)|t4Ir3jxU+}qeRKR50n__?(T?lPSnK&N>G2f5k^6{R$>%$i6@1PfaD6L zJ(6xYoIMY(JVXN^9{64r4cHp!ij{wsrB-uEkB?YU&B>J}=MxIq?I)-Rk8LkU9TDEb z&;3VzOIl6d(6#Q}exHWJI>9tPPInT4Sr-+z0G6k=NMFCPm$^&yK~MqhMFNu^8lGu6 z_H$#01>2)crtbe)t_3NG08J5CKDd7!9fnn_v{jVmHLL9N4qlS~`RbEu5x&$HQ%cL! zUf>Mu9VWgc$m|REv0;>>poWTh8Nor>yuK}yK8&&b)80#p^0RIsLd8~Mu^C6sBn{Sh zlp7w2av>o3{=R6S6jA$kurh5mr{2{e-J(+B`j7t@YfLS9SsGh~uF>EF1CdCkzoXO@ zS~5aD0`{{aIBaX1+0zL8Vl)J>w)yx&y-87$dd3`ZpK)sa66?4BpJC&4h|llyFOuPT zt7opEf6#(#Usb-OL>U8X3W*r|JE*r5_Vb5im{=*kc7Y+eU99U4zw$>(3I^ho_voBrxneg z3Xw$kG}85Z2cv)b&uxc+vsM>9kk8NR5fLt}Rk&?rH|p!s*hc9d{bGeUrLDOn#;7pW zJLaN?2+W*H+oWeDjfx(CDH&1XNy)eL=RTQxyj^>5*dj1gWxlw(5x`iYkV*Rj?x?y7 z-7yP>`k-*tZuasDf-L=VIqs~uQt(@ojxq>)x?&{FUISeh(_!5R$GyQ@r9J-KQ0n-If5Hf?HQd;={J!YiA~e!T1{QXg} z#wM!pHlWPB>B5}s0!RQs=l=}GT;-c1jSROf>@3?Xw zmh|}Uvk^#(yOwthhX<%p!2za3emal-HQ#chWHh4daSDR6s9ZiEJ_I?E^J{%WirI;N zkPl?SrDH~nEn}bgX!7T?pbkU1w2^OnyVBXy)7*B5=6~FN=;sj4d66LO7T4C4FjY*v z?@H`OWx6RvEXN1A=eKDWe^CFpX|F*eu7Fx#o?A$bWtv5>0JEZ#yLSak;r)Nr_Jo-> zTD8|+0wMy~s%E$rmFEK(*AfCjlybxTAO9Uz7XwzBy`SADVF)Exg` z^VXA!aTk4b1F!fH%4+Wc>4n=Kzl$D;!oG$!dd#rFbdYD3sreLkRff??gUS{Ybe;@= zu6Uxn2N6+!0crrrc(47?@&Sy3#Jf@linxDmiE1yP6WeW(A)_j@*R1NqLtIu|i>r~@ zklJ@h+rIVBm{2F#r2)15TzvSk?V+QP?xO{`8Erns09RhL`CXX& z;ufC(+{qG9YOOLf=d!2NgNlo3amiOvq{U6a)-AU3?T=&xxGAf{)LvOnL0H5DrXU2?JFA|C44@qPX&l46f)-(r z`8O!W?XbpHmh$F~s*qfGSH0j+u{*gvc5tWpdjLKDn;p6+VH+*qG9#u;0yMerhUdI| zmw67$(FP3IsZ;S@VH|5zP`nH_TatG9S(22B#>}QU$8dQ96%Zgha;Zscd?qX*vvY_R zfE_zeOzGu`i`dou zglB|A+M=gB|7*?xMhUa+K+_NV9CwgApnY$P3<5q$SUHaEQieTWy{oB~q$04%(ZA%X zldQ1cGASS5A~~X827=5@Z3u!i6);>mlQM-~M|l?aJxWoL(V1;p;5B!S*v|6;hIKGh z>CEjtnQ`gXq_Az-R5)pwo&39g{FLYNROkN=6R)bTMrjKixg1LYN!hGJGGb@nU^Kyq z6sE~}TCF~H1`DpYVMfx@<8ewV`nmk-{qRR3tP1~2BW*yP&zc;^fE0G*H1d2do4Cm1 z+0Bnc;cg|REj6{9qDX5`)LHFB_tHTC-JENQ(5b4e+@RIMMy9p$fY>wbI~WP_G|B#o z0b#x6z|$;GYd;$=vOKiYE`!uaS;`<$X13%E=9{XTi5Ihtui;C=A4rI{FSgNmKOc20 z$BW*fHz%F{CRGHAiz3ZQHIadf$4ceRN(H}1p|;P=@c?apn>)StVzONvN~O1msgIt2 z6)F}=8+?Vazd!AJqwvV(yLs7%#0#?;?F;E@!z)yLlMA|1IbO99kDlP(%>Vw{L%!t zLAz^Wh-uij48rq{z~+!H`4czTG4t_TSseS@T#ajWG?ix6vx~Ku>--*lb35vL!A@RM z*?6uYgeNW2uAE*}uI2i#%`+V;D>w$nRtt=7sW>!WSRIi>4HNaGpq|8Di-4QkJ0oH9 zUI9mMu3%YwRNN%~j03&jL8pYFY#mK&1A{lJwhS>6V+<-8QG#{ItV_{-6yzAHFjKYl z3lOZ>S!M=}Sn1-KM=1XtgZGX1+F~5rKE)mXy%f;Y?^RbM*4%R(;u31 zI(7~g2!M8(F>~h|g6qQ{Etc&Hx09MpXTFC$hZw1iyfUOp`at8Fv|Ci4i-e3wbMA*> zJ~b>@jKBVABM5vQUC0I{l$3tKmwmg=6OIG>@WI>ZOKfu7g-F6{O0e{{RnI1Fx)mpD z=)ji^2MBd$4`sCmqzJRp2Zf6F4zy!fY4xdUDJV@ceqL<3&d8}b9Q1v1ab*(%=NKKc zb;I^AMr24`O!(w}dM*Hx)7*uZ%HCxAo=?e8FcNohmIT+rV^C^9JhP}?Q?!#Vh+F7mRRYJL*aJt(YKij54j$g44s${*G(q!3n;xFQ&xVEV^5C(&2HNSkE zx=lRW(?2V|A!1)%W4M&KK%B>Slj)*p&>g7BjWmIKsLXNo3v2k!5!P%P=+{@w-+yz~ zfCnNX;{HhG_}!ig(nJr16}P#i{Sl~=WIsOt1{xbRYzJ$z@jA0Q{8rpwrb3H0)CcD& zGH}-LlUT%bW#8sW=KeFuSvShmND?RtXT2_MZ-MK?bM&9REFinR;+B3Lu%vUn&a=($Ir^m6|o}cRFvhR`?LV-4N~fA@$Ndh ze09vO!(4^hPACKnHG$#KO<}MKCfS2Ry9sX@wxiTvNz1{V5fg2xQm*;1J{7}XZFW|? z5-@+bTwrtVQ~ysSwo}o#vzo`BkT09@aH&t8nH4HYod@4!c4s%nx_7 zATCe{%FFK5Iz3Rdl}(g8qD9%t&7!t&r}=NB_D=K zD;6=i#q1U&jcmgwrpr-QZU4u@RmVl$J>4awySrOjkdlyIIu=AiLh0`Akd*H3r8}fM zrMp8ymhOh%^1Ltq^O<{R=FXfsXZBkdZIz44eC#^@1z#m3)PxnEDTMh$UpoAnzAvCnGJP_EJylMQy0E%!4M$=IL2$>p3D<{ z-N|#sAK-!_QKIj^3bRDeeJkZgpUkHC#-b=vii~~2I})J(B+o!yC*@Q4%VHT82pyzh zO0zdeR@`RZER`XEMQkdxaW?ZLKKT;&$&v6L&o-zomO6bVhwdzac9St>51$#rdKgVp z=Tups;rXsh0af5%eQ(xzhiZ??F?20EmDWokkQGP~l{_X%L(4naK(XL~0M3(X4kJ4( zl$ZMJr`%M4&{HqAU#|;%lDNMVk<22$m5c$aiCd5%lDrG&-mX7!QCW8iATQRfp0>pd zXdT0nt5Mjoma36@n^AYmC)&|I(a!h&aJ9U&yc}}UE~e%>KlWJaIse@8Tw%**P$;J- z!jiC9)1(BiXIXJ_%MtJtX`z-%u#zrIwPS4b$VU@&+wddVszp6S<1i6V79w{k^jebV&r zMcjEHS9T+_!(s+EWDnD9Jd;AhWW`Tsr%M7Ck}lft$bjAEQ!h^cnx}9JlYcA%2vu5S zy<+VZ0LGEbp9ks4qrQGP9z5K5Dp})O`jpR;jDf#kqv*$V}jp=V8`}uC7P?$=w739ZQ(GXalU=pX{XQ9)y z32lNEjo!_TDY&c%A0MA@;C|3?^(u}*Bk+mGMq5%Fdj(clj59o*N%J>Y;jwOQ1I2Z! z%}z(R`IpMZh2?aC^KVtvM!FjLKiCx?H>?{W5vj)HfW9nY9v#o~iadRkg$H$50Hz@N zX4$b1)It9E5YI(@534%wNkd?KORGcr=M5X%ox-*p5twDVX_^7mdk~JmZIXWc-aK@H z;6#X;uLCYX-1Hj&2Mw^cHn_@JIw~)2TDKAbFZ5H448UdZ<(rvHRBSsr0c}D!^iTCu z;oeMyxhTNuANF=N?>njhglQ;?4*ZuS^&)-%(32|sz!9na5XO^o+;N$N%xiS~<4`Jg z7BvbWV3D(G?2<%MUyMDw_8j%Q-ukd*w&c{Dggf7)?rY}B7Z9jiCP{hBL~uxx@3nsR zrity(fbL`iR;Xjd)-2YxsUweik$CJZoZGnzzkPxV{kdMgFUEbXzjS@+F2EoKp|!kL z+h9pu-ga$mVWj@E033UKOXFI_%ro@Z*F;6nI>%0e{o(1aUKn9HM3XRnj{iK_PCz2T zhRfMuk-=#FL&<{z*rzS@;@&I8J9zN66zz^_96%$b54_NH_NzB4Xkhy6CBVlL&_1@J zx;sSm5tdc=-o8=k_B}LTesUjYj{$7{p_x<#-Q8z|q99%ghf_4znVCO2`_Ug`ePA=0 z^+xI8>pWI>fD|D+SFL&fH0Y~Hvl198yja^=^G@f{!=kZXkhd(aCzuwrw?^KQ_iR0O zu)*V$vc7>@uqir5oV}H}aY=egD8#>;zp+OAyGM^dSG|y`Bu;2Nbz_=Z-1r>I5ojgT z;&9TxX4_&ejz1(cpU}vW2GV{mI8l>#V2*MalPf{G`N!*9C2=GCE?{*7a^kZga;LJs zR`p;0DAqr7v{myGDgU(dZB2H4B#dVsOJ}(#F}sqjt$*Gn(?H^q3(MaJmN0XA1UrT(-2yGThm={oz+}Bd?cZd$%f$lQbE}TGrH;t%)Y_* zDxW{QWV{m|4)1_+BcjoDs^a8Z18~UKPx0G0JJx@zdY&|vI3k9s8+<&}v4pWz>K@9dxc#Tb z807|YgX9(y3r~zI!K0Z1%A{jfLo=kC(h|b`97igX&67%-EdUBmQzKD+z->!N!EyGN zAKmftLD>POX?-nEx4_abQMygiG%228)^5^hSAL5(#i`+|lZcF7cO{P!Gm8^ z!?lFCcIvYf^!#j_Pt&5=tgoCC7tCg%`q@-eOscd+KOI5spGAb;@e;g~9q=-)FKUC4 zp-=$#R8j7$-#g%#N9a+G&MK5kN|t|G0&g#OSK1EiL4KIbT7;;ns@j(|pCuI0PMGx5 zd(`q*|B3f8edxw|=RR#~=*&rv1&sChRm%SIabWas^hgs$xXQ$HZHC_v>ENi|_@A!X zSo$F4NCYFPwBLpzqEZXti!SWe@7J5CgFebyz<8g}Fhg42{9f?|9L+JcI=~F$f=yRH zUHtoxclx4B=2D7|OJ+l3;-V{-`6HeX+yPo);0H%wEHVHY81gs%h0a#+cGSU$E!Rf> zn1USl3iqGkbmdOnOg}rTA2<#^!fIi#-z9-BCo7vJTyF!F!>S?q|LtjljnNy{ER@}y z7}cy`a%$)}7tA|{XM6xtf;GnLv@zR}#rt3cnw-ze#^ZznF)Gxn9Uj+H4MEHOFE!_K z3vE^gRP-l5ez#8?6!qShIB#z|xXc>)zCtkkN|GSZHh|w0RVNtFtoBFP;DBr{Vjxe9 z)pI~0Z(f^9DlGx5o8*uX4`cR?!n2t@ZEzl^6sg0eel5Aa{jUFrQ)4?1W|1`^YP%pv z)|s!liWzeM<|1rRi84$xNHeHfp@gVhe5-!%=;s3_mvk2_Fh@WgHk^*3!2i%jtB|5A zaRHkpI687IjModBS#?eaNUJQT%Tq4c!l`C7L6hoWFK{Bs__WGTUze&0CWP$g=H+dF zw0k*+t```_eklAlO8>2;35!2@?iL%{&lo7myKKD=neAd)h~hm&wA=mM^D>3fpnPtO zI)h_I4@5Mw@tY4l@W>06eJ?QDKcIIldh9BA&iLis^Owhy?w>`+^Mz~%WsT2oPWf3O zuhX?OHh<+;Kn@RAZ)T_+I9p$h7WvF>$QVP^kNpp57(|52t0IVO7D`8h)z-F0J@|gs zF+1)NcgO!6Wv)YkeGnzZDl|^#rMB}l>0Xc(`9Z^1FjJ}K-RAW7bd5=UXu^83`Tmkp zojKsn`BKSj30A=R8E3ih0ah$rw^Ge;?qnE{v&EFlFa)8 zB92r;*y$6hOSz&o$u}34KL$ElA939}?m>txL@Pz#ZCAd850k37oZ;%a{990)4~q~s zZ@=R{uqD_asarxj=x3XchQ8hYSZd57g7fK!DCW7lLtV!3__hV)bZ*hFiAro_Pv`(* z`q}3U^P9wKTcSrjm?{`8*`g7#Qo0P2pFZR#w-HGja48dY622uW#TwiiP$xK9ixQBk z_jmh>HGy((mM?TH`n(g!*vMx%Q%LwRYFmqreS6W7HT+b?gPC$2zRucS3P{4n(okz= z=(v*yA~-MQb~0pWfquG`XN1LKkG&c0eb1?URc*4^*IkYVug}G2FqX<)*xpLL+ zc>j8(HBwJw5UWXR<4%QtxLjZS%{vXtj}o2-}Mbb?C>E> zShoV7+4n5J-bIHFVTKRYjLD7fH~I?dIb>OUbfWqesYcU`6}kMh;lkgNfcG_{*eLuj zerfj?N?Gtj-b`wZ{>M!XYWSc@vG5$qq5a}&K?&TbNa(t}aV%TT*X8DVXRCl0E4)Vu zz&c{ivep+68D`eV!YXD|3NNK~B8sq_?zhit04J&rhhL@NvkZ$xD?Rc9uyD3FtA54H zKR|XlBDbVEt_ja_hPp9c0Ae)$DV8VU{%A1X?s7>q-9rvO%Q}p;_0;`LwP2NK+n@T9 zWPX$gXW#yno@UQZxJ&idY${*y-hKm!W>obHealTMt*}x!9wW^49^D7mD^a{8p zo(F4sIcO-lqG9jGpYk^tQX%_odE4W(`j(xUuh&8_Pi7qqr%d%)=_UuD8|krap9B<* zTAn1>tQF|Kglf7f}>;=sb%au;l&D-1OI~~B2TZd*enND&e zXQt8A#drG9ELeN?R>i^$u0$GYY3nD103IwOkr4s;)!$U0??smDslQ*Mzk&+n zMZoq4z%GF+=F|JCl-#6-86nNo4va2kz}*0Eg$%T)teHQec3^iY?^xcL#ach%wX&RW z;IsJcdcV+|a3q%Ik|-uKB^aNyQlGNgL*oRm9CcwXo*kp&1b(mrz#Y)#*3lft(Bij_ z3oI}+X1Z+@Vby|ti`!2-)Q+^iD1>iR00Tk`siaxDAmG4qYo=w;#O(V_KF)rRC zFb6+M|F#bkBE+}QR`>aE%v}S=MHs6|*BDY0A)QM8zR~;HXxB+(LH3Kng&2#k<0qej z#DhbaCpy0>=mD~*-GBdg1i2OH>hTA@yT4WM&f@P$L2dMc^raV5&38`;LBb$D2 z^PRJPGKQAlRXuU3ju6q*s)H5r)GK|$pWNA1<4zA0;|Bte5i~P>GC753v(e5!nGxLa zMZ_E{iu#QO0Q3emwWi*Wzj_6@JMQQ z3{w$cX;chVO=>ETyFxZv|2vWA6VOX+VSb;>=8L@7syCbv+J?&#)pCl(SJnE6kAI7R z;mEd*m{+8~F(RCd&#Lvm(~>bb;vUB_o&Gw5%kKp^Gz|5C{Vap&Vr43KbvlSFSP@$q#po$f3+@!ekg(}z|Dj)Rs9>k!}RR|FJC)u zF!ggqDjm}frc-=vnRP~pCt;Y@>i6VIvgPPjYpJG4Fk*w+e71j4WN{>K}E$-6girAwR;iUeprdm$l%8qqquJK5!h-3 z3znRDZ#bGo9mZZ23z09PJ-c=tPizjd+}@OazG#~!dYzttP94!ss0Z zKMAu; zXY2UZoH%aN@S_!`?RDW!p#G$tdByL-T;JATouPAu>^J3YXIVVD0zP?1biM?p;?6fd z(HoWgQ|XWE?@^vm&Api#Re$-k#25HCp>mn@`ww*GC8+xP9-k#n4hc#{J1y6L7w@8m;@!tZ)rU|EEF}FAT-e|0z+d9J+%AYqPDqC0-^$Z!JDOf(6m$f z;q_Psh23tkRl|-=cZZ@$0)}nkQs(!B>Ln&6;&aB#h&hxl_dmylNcU#6xL~7ht3xb1 z$hWWYOUtLU>0|N))CBNV3}7q?1wq5*qB}tRB|HLCa9yg>JqOtZIo&-fzz4qhw=K#) z;AzuBw4GGHaIo#*7-sUjuIL}^{JOy&F1U4tNxmr;uB8%lip<3!ccYOo0DFy(i4XNf zd3)DEEHU=xerx(ghgAbaTzAN@Vn+u?6CLGQun?K%t8JUcUB-J~m^-3sB?C|L7wP9G zP0*@(^O7Yu?48!0pF}PQoWjkA8q-F-3v062MtzB7mw`|m__6_b!M3pxzdIg`t=EFqTd>Q< z+K+`rxI3BqOJP_blHMk6(BJz8w08d{Ox~5`|w~_gXi{ zC2(0H8*alXS%yX7&s^=B+c)LF`1n<1;%f+Ju9v(%^86N}vk6CRSfvH$RHZ4a?K?l^ zE{FlXh+PqfO6rn3Y}a+Vs`j@rRo!)#Ha9eWo$+r48T&qWgyaikm28=)t$H3_snm(K`FO$Wt<&t6e=ULkK?yucnu@xFcYk3vsEm9YKna22 z*mDPLMA-A44Ib|Q&fBguIwEO<-}Jm}@LFl^&}tPH1<9i2_cJtmdk2s3?#CkIa$Uj0 zq6-hlu=dzL$?$e-iY;^keT5dC;XYMW%GZ4(jh`-^#b)u`1N%_4n#tryU5>=>=%NKTe%- zfUUHWDfV4L9(Os(KMHx^-KqMvWGQT4Pa z0&vL&AdaLG$74XnMIW`d7os3XC5EZZA(F%v82ov}3Sl#}Y*wLEALgtH=IQn=ez!ci zFRlPzA^kd;5Y$NwH-t@ygY&Z4V7bK0x7W@IIA&IJl~`P0?Q0!Dtof%dCn$Oef~+P^ z>BGVqs4zUoIaN_=IcKn(u=R@gvNt3bs>^u)YKaEvhsc$R)SX7J)6>L1ELDQ}=UseZ zH}xKUo`}IbkllQrwo7@9mFhuJs0Do!Aq*w2QwZ?M;O z-?D1+HYe}7%oPIDp!GhkBuuk-iRfLScw+zZLC$CV_o0upS!jS?nqcYaFO{^jOgHcU zZt$4H?V>r~(WAM1iFlkM|5~BeenfbC_`p2>e%dA*bPMnj)ubh~SkZ^(@$&Nq?Ai1E zavN>)8D4ebadNZ0TnO^(G=(p-nm@GOs_4AH@AcT7vHL@5M$E@;=O7X+_UI3I49rb; z$nvc0F8!JlY75FR=)Fb^3nqo)nTELOGCm<5fD#wL3$@?Ikmv&jHrMrsZ>sjJ#~mB=4^@>>vv{oPHBIrz%P3_D#MbHWdil0VT1!6|) zP6zQX29%U&I72F7;t0BHL*qJL1|aZ z=Au2`=B{+;+$9eX@z6!?lbRK+f6~gxo%XOt2olQ}rOu~UW|0yn7+?Yz{3D4aWlWFx zm+dWz!7oAoj>nhxMp8YT@fximAwL4e*_d!%;0hU)4dNF}aLxaj8|Dt)?^R{xB|QAQ z_3bO19~8Wwx!JimZdv@)yZ&yImdMamK*#lXDpTqT8n(8cHojjg=>*#`aL=n$^KL}KT`3by!?TG3#WC%r} zGR@1+RaMVPJ_Ci= z=9v9HbN9pB3uM^#mt@NW#{&-?silakRBr8yzCIKB*gqu;bgN}J+5b?Lm_;fWVuF6& zqO%Drj9duy>(SLIJB2NwLx&Fn6j=TO?8nlp&zKWja{!B;rjusZZ(J~V@CEcUnwLZ(N9lR!W#M2Qv<&=R?W}CK` zURYR9GW!VqLx!QeMW~1>hiN(||ILgR^9P!IceVVWmh2B-ken@g^dm1z6oTxe&R8NP z`$h^jxNA>yBWeqGZ-)+xqgYvH56E>yE5Km4<1JVRudDLVhve$o!74UiVp%DFzu3|9 zsk~SFfOF^T=ZxRtU}e$nWHkPk02ZK9adk$Bxa0e(@73q(`#x()X-XO# zjqQPcjF#MQoTGL9qdQfiCGXHWhJP4=J>t88fB8+^^pn#ZT$s9k;?5S#_MB_Mf5}n4B~b4Jcz}7>si4CXZN7R=2oidXWb# zR$BOb+nZ+i7!ONB4|~zYg!_LSslc~flre8kX*yelileK2yRL3$IS1HMm{9?iJx{Ii zqdArv4iozD3sXKQRl!UNIKLOLPXXaE`#3`!!ydolhwlQ|e!7UNEBlu5%E? zngnw=&dI~T-uoM1rW#X7QU}xDyYv;JmZY=`>?9%l6JnbTy?6LZKZIa!K<)_Hk9+3} z4X>tAtd9vgOOCgzI7#z~G=J#(D%#mcrL3n9+XH1ru+2X>nd4trKVWIiIWiy0j9@Jm zUoue6(Mi=rST0!cTkADD5N~bwSI|aDlt7aKee3V`_%W64@5t)*c3d+hwx=&&=+udR zfK|&E>sR%@H|+jQMY73okyAMla=)0E$AQdjj9KzLUDoW|dZeapAyMH3Fc2Rym*jR0 z_H9;NG7n&}39D5FGJg-)qN}%p%fWs(!|cbBT?z&_OJ(SfsIyUk*;WjeKUN<)QO(^_ zFNYO}DdOx?mjD?s3;g^`T~l-$q~(cC=TX)^WH*0&cCFYh!s9_5?L~pK+cm z=}AAdSQkaPi*7P^s$8|RKW4#c(}!x`KJ!LoV>5G;$YS3mFE{^GT5{qHCi|(DQC#G@ z+TIC;-3@*R(;*2V0T>w1|K>F77oNf0HuYz-(`lyS0l)+2e0&Hx|Am-1@4(a4ze|P_ zK3H`hJ+;R6k)`>T8O#Gu071Y`()f>kv5)EV{0YS4SLtuwXF02aIz-^p*KuXjT)Xg# z0$E~N^rSxm`!<|Xz|HL^C&RlReMDHd(FBQnn?q1J3_X2o>5ms8VJi)T|BQxy(zals zzc<#$b-@WdQj(9do{9-id*EX_0k;Ql(YS7_umJWV(z8@v4G1yG zVHlnn_-C8A@DA@hZSt&lG&N3ts#I6@RZB=I{e#uUSJ^i;$wL?5C$D1>T07znC359$ zsY5qo98mnYLTag{xF;74C0Ghy$_6QB;(R@}5Gcm^ei*`t3Ta;iV6tww?Vi*oQWBLk zf+3%Wg0{%;#|E}{{@Q5WK}Fy;mTHSy9%7uN2+fiHtm>HUNld`}vi~q$aVGmGm18Dq z`Yp<}6hhm+9`>lLe1=UJas_`X&47yVM18z6=^6Kyk3@xH(UGl^%K4tpU)U#lmMjw9 zgeoo817%miyV_2UB-Wy79HFFy8M90@os6X+AZk~}4r__iWd8f&@2hSS;%n9Mq7=Ay z5_CvM2Z^o2x!xcBhp8yx_$k$`XuQtMs|*bcW`Y~7dutz|>a0fo8xKwros7}cEN^~m zIn-5&I`EE?7)}_DI1nx%aduLRaukcjQy~4%ckEB-v3B`C>6l1eE(ZA&!4sdl$yG!| zZ#;&sJe*B|FtU(O#@K3dF!o!*$7BHit6}7L%6S#O+WOD=h5nFFZ_K?`#!rj_lTogb zsLFH~0k%H#cOy(nM(Z0gkvTy06q2hF!|^yA+AM`CN^g~s{cQIDA*daISfD6Tr|spW z9V0A(qrX3}A#MEI3J^AqWajr7K%+L`;`2ska7A6)sST4tv)71t0PCPgy+) z8+pGccL-B=-66s~NI-^70}@;eK`eqkuYqR2?QzjSy*T;QMs#mTn|*g(wEz0gU80ii z+|GZ>mq$OBaw!kTl^5)`nR1N;?J_-3r>E{#E39he`y)>-KhNn=Lh2G@WV4EI1`?5jVayk$=C_$Y=lqL*`Z5GiJp z;V3iCmHD*Ah6{1r=>JWfP2p{vlrHh>`eFf4`_~{=Infbx7=%3i6=|6m|Adw+C)?S&$3V(8e2^!j z!GMU1g`;jK=2uWu|E$`E=)vnnKCPk=>gg=wT4X_D0e!DTjqKKJZ1BfMOA5=Wzu0dg z=MN!5Smi3m4-N?HwGy3Jar8N)O~b*5$k&(33NIOb$pbbLn~KKIAhh)7bT;YJooWeYjFy#qi<&$>sqmB( z&Udur&%7+(Kx@y@;5*hGwS{vPc=PtFd0^1OG1CA;9ChMBhgPTPRzh|0JAQW|GB@?0 z2Mkg7Wj~HzAKV_aRbb&2m(oaH%Dq0InN%w2f?|EmANN%Yj7iOu-dRGsue)aPo4g5~ zhnGIBHO(JzmRk2Z=+>uvx*PZTV?P}0D;6uid(1@TeasKM=y$yvo{^CTXZr-i_Pz3X z&~oX+5nbc5TKi^!mkQm?_W?!j>XI*LEw1vWBo*qegssmFa?s3YnmbU}&QvOnIAY=< zZE3YtpdvQvB&6{QW&SvRaDVW^DY8hDCMUQ-c**-cTAsG^{(zAvI#LD3PvLdKZ6#ZY zA@*^uhQ8^!J!z4-a5M6H9{hD=w@l4WC|6JKYd_L z%{5RiQ?F8;Vt4JTS7I8M;m?-rz3ZCg}kDE=s zJHk{FXG;>P9ov(0Z}dY_GV&p6>K3}5Q>eh$Vqg|9oCdPgOMz_>&=6IIj`hb7Jc}Ui zOeMo6*8uJ7hVFWXYAzV2o8lI7`Wi-}uxaLqL^^3YsiXrD^!CZh)RWOfOyA8u(_a}X zqDl-XzK&PjQs1KCxlx~(HM=ZJ9u+CoV=uV?<^b3Rd} zB3ece;B5VQAT8aBj@I;o*bk%Fz#A5}&@z-L99tt+1qK60=pmF|RN}24yYmOz-H?et zgET;G(&zlu?SWY1Rv|OD`;dBX^E34j{YoYI70Y+bwa}HgJ%0fwqQWIr(`xBIzDVP( z&f?xTw)dh%Td03shxlefliPUd<>_6g3Zx~qZVJK_>#wG!ND143nS7-2oS>3>5kA!~ zs?bZ7@ng;ve*dV`C&}lxMOS^;qmmh}S?rxHU~(W5mjH@|r|ygC_Oqp^P(s&td$Z8- zJxES1=I;IXChTtFNnYcoZ0Rtbuka+!Iki0@+g=-Rp)8JAaB_X&Go!qYELyF&BYU9# zXfMy>m;MNytv{(_tckUsn^^cl3};m`OY~Bygm$x^}sR5pfMbLwUCtL(WD_zdI4ZPwtp5cOjoy_B-hI+ z%F~4Uu51Rbk$&Z-@C{gUNjNX(BhqM^B7OW+~bpM1P4U#zn2U#V_fgfX!G)kp$ul}+1_5T_uN$*^KXz(8hi7zHd zRi7K{ghEe$RDhiet~wa9zsyUz+=$LrQu&0_mh!8RSCf6%kpvFN91IUnguX|M6@*oD zLyaw9FGS{A5cE)l$wP={{P7`(P9)E|GnU$98P=dcaq{>bw~B7#q7fA_ol8ORKbEB) zFOQGuZvnEq(XDvP_-i*c+Pq%lAn5+4<#WkuJA{%D6YIu)F_MO;ya2)7MqSV-JQ2s; zcBl()gIg{X4`f2jyV_*!Wp20L|MlDk?IqE1^CY+}PIN(9F zw!$~L3YN@}?Wv+Ttv;^OrF#5M3j&C7{6%bpH;QXYst9sOvPcQ}0kXcQbtd7nHETb8 z6d^+P;Ni}O8yyC#Z@%5l9?_Y+A#YpbTjsalpHS*(sO#w~A)~*36*{?%8?yU^A;X9;sg#fw~)?7JcYGh$Y1I@l^8{aAzpWXDI zQNy^t`Rt$-p@$;9<Y>!&`0Sbwdub_|gsTU2%p%8~vFT3Ez&=>QdREDA|H zTNdk@SaP-J3#T(s0G#P_nBSnX4}m?&i?19FWUco>1wNqQP!d-u-6uvdJS`u0{90j{HO(?W?JkzN$KxMPSZ_X( zK>8e*()l&1P4$3CEz;kB>9da*VDHlEm=7ijy*L7QZd?;==mSlY0432c#Vbpv^>oz9 zb?UUg1sm39`nt>4i=;|R4D$v!%$-rVwNm&hM+uPAIv^cq9h z{X+sysvdY2g~2>A4U~)mRKzPI#l$|Uuo%lj_2D}A1?u>#12}sbKHA%xmPspp0kx^c z>Uawav598<8y8{BRnBB2ZrO#@*SEx_{n$(`n=zt6H_Ky2V(4C|a!0uQW7rf$OFcW` zgK0XynLOAD*r7AuKq}>+4$i92{n6HCWO#;&pjI|JM1-KHF#}i>Yu!mE@eES5f_+0D zZpMv|_rBLhPBOi>{Fr8dKl^9cLATIJiMd6+La9PcrYFam(fO|fzmTF=zL<2Gy5-qu z_A>>=FnEP*E}i>4KAXPAq*bf~hKH<8t>o*HRI)b1i)y)~eE^am0Ez?Y?w}$-Jz6A< znEf?krEXTRqsEcG>iG!m41MaX)yGko%vJ+Du8i`a)9YbmR=RLp)UG`UkAH{44ZTzV z7B&1lR*Wr?rx(t1pR&&l_}fG*Hspiy83)YMb{dN_O&kT6yao#$Z|@8feQ8067?F`0 zxAG%W9?U-l_0riH7e>I$R(hq&eL zK{UV2er6&~>GfjZ&4CX)!1h;|{}iGBXVuvjn+5O*i$PQ|lJY2gNGFa?eY?oKoa#^| zwbMQZGv$%O&vEjInOvpju*ZnrIlyuNgJE_>2#F9fSf96zKLgQkYsT-{9s3ljmgznm zZnW@@?xXM{))t({ZV;1ZUJbXxP1H5)q5NkC9-}@YY+~Ne)QciebKVJ62eQc5(5sFj zTx8F$TEX!|)95^q*9-5eS(O(I=izzeQXEaa>Z{%%(UJnviC^W=3W;he6Asm{6G-296Q2ml@Nn z&E(Us;_v)`AMT0E`P0a*#;Bs@#HpxB;>9QWVpw4xXC>jLj+na!vJ@PJBTdkz-bG^s z+RIH9+1Q>29XO#Fpb}afLe&A~_=DhLKQ=4$n#pB|B^l4&7R#SieUD9xGwg z)mQK4R7XPT;KeEQE_rUazmPLSQ6F^R)#u{LCb50oGPu8yRBhMtAz`5JfmJ|beP1$v z&!i*=3Rm_-hm(j^#kXbw&@CaGK0tfnwx%^SyeEbkLO-$Cl{GW(a=SeTNGUI+6L3N> z^4gp!;z$t3iUVun`dB}v*PehP+w|b`-zDbW&wfxY|0>%;2xZq#M3DkJ_?6C`N zh`Ly!ng(c9sN%&PV1X?vMJ#DfRs3xX;$w6YJ82I1YMM2Ln`&4{ za-jDX{=hU^&eel82nF!sOe$(S;^_)U7mJAdoB1n5Oae0yfxu6z2A=thi;I7Np`Qo< zr49PbUJ@+S$2cB$cxzz?6TXmxdz*SV2>4w9f9~<;Xe%JsOQz0pcZVg}~?& zz-*xqCq1#R(9sQ`=cP&eAt#Y7IUYU~Xo+My+IiA9u~D+%Hi&fn`*b_w>eXWHShizr zXxm+d0IswTkM%RrdsPqv_IETM$WJ7*#y>Rdh3L>`W{2+%*~mwEfrdF&Q(x~6yJ&{F z@&xZPKG?oqGG<=h3BoTkut}6|h-J)%6OU14=uIqXe8Ee%(UE2Q)ah~3%J16`ea2od z5-)t{_o=)UuVHjg(p=lf@JLL|II23YeRxFqa^(*H2+DD9mOdHNv%h<(CwAZy);1gMb}y_J=N3fQ0+&+YUG&U|VAVFR z{`oI{C<@-2rH;3^-{va;%ECmsj>Qg-tx;|X5+lxQ<{N&3j?B0`8UOn6J^I5NaBw|VBZXLO9F@X#dMQT`fn3eYteSYJx7!dkCn;~;;o9|=>oPWkc z_c=hNTz9*{R|W&@dTgKg(W`!~F(4P?U8V>=N?ex&K7)SL+|?QXOcq|UP%G89d4@@8 z)C*JSb_#!=tV#|I_^;oB!cavCI%qAS-LHa*A56a25)rLT#&A_H=y^va%G_LqmI~m{ zWypo=-e?r1493|BDiyVPK#kqmx9xqWhPM69FXbt|tv619i+OkjrcHw^BZqa6eGxY# zU5-=o5Pq^@w&S$7`cU8MWjPsktYlO0?f|c=kWII(S>q=NDyWJTy>V)afRwSEiVnRy zVz__m`%$P_{lF1{E8$H)gNR36*ks<~z*eUEx0!nXh%vN3@??{RHxp*8*QgKkvko9mEY7Zf zZG#)f8{?)9my*1_@7KSJCQ8PyJfFJf$h(}+zOYNsf>m$dN-TWpx32Bg+2va8mI(H# z^du-SK?HE+Xgf_GG8EvB4y6#qvC^k#vz7Nv;xdO~+xB^7hI-90rNT}LJcdQbA85#c z0cWd^A4L!?=a-FoU&g>^00hABVES zUnVk^$~ArQ@m-PjYa>87_@~KpYJxL4s>g2T*R)T=YV5ys~dd zx=Q+r=VWo;mxK+V(Bzcu&vW#Dj_1kC=(5$b^$FOg^eVqE`RjxED^n%=Mbl;dw{m%f z8Z~Ap*G5i-uZ0-emX3kNY~(UVAA~4<`auYe<{CY9C8DUC;zs4>Il_zf2FaAK39*tCqxF=-LfABU_$2~C6Bq;cz-*kKmwN`m|4Zl;P`}l zgxISV=ZQg~+pyx!#I>?46`0NK#~#YBf!EA|0WvU;fLK~}w06xBX)4V{*C_d#FnRNm zn#}!%S&I5^Bq2Exr9h^S70~*-sbqqiSSP^S5C<)V6}bvm6E?6a$F~iZ9|3-g0_enx zPTjI+^uKw+Z)-C7l7yWbW)GBnI%8zn20zbeWp^Pa;LbZg+(i>^5Wf7gX~W;Mc_#m4 z=W$_+ffr+7havlesfHO~HyMM%Mq=sOlbDg_ zabr{gde350$Ss__Aoo4mPH;3IV6ZrI+A>Lxe~KA0#qbfzWuYSaq|Y{fpf-0fUyq@o zhSd^ZZ_w<*^g8#SiT8DETE|=;>x^uA%D!y6W`3rmsg;I)WFPwpF0>vN`UAxL8k+wW z-DOcxk*qAGv<)}HY8<<|2Py;YFK3&`0kU$|D7oly+RwL(1B*?VB0Sbj?ABW~gCAE= zPYv}s62rrL8}9u)u#(BW4FZxl4jAxS{4gekpRI=X$i!pbzmfGQcKK(`L;26z6RP_O+}HW=5)hs!(tJP^a$KDPZ#r_!qQT{wm+5?+l8 zD^fO|NgZikt^jIG^r9PA)UjzJtyKw3$vA`Dd9DikWv~pyCF|Bi2am!Or2kLdaX9-s zn3kB8HWkPlek)h%85O&^ltQmIH|$#is=Cs+(^uuvOwIEBG$?wTzE!W$|ED@%e@8V6 znWT1sPuR~)qb>PJE`lCJO;pNK~W?2Bg- z^v$F)-X(J$WK(Pxkq#GhN^{~hrPi*b2T=^5$oH{kL~Cc{@vBqIFGPaZC{-dse^g4c zk}{!OdUHzP3k$S*GmSJrSqon@C=q?UZbvNqk`IE_f3I+r&rH%rN$m#fem?@MI_H&Hi%ma z(VI#=9IY~8nYfB@E_zfYRxLbJr@4c6ft}{x#FQ1#A7*7)P(ML_Dtup8+6uJ12RzN~ zi@HG;P7|AkSLJ<8F>gsl<<2JN*OVkFxHiAOX^tZ?r3%Qn>P+Jx>~Ti>b%C7v*Q487 zvOs@5!mD&=IO|rbIhv9dH+%VL0MsRIA;VXzzf9`&pbXE-iqPj97p>KNB2wlMMg~k@ zPY4#v08t+Q`LFIYFFI4If~<6lgs{Z!#&|TqMEDTxPpTPF&*qK0DbIt7mSU**Dbu{q z^y;^B)3U;FMmEIER2Khgbu05#;pJMk%l#@9RQHpmg7EK^LPN89BL3X&jqeBLS7=vl zBUpKI6heY7=-cgbhp~9S3-)r-vqF)yio3D~+R>o;I+xKvM&-V_ zzK}b?bjex7Id@E;%pfH?06dDcgI*)>=hP)0ed(27%L+=j8#GgGOu2;}O&pEWY|S)T zW*kgLL=ZeEvAUU*{t?j-vjR}OV7(*r=H`^0n$;GFw0RE!^SQg;Rz8@Zk z=~5HKHaBmlYs~zkPAYD83xEe!6fDAadEaJQR0O_UGK0>2`^!4G+nej~?U0cSKV)=t z#vCw55v84)^DPiLFE@RQ@yJwHvA&Pv$Kk+3b!t!96o~puWeSJ@zi|~fM&LWZVR3LtgW~4bbOz$G{n680Nfvn12 z$aL5u0Rc_Se3+#W;A1=sAR($0m(j@688NiRcIBswj;{C`xYSMKOOffNO-JMXsNjsI zDTX4PQBC&gC;?tK(Ra?Ib(HiJ9UtCsB^b`hhH3F4WFzaG&8mo@2Wq@?{m!%QVaymy z!NuhZeOGCkG4J^3ij~_14nB7kqbJS$$Ijj2uTR;4uR|rQfcI8R_-2t2Y5} z)Tfj%tF*Q>{ELhR3fQ3YE|uNo(pk%LxeY76E{6^RV9`FM#$v!f8C=~frdgeMHy(o= zTwpT&LpGoZC}+zr>E95Qwefo7x#0Mjeir-FYwYl)()0$Sedvugg(9adulqhFfX-H( zzJ?;QpkSbIkxGh&%Zy#aO04=HNbhI}3pTy2sD+ETryt`&oo(afy0qM_U$ZDx;r220 ze*u>!XxRel8r8Pc%G8(u8yY3Km|dY9bPGzCY-~O=9fbQpNGT7E0YK1z3<-EEAZzXT zNc2w9-+%riljraC_mZ!azw}3bZts8TCH?T>z9r0eP>d{n{6GX1wHGSbWq zd-Y8%l`0$#@>9ip4iL2IGXCpt;77)K!Y6z8=R9f%7G% z6G<*oarnkc4eS@^PH7aKKA1ms`1OnL-cILs+X3o9v*Pea*Z;`WUb2ZdL_t0;*bz0W zWxo8E5J6JhH0x9mn`*G8D8STDy+lxLTru@+-B5y2)=Z~KRyC<%jXirp{n(@XYFMRy z##+71GKUUP^R8VDst$NJ@XC|?$ejsX|F4MLbB51#WdhKD2q(3B`wZ~Trwaw~qbu>L zV1=q(u9i}jC2n7pS3OH;CQK%@+LUELM5GEPW#L*0l$C@~wLs~Ml2qnrooQF*n@-G0 z=>Uw0IV(l{#h9JaJqo~y`{HwMn*7GCvc2vf*^U>*KlqI8eeB5b_Zss2P1K)3M7|)F zLDkiYB4Q2drl2@nZO+vOwbvksn>L~CK$Rjo|2M9f7NL>a*|czF!xYTxv~-rT*HG`> z2Tu0YM~|RhU zf&UD=Y?FsP4*XpL*UyQ_(e!)v0Y8yI^e2IHHu?KL5Bw{Ur+y3O(;|`rC71Y1OED|W zU|LIEEwDiB8o9X*i^*Nj2RGsLT1Kcl~MpI)?t~O^iA!e!$Yl6cJ zUt<>cPC@OwuL-RfONXmnF`e4=(1K1F3^Fh zQyQGrn71ahjrhWx_q7jA(<)XJMLh&n09{|JtEvapOaZK}LS3)aS6{tcvr8!eGusQi z7kK_t^psx%-X^mBO2@MWrjH+`3IiaGS!v`;=Os}YOyjoTmf#ml(P?Tj6(#hFm|&PV zohVXqlFSt0fChWvW>Ch#%3i(O0H>sM{PC_jAoz;e~0X%JESRE{as?pR%Xa%=0o$&yeOi;58RR93Hom(}tbAk84 zsrRd&VcZS8Rb+dXj%UJ^LKNxeS$tR}52GAE9``;mUB@lN-A}G`B`TBFmsaZf1Rz*h ziksD#;?oYOtTFXe(c}bx%Fs$oMVv29+|{Px`J1~P<)H$5%hS<4YF7d(z=4n10cqFY zuh{vU{L}At!kw7a))}g}+9U|d)TuT2r~oh}a&Jji)wbZhuknTXu+~_yP>W)kRRB}1 zwbG7Ph1jslz`EPzRc3Ypaog>4o}{PvHt-ga?OQsYNmklVJk4^Y5T~BVlBlMM->a%h z6l2hQ3K}LwkuuXHh3W+R0krfbtxm*63IM1?uslw>nF*+vnaU$pEWG9LYvu4xcnf4F zT~7x-W(NrC@7-*sDvk%l`9ri}s_|shrmZK+4LBsTtMdZ*vYHowwB(XBHi-8Yt>hAnj<3ZrfB64Im z0V%h^{u@q|L+#x+mz9dEV1i7Vs!?nrRfVokS}jbB)Q2%Xe}bQCoS~aW@C=PJ zS9iRsxM=`1ORLP+o~F)20Ok;@>y(+!XRC{t9-RSJUr?_+xDrQKcTvV_X3t8XdeK?> zl@BE_{qAncNQWlStE;iR&vtt;D@|Q|ktoy$g2fTi$d^WQprIrR^A=L`3DQPk^ChB5 z7Uk^(KT~lp+l*^e%uHGF!rOL2nZKg}6;h+hrhl@T?teN7M-BTd!f{b)5Msuf)c~nk zWo9)#%Bs*H-dSy})gd*jXj{Bk11*hPnEGMEYC6SynUnz04`4V9aN#qSb}OhJNag?e zXZWigNoD@w-EiK98%UW0)4aiVSl%<8(w43)LtIc9xzd8*rC$v+r!Os_3IsZhDI}48 zFW46+rJC*$sCt}PFQK8464Mf?$J;mW0qS5c2(2L z%&r3dl+Ei(=i_nUS4B>};Blt_>1CTMIzJuqs%;D2^@9LrzHWVKUAC%u8-UiZ&;e_fSoPzpOEs);^}gMav6|Vn zL`l`2EgpKDD2=*vrvvG&!2ZEnk`tRwi{ve&Qn(3IkV%}ymr5$pGB%zpR{J?C&Bj39 z;#N{ZG!M$nCsCF znVbl$PIjNn%FM1OivK5@JY-4~?SFa4Ucm3N;@~Ubn@3lwWtMrkrE56#KpM+?2^N7A zIFT#OC4N~FT9FVc@kJTpMK|$8NfbWvr6852-A|@L(kN;C-DVT>?%K_)dhW`6abG;= zqRDS>$8pjTQ0G70&5FY}um8KvxK#C^Y7e9C3*r)(N}T%#7r9iFp|mQFuhN9Bk(IL5 zYBD9X;<38pR@=I1JXSPi!z7NbGKH$DW+YZ{V&m$;mF4>2D|Rlhn%T>MKjhRCQ7!PB zBJ%m2osm*46V1$L#Q6*RjCyU7vr?ucT`7o*V45AGpdcU>hN(#9Lo4c~1ix`s>U^0J zi@f_ufJ&T|rmn*2OU>lM&EHG%sRK7H{QFyXfsewj0Ms1My?O0dRPC)>IAq;9KCfo0 zm_)ZKpjQDf1=slicts5A;Jjg0dkNCCR(qE>tTs_nRrs0)ERVLPrqyuUD#WH$UJeMb zw6w&Lf_j;>d3A?U0cQ3J;6DNzusrTQ@EK z*>1s@T?MERo&N*+PP5I;go}t`+$qAn!`c2+&Ucxs6YHj{ydo{sUfdK3Vy)F==c)v( ztuM^C)`%}{YIR*YBu`pZX7xJjL^Z&y%qjxwEET|Qu+y?uGkYcQyBl1i2E0Q=KC{!x z`df(xCIH#Qgp-u_!%3&MbY3% z`;pan=lAleV3-r@%&Q@}S7q&L;#VUTpbe7=z2QnV!>`7ybzjX=bhBCku1=0tx9*?; z0WyOhbjv6U2n#-wou|fUYP#td)~13%exI*b|s(! z9Qfec0Sfy=gG;w?p&U2l?;$*reE*`az>JQRqi~F&iHWNg$Wo|e{Ok}K$UC0U^-1dslOR#3A3`-89nDQAFVP_i38HDw zlZZdD@#L&jlM6)T#b&l=3xM(ft^DS8Sg1Dw>RFC!K56GnA76X789%l86DEdmx2b+z zuo_(CQu8JN61VCdPWuTf(;iek(B`Fp=4(9WLmUX`mIEf4RrUq|(5kBGsDK#rI#!mT zPISOIIcweK;A&?7Jbj@3w{3f|rKzS|)~`IcLUnN*5#2~f+LiWztLs?uPh6F+iP=e~ zmOxqI<0|Ljv=gS2%$0&iteL3uB_XaQ$t698h)|j#hE?L+k6~Q38QZ-|e&MVOL%h4PJIi=DMvwG|kyB z11k@%P*riM<3{EsGg{KQRV1CgUdl+JAeukVm-pTfsn8%Y?BM6}K7KgOWThsU6RT9* z9#LLmn>HDWNrng?xbLQg|GJxZb&Y^Jh$}vF{3iqQyIbN_g;vb&MBKMbL(^re*<%%O zj#`~F*Mt)X0y=)xTelog{S-l>H^8hSKs;tA0P6z7taZq*<(@ z=7)2)erah5wWHPXHuIysHz_R8H=B|uKZUcZY=CkGNTcy{+ot_aL?`{cFfV7MJ&>lX z)Pq?+J_?FBUt;=P6S;P?4cp9@dh8wdzJAZ&jc@)4s55cpM~+|Gn*6?P(t2$034O#o zx1+iyY6D=61)Eu@GX>B!t+H-)Ah8PO&4spMu*=HAT0>FFhl};!G3@8JcxVulyQJWo8mxAJ84ZFB&8zX?n$Qmf0518hh5-#= zp_QV@ihyVl7%2*0i!ZI4x}x6}khQGSU^c&wWeBXRtFhc%U4{A?EA?_R=IW-gZX>R} z8v*tSvry(T(V^oLEX|bkeOaG`_^GmRwX2vU!=~h#pZQU9h_vfbTk4aRG-ag4oD2#; z2Wv^tAhUa(k~zj7rYMBvGw;l&>UVkO3 z|JGpdR*rLGtA>18kjK=l7DH5+x|FRZ-nMq4f+d}5nzS;Bz?$`|nP2Tx0fyz_fV|rJ z1fEsPI!<53tpUTa)?wBfeFNG$B5UGYlYhWQ0K2O**g*!$APfEe8g|Jd(u?n-aMb(g zLmIQuSkgo8(&y`Bv6nspjZfaB1Aesi#IF5d+o*+BoR8xCJ|o?LC-snL@N;=@P`OyA zSB9M{*!60%v_-%;hI9Yn@J$P!8Bt;c)Gfuex7ag}H|xKvYA@W<(^K!k@h?}4fcEy zxne6#SODkbD|^a?ciefSd~ZaD5l~MvIWhOao7dkc@D|&otIhyej~nt;hdqc{owovX zUaKC^&LaRv+7K}G1^{y73IZCeTNX%Y1&l zul?XaTQ4mwF+&g3D>eHeH@8S2+hwr8LAFmOn}zkm*MGxNsufmd{>D5<-)Et#cwY>% z(4G?=cInNFxD28LKhm6ynnOgfR@$lvtpqFMUVD#ekjhIdVns>f*SpUBjEMD zI*E(CsT+W)IV&;QFCs74imo(W$HCzJZ@OvWL+=vN5fw&2J>$6Yqjqf@*50#~L4d&p z`7loI5Vgm8*Q%I5W`0!&jheHWjCFo6U_b{LR%b5FoSzbUWk5_P7N+JJ8Tzpfx3k6@ zajjDc4EJBngKL+WC8L%cdHi)H(F7~N&}U%C#~z$JCr>))4kSw(JwNn|?B-wp!z~pl zQ(s+O?Plm9@jq#;NPa9&Fs-u=Ea1{46O#!}o6-i7Cku_lYa&#cx(QxN0^Nvcd~asU zdY?JcoRJPndjgP*O>$N$P+4j^3I1HcuG3Ar>CXYg1BG9F`#rDQ+4hJdp#BKrhELg^ zM;=@I^`QLXX@II3a=)m3)tuJOq_#PJHF~ZNGFDB^D|J&Z0}bmy8PJ-a`p`=7J z*vz#;;})icYecl{6aqu}Rov9tgR6vzmCl;kzo7RN$dM_6%pJ~Vvdd&XHY*BN9$X=3 zxDQ^vJj>5!00!9Lv4caJA!nFRaD3jcbh76MW*SJt*Pk7oy7w+MlZM%RmN`jk0Cvr# zK_;5s_p0@!6|RwBQWl|=))ywNR7jkd7Y&o(3+ub~0W3~DoiO2~K{T5@XPz|cNmIi~ z0Vh(KQsLwUV3(QMmhW}%_{;OpUHs!iuae{A-9G~AlNMKhyuPk!+qbK6VC%q2YslTs zxEn!-TUR?OfL^~!NX9DxTv1K~fzEt|e)5U|xRUln3-HUiMdhtl(*>6{61>0KF!j`(E>O+zp#hv$FjM@j*~3M-(BWqq2r zPZ=i8TgdXKylFIm6BSj`K)_%%iC``on>aPD66~t2Xi9s&p2KBPyyu&*sqPr>_7PB@ znr!t;RzCcV>91h=M%$v~B*nToxm%pOkD!(n0rOOVX^?I>AS9Qoq+^ZrK;&6*-n>~o zTpl>|V~yEPQ@6gbBD9jXv|5+B9&IQqP6n`Xb<29Rbe=HCVrMhAOcxCQKWu#U^g;9> z$XQ_)y~nRRsetgfKqjd(j%+>DQ2iX{8_;?0DTR$or0pv!grSw}_7t=GqRhP`(r9QHY!&S^q-i0Z6O}B;kKKGJ2RCfjY;w*as+Xy`=NYGY z-8nhtaqoM>>#AGE4*m$JPpi207Q5hhv;HfG~euFpUsENPNi5^x{J)wD(T&=Q> zHQ#*mS!+y{==WVEN+3&cGA%%=P0dHwt6Zo0&@`Q?5C;mnEH?c+^mC11 zHHjOd2J}G$nb-u2FxLZKmUKm0IDg$YfBJ5EF2*-LJ`3kh_WVOX(fQXu8IF8r0PVQY zf@t1cmJq=+yFAfC@KJnU`l1Ypm+{H*2@O&}68K9nQ2^amD~!LJ>ZbL5RPXm zpyydr29s?AOjIfa17(?Xs3yW#LaCu>ZTS&Lzzo+o=R+``Ar5JU6CU5}V?^HZiJrgprDf-)`PbhI>pOY4j~cQs$b<`c#saYU}~K29ZnI;&90fkiv>c`CsmP zefc-z-8lm4wu~!3ZIkAQ>o*Df@>VBQW+Fnu_eA7g5qSs{OIrhmlt2d7ZnQNPlnlLD z^E6h@n(%{lEgnJu(n{LAHhqJd-pFZ4T28n@%Za|S^Uu0a2f%1SHz2Mv5Ow5*WLuY z`gEpQHp)g!7Z>l?n==T)&ZI3;sD0%Ny^2MyN#ON_Qm6dAG zY1cSOIh7M@hS^xmdehGhKqfvukZNUBLHd{U9C@{Nq#0&^!A!F!(F^_04T13qj!#+U zNuQszPI-gZ-^rP>UEa_dkL0`{Dh8!#ZXRU==NZ~Ny5gsiP(=~^xtKj0WZBTYXX!GU zddH_0%f&w*t@TDg9V2tBN7sK5xKX#TAZ-(G@G(Ok6p{M{dn}j#9k?1YJ3KI}7?>G< zH5Xwxdkkc%U=Dm7)^w$D2Ed%zDiWMGOLRoXNhUlCE`n&%yF&s&KZ|*UR7#)h_`G}m zWY13saRO+!P7#nA-)%vvlIhAnJ>6ovaiWWfJ5kmN$6z+%w4LH~N2xML_8@0Fr|JvzY z6E8RevYA%MO|P_&umh_MSU~0_^T=#)*bu0^^pANTn`9gP+)PQn!SORC`UcP6&B$-? z`eTPakh9PH!IC{jyK|H0=*4w>sKa5Vg((-~Wf|k5vr*2^0I6`;nZJ2qQhoZ)8>Jra znh{XPI7OJ5T>kO(pOU~$!R&^!|Hg|U@TnN zU{hAvQ3mvML2lG^z!y~pmJPL;mlVurj02is!=ITuz7x!!;`#ek%CoP3;NaA8py`uk z(tpg*aiO3navsRC7#9QQpJ`)hqwpe!%yaX7uUYup-M+4Q1k^E3I}Uts?Er=Rf=Kws zTipS)`71$c2ahQB2*weItRkx5$Qi68aLE~(;c7((5Hkz3!|bka)(r44Pj}_xgs9VG zkRK;5*9oE-9P{@x&pUT~2Fg=CKTvJ-`nxgD;fG3>fr1(iWC`>V#4iEoV`rw=IC(Z| zt7iUx(b^{uziILCcsGoII>uRwgJ#8dJ~};Us;^e~@hA1dh!gvds&hZ|7Ji^AtIj2t z5{*2nsWn5+Fpo(h#S~LPupxEOBWZ-b`DWNmV{E`x4#9Ewz4>E$vAi!g^ZfIi=Wxt3 z|BV{Kd(o*anUjk!&PO=U%-oZC{vCW#ocqMHUpKk+RvEX?j(|GGlN#52?AZP$@K06T z&zsuCPtnEFBJMFWeH`Qwu*by7V`8*1({q`xs4Zo*St=AkIs%-SiiwL?1k^E};xIG0`Y)R6+G+cAqx|LAPWuTCE@P>eMZw{E7j z2~$C8OdEtX@O7}Z^-{D-2p$(KT3~AeQ_G&MsEP_A-U$IGf;ZHwiWi|UafKsPm|GO* z3e|Q&oK#}2GSdZwMKj!w`kXlA5fT2ki2n5(UbpA=(T8*d)G?ms@k_UuzoS{Zp$;6x z@p3bsHJ+6p=?BYqQ9fIFZoRHtJoFbgN*K?|2&iLh)42SWwP#E1enQ1wu4Xr2HW|;# zlZv2ICvwP{eAX)c+BcP741LMk1+l1A%>jS*pl$T&~`IDiW++8=47-IK{ z}E={8)2U6WXiIc&?aS0X+BVpd>h(kqk$^Wn%Y=@U7Ap-#lk; zdH11L$?@?j7-Iy~F`itYy~WO3)%r48yG*f54K5XvXPWR#(2LKK*X!B4;Dr|45i!1J zV&4;Zz#$J%$o)&My8qCP^62=kjxhr27*D$}Gr8ttTv$^-!%MipaOYdwUTDrO39`@B z&J{SvuziS|AhLjk1xywUyoh+fSz1gdA^}h{3jzVLb;Pe@wvOpkkfR2Vi<8F;J1VNH zQWOsh`baSU!;0z$cfFQ}NAdg^V~jDz7-Nhv#u#Iau{+}b13}?bqNIY)CIA2c07*qo IM6N<$f)GDN`Tzg` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/meiguoshou_fast_zuo.png b/app/src/main/res/drawable/meiguoshou_fast_zuo.png new file mode 100644 index 0000000000000000000000000000000000000000..64fac3542b3a2abd0cbd80d6d5aee09d2c384793 GIT binary patch literal 41551 zcmW(+Wmpqj8{UA?ol19?bT`sHx}{sX*=PjmknY-OX_S&irCaF+5s>b0@AqRr*tLu2 zoG0#cKlMRdQwax?91{Ql;HW4o=mG#h@P8k4RKz#IX@ji*Kq;w;f-E>-l0DK!*{6aP0_vS=JOZGPlFWw@LIF}k8P5Fpot zACP7Nz+z(1eoO1Z`Vqw|ybqp2#_A<2VW{xfo&mS`eCEIb=8?MF4p33Zei0MpE8bi3 z^!$V3VRjyXtlishy0!)K&>lR-2&6i&RFZ8fTl*6gUG0H>i^FrOo{Vm76(={OF7a>wkoHRkk{A2ihwG^jQvyq8a{5A4=e|={ zSnK51mzzVq)3k&;^ArYT=Onk0^U2Qv)?>d9CD(Q~Pa{SPE}soXeeW&kSXCwQ{;7bj zI&=g6WDOmSrQgK;Jk6qft?m7BXqw3ERp-^IpGCI{frr)^po*tY9`~-!;QDI z4q*yMkKb%%etO~zyRj^IWD@kQbA zP8k=$Vt`B(YqhzoB`a&gCRoKYGwmI&4+#l7K5_|mv39>V9+Sk~JT|D1r22(+>*eX` z^w-5MnnFm}jlImzCgg~6%0Sx_4TCwn)PJ~XXcp(`XGUa9F6EZ7)d@&u#qTvljc?8v zDv)CW_e)xwd*zIR$u?4v=wv^%n$az-?t`?I*R?Da!)FV5=t=U??nhKd42SySf0eNX ztF!`^y6K$@3xi8|U*au8=y~GLq=_$Io?$m9p`3VB2%Vm@4;B;|i5mq!xu=}c2V8Ir z2sxF^1*VWGi((CVZ|z1*nL2_*0OU}IpBCwA=yJ%H_tTjJit3deagfToBq77SpilLJU z)mp3fJ^f?pX;<|KTbnhBT%KRav)w+Gn3K#mz9F?WPw+nfr;< z`2kZnytW>*k&uJ<5lDU~tqFPm?9)Sz2;+{Av~2B=Z#`6NtNR=4LA!VW%pJ~fy9kGt zw2QSsR#xrl@|6nhRDP&;zRKG^`X2^;I2jf0D@{`7U*c3%k-K6g|L%OATMrzrPMw1wwTNzou(z zyY)_oGf@&}dcG%M_4&HHb@Ke=js*S|Nk%U#D9HB0PAAtGIPTcTp}DUQF?zyQKT2&t{Via3 zf#D{|9SY+Y#o|RXw{x4Q!+QVD_fjeY7F}yi+4()u4qeL_u>M4Tn#l}LczlCoPGbc` z`wm!9WK3NEf&h7cy*K@^QpgXsOHbCNPwp(>#v}f!dS73wi$hXNopW5VT6%IrG!zcK z3^WXgRYjm%iVB8+4K`u)01n!OsP*7z?#)!xXRDsvhXR(rnGO3j>Ld-$1J^wjE3NU^25nl@Rp0Wux?3xfQ8?Mr0!~ zVz%7{;Msj#wJ%9nAt)cURfclF&;|J6rou*a7&RyIW9X^wB$?h%u`nQxvW|v01kX?- zi|lI_pSBLmC!}SRM*7^fJK0`WdWAzED^B?yDP=5iAaeA}>$88~kxHT>wN?ePUo3k= z8bbIj?Otm)puN4%y$X6lw%F+&{Qd_!c6jD9bP{NWNeTkQz@}7KW;pN z2G}=4L_~oyi41AlI3^O<@wK~EOKC#A?NrT}W`xU+mxn*C@z`0#*x%HCEXu>=3!i;? z+Dn-5%SPApXnwp*5Z#Qo|I_~jyjrPEt)IUMzNZQ9)W9q;W1PECJ<~sR;6oIoH=4`KERu^K?+bu<~K>63uOOtg{LnRH@MV41Q)QY7ZoUsBGpWg(NVNR?mf<^(g>$_e#b{8vJ4FgE#h)(mr=Qp^trh6}f)Thn=vw zV$fE8&AqSLeuXNH(3z$#5oajx-6cP<2##5>E8l9p3CyInozP3>05^F2*m6RjJtF~p zyFQ+`M?Ibu@mky8?f3QB0h-DS7PZmW5K0mjdP|~By?0NFJh}-1bn_jJ7U0$Kkl~p- z75v0@1}ryYC!SEPKeHwYNFeP?U7upR;I1kAG(}C&cWMCh6hFLLZ4rGufMrX#lFi~f z?iwxN@GCSD>O3rE32nL_7Y?-3fWMYQPCR*4 z%~0(++j6CXrTue0UHvqz4;G(GWVLvZR^iM@N3KIYC&(Lj%NIz2{!$+t<;+WmTyP$u z1JCsh0pN?%CCBfd#=}vdD2=30#+1ZpBLWyX#XuK^Si zB{#^016zV<;|qVls&L$@k|Y#TnVoo$}50=To$8rL4WjMb&w?=KRwofpoL_40}^yGp_HpI2_hO*z8b-jZ?-i8HC84T!fZf1X%o&8<>KaTZbj5;o z#Bt#tkN|nZmoAay0t=s_oE5YHtSXU&_%zO0oWX2Ck4K&E_r;k;Hi{lX5$hsnC(GME zRx&dEg2@22NG|7oLF!%I{=g1LvW_aFOykMkY9GWK*(dQazoxRFmk`DbF_hJ-@RHqD zGg!f$@)0y9fay~C)h^p{m2=jBRoMn{YQ0%oVlHG0L4d7Qz*7kl=-Wg1DgT0q1in5c zmrb+*z>`CwciT(S92D}E^|C?g;%2|_r=c(EoS{Tg=!ac3NZ@&u%oPxmM=4vHaGYPa z+F@$RDw>QkDK}%`W`=*ZY5H9BHq3l(CO1rM9mysGi-{C7iuq$(l}zi<~|Z{hXr)$M47`OI!J1MS}kM zFS3S&aq6wY;FJs`E|=~ovEupWnEFL)OuTJAR8Z7Ax@Z4u$U`9{_^57Xr$z$#h=b5y z;_JQr@w^iE$X5k)wGAhb6sRKmM|L_LMpeaCYN}@C6^xtQgbCNyPIo=ZHA19!s*;E5 zXi@HgR+Yxs&h^jKy%=wMO4q0OpSC6lNakyoNiwiIMSB1IJ3Rb1^Iy019RC9a$mg;R;675u)bqozfFri5`pb^Epxh6`7>9{lbs-) zkmpMAWAD5NJ>X&gB+P1D(o5j7#t+ zUSRVTi0J$@!C3+)t#R5fT5@~%;tp5}6bJ*iRUm!r3UX~&j^-0;uH;>GswFv?LxQD( z9MR1LrE=ye0t+0iD%?O@75~UHQ~Y(#P~Sf+cE&ueX$Vg|)%-sNKAMCE*|}6C&neaU z_P&iaZF@obt`;Rx8MPmLEW1MPgi?b;^&rrX_^%6%eiC)3YWdX(V&;u80_j)U0IL&? zcLqIh^E)6&y7Mw0ER0zCil>)wNLsZz?_g5&5D%am#Kns-6Ut<*Db5S=&f4^WA)F!NNw>- zpQtzzFo}GBQ(QW?E>x~#>G$4cE*(?uiQO$k3AHs4Dz`uAaOB=}_T2 z*W$*pL!J6CZ!xv;C&xLuS$F*1{NM3}xNk%5HXioFSU7-u#TI^)lKqR8wMsNs--JDm zKUh;<8q*bNtG+3}q2ee|KTZFl_g(qnYPxU-W>Z$uFTm!>et$Jh9TyYiXr*n=;6z<* z;F44-`p-;x6WJLB+uVY>!Mo7pV4PsYW+f4=zA02GbvY>$uh0a3@4HeD#y6_%X*8)I zcO9`9h|M6-2aRRL@i9jn0Qel?!)V4?%GI6MEbVE!w1=kh1+BEEtR(Cncn!~PGB3ivNHj;NWU3T)kfMCg z2J#PnYmFA^Cbncs^$We1k#|dLeDh`oOmX6W_-jvhx#E(FNO3O2J%a-Qk|+zUF93BU zEdT}Zvhdi)*bL7WxbaN^)@KY3y^`%k{gsItq0S+=PSi0@>uB*%>-$5EcELn(JZW0Y z(Aa0zD7^yO^V^x-lmtfEsYNu>_N9yyyRZY|cmIS1$=0DqKH78I7!mdFB7Y(r^LJ0q zj3zfChyPZt}-P(G|$RFrq%!GGu8Gtfa~)lhanoft~@po_Vr#KSxqq``b+~BncS1FTPyOSw)aUU$~)!~ z303%8W_={CMx^(;28Z2r@AV-+S~)$I^5KBrrXTg8W?@48}clH?=bLjwKx)HM5JLKA&BB>00pwb&H8MXUTk3 zk4^s+0(2*Rn>~@7%obWa)+1CnRms8wxeJWHr7|Sgvn)!fkOIOm`_@s;)<2ATi|6!P z7~vfHq1A5=s2$H^qLVKrbm!I(=mQxpkLzHmOqpN}eqil^QEjUXTX@}dCUA^4SpGs) zTVu8%=$+<4vd&KHui*9VL%Fl$!cLD#tk;r!#Ysaac;+Erkfl_u)`ixz4QP`iMQ{$g zZft~tLUo=qCb~6*f|^_=D`%76%Dj2%3@o1gcn{}uD(9=Xx~$a2nl$~(>k##7aqI<*KFt+e^YPUgfK0S!S>krd|7<?;>2=vI$2P~%a_zNy#kr~vS zo48oj)%B}Qn$qIn6m!xoB(Wi<{@HL{2&dtvFSR88Ys zVX6I%O6GhVg)@38AsOFk}WMoN>bPH|a5qg=@-h)@+eVEqvA^ z4%PCZywOo#fPYHsB~*a#d7woD*LzdF_%1bH-i~`eHkSZ1a*Y9JGYQo(@_m*|)gFSw zU|nq1XiO)GTs3y&wBO@ob~!>gahi5ePvoo~B^fOo?Nr)PAf_boNN*F>Dm>sTfaT@v z5^Z10L8e=C>nze`-A3^_)@@#`!~$?hbjbPIq!H%FY7%fe@SjP2_TD)y=6H#cdbtL3qHZfZ8OMaF5b!@D$!W^m65f~ z#>+jhEy5uuEkqdlf>{E5_S${{ zow?Ben{h{8@Ogk$WwBGDz{$vJ7(LYVjGe4#4~$3DfT4O>&b8Q6fz8*eb>$5x2Tl4q zU4MjY(>5_B-I3puMLQ=P_Rd$_vrIleb-r*Q9|@9sguFkIx7eX^Ewd1d*zi`hW%@kg znLN{E!bZ_2TfzrDF4vy(MVb+C@le*w0^n$rsgY`|BF>C};^Q)|6u;H`LFFd3p=(A2 z6reXI-d`ci^k2L@W^6?_D##4swtCqDb>U5ZVf9@v4y;6KBuO%z`Y&jdh0Hk;*Mh6 z{nshs>8bKOKk^F}oZ6O?jgig=11+%%gOwxY;GdPEKl*QU9~e=!?x)Az&bk+x(BBOJ z!Z7-949|IA5X!Vrm^iVw($F)8h5K%Pa~3?@cOC?LXGgx#ZMCRNZHiZR)a=){39EHd zOi&gS!pF}9a5XZo*2rOuL%~dgyxb<|pOW!8g-j7LC$JwI*E$9Ns8V zK-oh7Km!i6=X4X zfUzRq8J6M(RP-8Ss9d?%f0aJQ*-X#2T69xtyX8gZ`Z2f^*i$_dP8 zl<;P3H_Xo8&WcIWi7eyA%5#!!3(l-cDQW$42lQfZ2$}}mE&@U-Zq_Z4I?y-pp{H># zq2f^SaIU(?TWR29vL|rs??(~d_kWB4bDv7X{rJY*mz{qL6%(2!#zVtGTLmprKYwF( zB{`d~5U5c-R7C6Xt*NO~-1)HR`FCFmQj|Xl?fSlTfYD?BvljBPZaY2Pja+ydzGn!K=+xgxKnApH0+*d|>Kl-6S?K=_nLiCD+0>gSl8{Wj{`?WyWr;Jz z6*-;8rMK;f&f2c6BiwhJG(4RhN?jcjlbIHdXFRh0+xeQdk3YEP4$ty?oBG(-yX1=z!7=#V@ItCO!C|aZ6>sDuTh~m+R`R@RaB$AORqn9-EO-_{ z1NKash8XUI054q7Ma8qn8jQWW^3hD+$mE~}(_p{@6@hKK%Mu3QMb*|nFR0~bjYxQA zWrKT%XRE3mfC)}s;f5qBy#O`^0mxix`YHNKIm^9RRRdTQCx@I(%t_8N17MULN+0gS zFiG3|x?#O0DgCiDkfIPoe+)Ny0MGpE5U}@f`WNKQ#V13ah)2r))|NEe`$4^fEi_T^ zVn3cuSz<{M1^=7FNT+`cbj6aj zM>-XguZ`$doYYK=Sup(zjat`jR*mD2-WXUcZ5kIuu8x)Jmv1D4c-Pd6B3(r|-VqkK zR2AN*Rrj2Ge^)2LG0X1Ps!_T}=ywfGgKeYcs+z5Pda5D!nVrC9;pbMrHcK}t^pZV% zbHYDw1?YOk*yV;SyiN&iJtg8DHkkHqNs}@?QLlR_ta-90!563@V&*6@);|DJt#{4S z0qA-^yqlaXeD)MA0Q#auz&a9ocj-*|eQ65~R10Yf=t%4c)q^XU&B=P*N5|u+$qw5e z^1wQJg5Opsjy{j5Mq+{2lYL&oOF9k6H4O>W{fmChX;wGXbL-D1TiMrSps5VSlvFQ*@yhR(ir@5i3!kSI; z>2j6ppwQ-h0lr+Z+o#S4ex(R9C)63Wh(p0cp)2Psphb{pg7}-=`p9ZWqFy6$D zH6IsQv(hwQh-tOrGar+xKMvT!3mnaBkKn~LTB+HS_TdtM`*9UhBa*aQ!7C3pSe}-4 zLVoE+G>%Pq_dH|4YN1fEAgQ&i1^$uNoLX=qix#=($0Y5GrDliuaucT&JqRPY_&za& zJ;g%UU9W+)nt7XqbJPBdQ5~QoynwKHzAhg8WDV#Xq?IxHYy!5HEsk+?IsrTsV-^#p z#t(8aCc6!xYAZa=uX&x#elgc=dK>ENR_P|6PvwOJ%Jh6%`fa2Lb+CxN zD_Z`!^G4HaG+oQ2%*SpcqDkdTT2x{LJZO@92H`w!9o;Lg50e8_CnM39IlNI4D=9k+*^Xn^87K zk<{%gKB3I~LHNp`gYo6AzLRO6k-1>g)Y{Tfi@iRgrEy^-h&-)`fv2(!w?PJ!a-2T? zESJ zo+0x^(kt6K`7BU)%*?Cjas9_LW-TZ5fi%MS@?V;0EB?$QcI79OS(>-mM)%=0XWJeq zXUB{$Y-1D`HIf83ajWeB@4eB|Y0!`Nud+ldZ#)%g*4E90YeNqRh)d=`D9tpV-}vA= zQ~4~feTWe9X$wb6{oE_khQqoo=~6Mz*UuBNLCU>;D)}^Z@X3E$?W+smDiNb=>3<4d&||W%m)Wm*z9cAU3d;EFO!dWdPA_2l&?2rZ&VKvcfK1UlA=00Sq#yp<13Et8*>!vH+pan4@GRvdLmw8;8Q7e@jp_!0mp zq6U5e1LG&^PvyaL1!}IJ@fFs-W_ojCUU7UGyMv4%A8n#7_Ke6$wNfs_@h@ z<;p1mUph?ZP_jQe1+n31AQ#hWtS^;&w0=_8$ohoL(QSaOQIC{j-wrbez*%TOxZK?O zvq$j6PoK^4m(*DS@0!QuRRe@s<4e7`U6GUp=luXy-@ro&zcKp#T`{$zxccx;v#9jN z$+hu9L!R(e!$Q=suHvd>rQX!#trvYatp1qL2XCdG&Awg~x%sqvmE*MTe5za+kP8Y} zc5@~RXU8ws-!3K>Zit6v=vbozH0<2khr3RVcJpgyz?lkMM*@|(gD)0sLY3@&Ac24V ztBo4IBS=RDy_2C=omXh>pO1`-EsFgu;}b52`&-%*1rpP|F!|lulPd)vuK(ELu1sUA z2i5trHIZBY2(?l$1Od(BX7yj;mhdoEis3Q&+HKip{$t%7sAnI66WgJUwU`X*Yoe*> z7r~HvwxVu}3Nu*)Ihvwfes4$jCtlo0-??|D0I&GCBZQ?|o~3n!PEoMt5=wWIt;{vT z1MtdxSmUb_%V(V{!xP^+JUy$2)#e!J+ew77Ecj#DzW`hGv^vi-wsSwC8Bt0Ib=Q+S z!&m>Z6Tq~y@Lhx}Uvyg%0E%RK%Vh&Z)#AK%1aH;D>+O$}j_uv?g;F&6^k};j?0A2A7GwZ$ zrCPz88}#l;>H1@sjpj}C7n#L}T`%-*7h|F@g>N13n3z}?w{^8HhAbW~-H}M&@-Y~l zGy-z_Cp7q31o?>B^R^_R-Dso#XRfw&N#UbXKz$3<6Na?j?$YIArp#e3Zt3zXbH{;F zUPp2nl2${tzEc)pg?a}HC!v57!udeL@J{C1JublvB|h8Aw2T!WEr{V_v9 z-XrS->kU1>}G_NB3RWs5Wr}pl zGBI8p!4g2Fa8kwHcg2I9qA{!7?Vu!q`Yu4T87HU$3lVl68uP|kZqjl}M1CNl(tfaW zGt~1vdMJ*a%&Qrd>}p-q!qyvi71l}jc;pCiO~W$F6(^p>B*2_JUi~vw+Uf60J(V3r zoRWY#QZ4g#Zp$nMsY&h>)hli!|MKY&Ce;Dd4 zXdMw}Xln*Y|%GP?U}INxUmHup+9&m!Fg?;p4ik=Ec<% zJEtx#CSZEIK|_{GCd^_OvR{H`_@aqAXYpSJTmJB;v=i$wt(2Cv273%P#LPw2#3tMk z7soNSSTqrp6$e00WS>zM>qJ7KjUXJ}bU!@|Gj?*Fk|?>V3qu41>=TXoCb+V@v7Y`y z?6i?^1*#s*TM;oCpAP9`0BMb zP(lWtaCK1Tso?pxTj49=-PZsCYYz=aIVLT=0G4U2BOuwyaI4N?IiqOJeC0 zW8xA2EWes@V-ds1C6D;^}k$Qtn$Ly9H8J0*4J+fdNuG}NlLRpm>vR|c9sO*l{uep(EkXxK1Ra^ zNCm-5>!)w@=A(sJF;g^_Xem`aQwu)3>3(oT-IT_TYIVG-4RB>oMo7Yy)};w;wahgH zX(xx~22=i4>daaD=tV$pi5tUW{nk=}-}t;DNeW1`cfp}Y45)S6zhHS%pLLb$=HH(* zwoy-cTVO1+kh3@1G$az3yrfrU_1+$%3!O+G7GluEH~R<{bhHXD1&}-27*oLEeloxA zs{9k4w6eT>5C!T%6XDhT|$;Ob9y9cZ4DyhVYX9er?A|L4>;7UgO1S)J*>j_w}|QUE#}3 zPK2YtnZ7BMa!0V~=+L?nCvn7?$msTe5wRAE*OLVMM9j76!?(7IyTCn6@u2p8epi`~)CMXfYd#qLonGN3NSeI(J;s-VQFjExl zjGlYVzVv~^>EtlD!r6I|e2tqq2Uf0LeK-?|00F+Q;IFXGpg6DtnpAezvKc^Rzm8u3of_Td3CJD zya|za!;Er<>v!Q^fv;b2O#Q9U{YM6vboUcms7a=LApGt^t!)|9^~}a2B0!{$p?2D< zEXMFhH}nH644xPBI+VixvTRd@z?coJ(_T}kbX>WW=oab#g1$KpOtnA==ha*zlF=vQ z-DJnAXf4*MfT2dxR`CtrcBD})$Th#2TQQ1>hHzU9z*OdcsWF|^(j8&R{rKwMy)mVx zwJ7bYfnZ-+N$#<`XhL>XDI+9JxU4Paq2B@kY*gCl5P&WPl{qY8Q{~`bRuGA{mK(+{ z-|M_!5GgS}m^u@Ju`}wqyFJJD%G;{@5>5PcSn$m7`b$s%L1lnlGeYJ;}X5BsXm*wM40v*|+f$$tb85FcBL&VPTY zXa&R3?s}U>V!4D&;=(bJySvNeZBGYvvab^LG7HQKdi={<+V%CT?e&Q%FQO$*>+>wR zh!eW3!8JSqanvPg#GPtVnV)z-KG=J*u68VbZ^HV$c_RATHt6g0WB|Re=?39yMxeO!v zAbmhzf8*dxeTmAhkQHtZW~Bm1SO`|^lUSI-7Y;B+ng2ZS^Bf)Z6yW_cE`Y01$m3Of13K4#aw08f8qQ?yl2HuRnjG-Aao8MxRb` zcUILI#EhpO1k1oQfLwM&ek*GRYA#$Gc%KGtS==oM_G|M9mEn1yR>m6Pu_y%Sjm81-K-wvs8>RJQ2}_{O#Rn; z-alQicCos&BkUKU$C!wJDYc+J{8kOf`g6me?3i&)D@ad3M)_(sOSjlfE~hXU5nZAd zqFF)0@0tCc3!3e50F6mInwg~UN-;EEz*_Tj!(uWIDSI37D`sSDl?H8rp(R233xotpJBZ6zj3?n?uTvAY7k7*jh7p9~W^^@Flnx-T%(uG87 zMnmT{NJfEMoA+0W39a_ykU36uyQIXutX7ZR-la9U!2>(5yUT? zjeL}1-KGm?J!)S-nwnx?_A)8UfJ*{WsWuK!_K31PZmWr+W@ca5P%5mD+<+LU=*sJ&Q3gx& zYop^8`k0RLLd^?)Cj)saYmqyq8$Pu6=b*IKya=jpX+1a zpOvh-h>IJY1Pjw?32LQ}zkTxx+LaZLOr)+=Yix|69QJRzR`_SC&4_}j76?i=F%skq zlVgtW2PAT#$pDSfAg-9#DOsn^O5gIDgp`&e93jR$H$tAU|(!>vk-RgIq1&W55 z@8xaf9^0j~A3{d+Hqf`*;st=>%`Z&{t%~GS9fJ7hsp)5Ec2tW-gEHL6sXm=n1U?au zrSY6#qNOOQA?~)xDY$B3Y~0@yiiJvY6rY)+27{QvRb~*Aj!x2)0LG-;7FbEvxF5c< z&g*ZJ*BT^0>K2b_mZqWiSwtaqWXnH9f*8M5bt@MiO0Ew~#d&E@H4#+c2$~A#MwM}@ z$(t|qheD)&FRNYgXCp|^0K?z%6^NCifx$OoecPnr^h(EfN0u>jG>z7Ly2l5~`tzY~ z>=-I5VAPy>y}myrbBM9y|E8t?8p%kSHoP$QJ71$kN^q5iD9sA~`cS>YIFIKdOO;<9 zUz%<>wXhj|Su-r^a=i~m1c^CW6)8UR>zga{XJ9d^4tZ`%0{haVXvBxo>sHtk1|0nd z@xPqq9KM?7t9z}#$}*Bc5e;Z(g*kZtjL7N=qfrPTHKHey3i1Opn*L z{xhTX9f38XCKm_bQP=BGXvDkg)LRk((o0!prn;};T;i=QmC&~ z@8?7i=H0k@7CY<0&jVy}Ozm}q>rZs(w(R44N6;bOD~#}oL{EvZRYN<5R7{vHy5l|1csZvN zCe;V0mvq+g@`$|_HBig|E#br;0i~qXf_oZK1U|+NSbx{$Fc>zRmKb_98y{R7O{!c1 zq!6Z=U1n|q6HxIE%V(expJgsP^mRh5#R1yMg;t22ao zqBu`!VzAB)ODW)^s0x)abnO3fXq@_sTqwX7_`)069?m@8h@lq{Ab^EDs5XoIDMO?2 z=7I;^&UdeW=w)e|sF~uZ0lhe>_KpCr(~0?cK$;Ay|0Xn|ctlh01nlBg+p7FaZ5jYh zoC?-UWiG#;sI5btJs65i5V>Rh%w?HGxd>1LL3fl%pq}#?@rhN!3d{DDuq+c|>k|P6 zH8)AU>BOc4nGjx3p!>qP3@Gbolb85k&NM?CHKBoH15A>AA0KL}x*fPMCwV&}EQBh}1!W}vTMNQ{uH)BA`X@**ul<#^)stOyh-^^o zpkkS0Kqt3_5>$KO=ptQ=`U~V{2SIH*_RF68T&&KqZu>P2=zw z{d~CW4m0g*6YE|hMvZ)LMOca+A2->umVgTqh$ zoc?OJ(!Dv|DZA77gwPcZT$usJQAglAG#>C)IyrmD#4_pil@p$m3+zKh#9JUOiQ;$i zzJ|$(+VhER+w*wf(M9syNVnCVZFo#rOnGX@c?&=H`>Cn-m~+!22FH!rYQNmIzz2Vj z$21TOb_rsYomhtOH0sj*x0xTS(HOqrFPrpnV3aBFsUdCP`=v z_r_vwn(N%LTrX}dJ(|3A8FEC1S6S=zF>c)DaFPW4`fr;qU>?}&8Pse~Ofu&!CE}RZ zGA2-H$B~KT<2Y-K^~-;sTWxzAOpIUsJU)&|+VrXm@}Ecb7#-y>VaJA>0mq`me%_+> z&JF6eM)m=4DO8-ISZU*E49l4z^MqX~Ownq03fs8;QxEX%R%BvXaf z4X7T_i+bIJ#V`;J;dRYg`)y68ZU@=Hlt_Ofnh2s0Zh z=y7>~48$(Wm9nb=I5q#oFWPD+Bl+*k&phj%}yCV!^0}QThFxb z>v!ZiG-btcaeIE-JC};-pu+2cexT~?464JcOKe;)fjZWanC_kL=x?OhfwM6m%D~qD zqRo2+Lg+aRsrVu;SjBj4b(lc%;Cn&)u)jQ-jT2FfE!TQ;yqo^UBV@#DYOGO`jxnQcH@!RVPTF! z*>J&%0L>-Qf9>866GE`p^V$?jEnlonXnMPnGE<2Wvma{9C`^d$t9NEbdsSF& z)sa}4iSi1eSu0{|SB);rpZj~am9(@i-^hg48cVn3aP+bieOg26>A4ojaW-BQESs?f zHy$8sCu_3{T~6dnw_EvyOW5ZkmaE@n1sxIp@FK{%n-a1A|$*@IFPf$tIdHdBsj2N7|W!iO1 zW?G?LI_4(4BK{0X#B`^Zjno~a-TjSOI%+-t9$8|rUpAP9blRNbvmRGv$zj(62}kr~ zaRCIQ!VaeQp7^}ye8Bmpzz21AOi{HUHF(p6@k7XEYZYikA2gg@3d`FFKKfOlgYbsV zFaMqQC&PG^fq@)@c*os?&`B&NJtQK0l*HT{-aFVZzzLc$4bLy|UHZxE$y_}1{bnMF zKHTnqEM0S0-S7K9+19cbSIf42G8UIsEp2J>WLx`W<7C@hEuXyXQ!QJ+v+wom&vRWp zxSw0ETkp`?3hR^bAvcLrceI8l0@7!5kkxgPusf`$^{+on`uO9US9`2ruyXj%^D&uQ zY#zIeyfI-de?kXMZodI#Q@n{z!*N+r=S@A}<`9hox6_e7?-Dchovf|D_acDTtywAh zKI(P7EM>n`14V#ly6tku{O{ib7z}YpY=41OIQ|Z$`px{|f-SHlG8Hlk)Ly^@u$*dK zvYZWM*m()@z_ij6ti6AUKQHe0Vqd_l783!e6FUlLv9Z`fS+xzMkPWQe< zZT6+Xg^I_z(y^Vo{fTk=4H+TiVf99^gId^qSa%A8xOyX)|+ z&yZYj(I0%3Ttg%mpxK6vMmQgwS?&onQ-7S}Y9oZDTI{`;7KXx7vhT5u$?|FW;;m$V z?){VCB_~9mDWHPdgrh6M=Z}Dl-VLp@VY_L%k2+wmUYr`ZP+A9z8DWa-yaDNTa0Zs; zb1gq}z8}U=*;faBPglKTG0mI8k9nLU&WMC4MR(LK^EzS$%au9mSS_LL=*NCvFh^x4 zUVefhA&S+Qj=&+^UaY`WB8Ns~{zyfpYxv?$ z<{8_gEtYg6zy3B*qSt2?%z2;R>UT&7qGHxT-0_b5?lbYV%>1=;n$A`pf)xFPD*wMp zyw6}xlslxmcmoyAVT?H!{-d4(R<*WMWgM80Mj3B1Ip{l&Arv#_4{F)D=ftB0d{|h@ z>V22_E|^sQ4g=8apcp%^5!?YmFPM?~H&DY^p5kn6J<|!IDUJkCBfvb3hIg|Va{Hu^ z%@9qs4TpQbpemUin5g~bLyzD4yeOmF9QXQThf=I0lZ~HWnh(je9A9{SqfTNYGA4j9 zmF(IEQ)ji5Kdh1Jn0TnMj%Pd`G3FH=Mkz#I{73?3mC6c{NdmAQ-rEFkW`BZ*Smy3i z;XD6~oQz{rzH`8-R=Rr9(LJ8bJ$Y0lD~!spwu3dC5p}`!b4pOq#b?5bHg+yap=)AU znV)ECuFEv^Eu-2$aA|Jb8qr7k>XI>h#YRj$4=6Va~Jv7m7bY zb%qJRY(xcyI|T@>pK{XCy19H%QFDhG@=Jfh+P_+osBN{)9wQ|nd(CyOtCLjWnnw82 zN)aWdrFo6O#weP$tI~&;CSAaQm|iP_zMVGA}ZWSJ0nwD$YK4@YPtK&!_e9bklV=!qyZQE;XvNF}rT_|G4x2B`QE z_Ws997b0Hdp_d=X)hwc3hNXf?*rCbKqGX#M($CR0|(7jq|I+t(*AV0lfhw0)Fnw&puIIbnz_Y*0g}B+^T&eR51y;~ z{w-!bK9kE&0s$voQ$ly$cawferU7TVHxO^?yY=r9lfpeyO?g`kA#>ZkNN>zE{6*5? zxrOfksmp|TzYn0|=H@nqSKr7b)7Ewq*S1IzUoPMkc6%Jy^(&Z_tcYH24hphwbDF9Q zz^Ud{X?!BX{8GTHoU<4dCA;RNDEC%oKEDDf2u_a#WG9WwbS%S1sQR|Z*@PlHr zZf&isI(ffltpe25S?2-UwzcSGKq*~xW+GlBY-v=0wVY45JbAt+5OTgvONbj%ib|M6 zos@}fEQFh%^H@u9wfSKHk5#~v{7{3wyvlgv@>N%4ntESjWQU6%kk#Rtg!0G(JHOEw zwWDUxp&L3o!eSAh4#d5v*gydZa8{OHso9B=f_&H}bp4a6a}N@}x0Dkid^514Md+mI zOTRvX9YCi?(*5}KB=$0AL}Jn6fqgxM0bv|HdNv##9Tkjdr0zxL2VDr3yrfUJ$Sp6A zE5&&_Nij3JKg#*aY%NS%{vH0Wiwx?U0F?SFRk5yi-QP1#Y*0R6R-_)VY{FME$MT%c z|5E~)l#~=DZ0RTTq_`utyn9Lq*oRSPCn0?rAIMtP`y=@0nOa$QqDYt%>o#Yf#lfh~ zH$h#an7FhVHO^>G=`m`;N9_>dNqX&n%cS2HuKrX;fBgV84Ot0E**Hx3-(Q+@K>`W*)p%DR++5W5}F&e#6{%XlfYW_vT+Ave`b=TfS}NQN!E7hh+jb8dzq z^{1Y|o}p~`)S7)wWA%q?0uc89X|E}pd;Sp`M*>olv=-rJofzIh)#c>H2V{MhvUdzm zF^S6i;vV;o71L(AX%_U^76xdvSrTJ!3s!BQ%=1rXuLMeDf07PtSO+7ce<*y zKb>VrkjV4{c|p8D-t%p^V%be8bj8UqvKQs^OEENESySIj7%a>@OM)b8?4vhYRAu>kI#i+{Jvx|ARef10r?Y#w+47>T6(R3eXEPnlK!WG4vP^gZNC zZ{vXgvoZ0(K-M$q-Q$-@Qpn%QfixY#TlkprfHvHGbuKAlxnD5h*i3nQozyx?_|HA7 z;cGa2a0wjQ0iby36hA*HFFZUx=-%hs4!-AbNs9M!lw~$s6~K#mK37T&4{VBBI@hPd z#=drx7dNt#bqP}v#>6ls(d!k%v8SLfgCs0MXbC8Ej{(XQt;7T2B<+xJgYlr;p2*U= z6giejxVI%__Gb&ODqxawGJ+a-1EV}OhtdbNe?(G^;P!`0?{^7^0;VT~Jq?KWq%rWG z`VnS$P~M#?#j5-%hu0iS%qPbK-%g&D<+Cz1N$Rigxo;>aH-Lu_m&KhOt%vlsZRZo| zkLRmKG_zMnW&Xz$(LB!9-_L}>(EDQOXyOfYnpU4k*`70<^}i zLI>W2g~{FifQ_i*S=eQRMu5ZBHUjvIegMzDL2U?Kk}-jm^or4DBdxO67NY#1q8O`XDt8{Q z1EC*ShGlT%{9rb-CRM!0YgOO(8qMDU;Ic zU=+z4HQaspMMU$CV=jsdRqp|uD8?oyz&C1_E#d$iQ+dcPgQ5GAGMFNz3!0)m>h?toPs10)z#o^Nj zX_cWF=+BW7jHZGtMjMZ?f)Q8|@wNStm}Izpt=cg1m4&Pni^Z~;6(m1k-Z+%b42t=$ zf$$OL;S+NXzV~_qi0j36ygIQR->Zxa*vjt80M^^$NzQ5j&kJw?{Ba0g4$namqF9>( zaK0(K557<LzH4xpQ|m+khVg_`a`^>LpU)PT_wx2nYm2Vu^D z$+M;`Q_AEEFExDJm8w^QGm>p!9j>l1AF5>On(k`xw09t>n&A zM&7}u_JS#G=|r@yV0!CX(E<0Y0q{4Gr6NugxhhX_O(rN?6(I|vBQBeHfE3pR_fCP2!2{ZR2 zjGeH}@q1u>C1f<{O@Hx!j#OL(u+dQ?o+s~~CpgOwW62jWf;D6jjdAZMb)+dr6UEWNRK+WzL`tH3=n;GzX%x7~^t z1OW0>WqI4a3I|Gs)q7ri_P}LD6N4z12E`Yx1P8~FmBk`7BFkm;%D7X0d#xW-M5J

uPty05CgaL+s-@0+lB9-??i&gy*F>56mTv9};D7V2 zh?qe_>GD9So4j`e`J5hB@3c2{26x_YL6?x|N}qhhw%yi7{+~GIRAP_X<=Vxchh1yd zp%;76J5QNhw!d))`;=als|Pr(gz^I8_}lgcicilb9&3NE6!;zFN>cIjFWC%aPib@l z5A!q2TzCvWFXtFZtayjG@_nLRtdF^!iM~(kFb6y{dw3vAplrr_2!-64MY?6~rtES8 z?ri{Xgcgn9_*KBOV$4?_ZYNo8wS#>}m7d3FFLhs@UuHByUGN7x6unQL5A)P=)rUKR zAZovjmR=h4C8k8X87sCeeFZpQ%W2+;ZSjEJ_JtQn@K}{sS6Zv~=|SX=1KRbo2%jhW zmz6-jr{on9d@!TQgoh}0Xex?Xr1PIW=p8lS*$;rjSq#+%^!PGL=rDxtTGn|qJ}=$D z-}^j3##^N>?r`^&p6;yy&P)$Wx(1C8*6jS1E%XY{FQcRwhP%Nvg97Tf3xDRIb}(}( zP#nWGo@gmTyXS{VcY`6aRO^k7eOWt;UjJt=+(Fl96HrR)hjS!7e*&FySj)~{1EvNfO-*xLhdG}{&b52PTvi0rC2b=sL zoNNDU)L&D{ors%0wY>6neCxzouTBq*Cvs)kvr2O|^W%mB<#H^&A|a>X{GH?>ErrKp zDQThuB2Tx68|e^Mj_2;1WMxb3L;JEhyJMy%itKLNqp>^x5OWWLUQSa4>iS&cZv6c# zjveHoH8$}leT1HOZRUk$@DW)TIeXu~fBP0>$GNvL?BNis)ktAoK;yqzKUA+Ez`qBz zK`P|%R{zgH;3C*k+sL)WBp_Y*WwHsy+IRweEe6Si1&BXflB2-Oykz0aINn5n_s|3Q zqjvfEHOAKJPbbX}t~d_yE)`De|9(CXw_zEG^vQMkbgZ>zV22Qdyv7Gzx2Pz6pnbRl zve{G6Mf>Q`?&-4$yP0Zw{5L#1jmq;PZ1q$ZwgOgztCBJUW=iui_iC$n-uyK&9fYad znwrErw}<@>huT9+_%Y&of{5i3Nkur6!vFhGb+@MMYg@#U36x16i|(`BZZ5+8aIx8oxA+;i z6YzQ1e{!M%x7g|I;16M_SwNk4*|@wPVMMEqSAoI@Dt#Iq()S#i1vpwbH(hUdJz;yP zpEd&k=TdlWW@&n;)$oa0vVT#|`@D?(vWBdGMox^j%AcRr9DKjpc%kz@mAnCBg+D#l zv*nM~I-{qko4g{4K}Juoj47nP^iO{!FYzFrmAp*O*xabe9))6tXlHxI{kZJ@~Vy3_Vw8D z$yn@kG3^p+H#{K;UOa94@i^1y_Wh%GnGwrr`1R9Lb)ZLxa^kWJlL{#Sr8->sGAqIt zU9foh$n>S=;K6Ws%w4y*JVr8%Qv<9Rv83u*KLI?O>k3G=>+KEu_-17a0MXe7 zLoc47iTKuFPdAnvQVO^tmka?O9_7p5KfyRs42l<^S_=R5*XWnC0ciO?Nw`x{9(&dZ zwi!#Po>jZ+T3<=uGVh<<1q}lJNykmMS4xZ=`^+)31xE|&tE3Q0 zhf+yYx^OgI79R_geBqhk5Y`lYBa3kRx1=Iv=F6~g$qxT0r&fu|Tslm7E7%_e&7>&u zSJ?-~xP{`=^Sj&oj?T`Sg&NPw?5Ge_VtX&Qiomy7Z0V-jfwixk;hh+Pb$15uvY~H= z2?N|0OVJ5XdMIA=&(A@>oF+?Q0F;zde6NT4r|d(qjLm|px^uh)YT-LxtRUr_*=-oI zQJNk=FvZ3a+voOV1$bSawn|Dhc!r=Cr?9}`6cbk!(Wi2R%pGmY%@6ugU84p%keZv{T6UiAR!cg5wCQsaJ$NErpJ1N5Sx-t(#1JW74%(?_5 zhCPq}1#@MqZ}l|xJ#+mF$$iYin4g<`wCXtBawGFqB4ivac|mp0AHX3JbjICV$AcPF zDLxP_3=S|fbnhAJls3MjEG@|}HEcv>kuYH~2@zKJnEm%aoTRq6%|#`1ypRoi?C`#2LJEnOyf9UsAMvUXlN=8Q+qk?9zR`X}; zmgdH_KUvEJOz-(|?qT5)3Pl(!@Bd-Ywd{Uxr=wKNu5=vpfgPn7kZW=zCs9Ojqgw|6W_Rtd5C*Olzhe%>J}iHoa;GG7yTzDwivr^I+%wwzdujHdQMN zt)9ZBYP(bTL~M5dV<}vXFY;qFnM$F1?8?YY`O*WAYkX`4z&sMu&WA zrAfkfLHqP+g=&7-R1nAK_9RR!oBUrOl@l2!T8J;W%Z1A0`*)l21(CL{y~J`sUx=XO z(-2E>Xo^{RVuH{2B*{1m@#peXn7I^iiB`rE_GO)NU17j=MYIs>WQ=9Za?fctXMd&h zYUV8}*3xsG(5qwz7^~{1h>EAePEY6h_-aZ<#Rp{5)6-40HVF?)S?Ui=ld~|nPP8Z2 zT2H6>$`(~X6Geej`UGu=4?t+q!?(Bk#T5Scx0F+GZILu>PIJwAjiqjZ)SsVG`XL4S zBdAwpYaofqJw^yjOi99dPT$l#zvR6a+h&V#oIHX5H;R&(Xi&N)3diV$-$ z58HJYTe{2gb1q_Qmu;hpCe^ob?3!M|XfRyDFmVwhhRS>jgX5f=J7lF{X=V2IkjrxJ z9&+@2@lV{~1hEk3+b`ZJ-28TOwELuKD6Ctrla{uS#E*4NQpCsGe0tu(R_gksO;fN- zoL?50@J+;JR~+r;_orp%?Z~at0`-IyEg){=%Ww(`dqJ}K9Pg=VzzkcFGQk2+CPLf< z9Qw})Rt}Q_1Y7VBHHrOs;*i5%)=r4hU zBHPLcFX)j|f~~ZBLdN)OslcYoU;+HlPokn$zr6VzDZdQHvIO%>pROv$10Xp_x=Y7B zE-(khCjXztekl+L5U$WHdhvrHOIEB#j#70QvX)+7$2Evgi2I{CxtL;EMXRg6H04o~ z1SQ#dcm&b6gZENjRUZTcpji!Zq3){tFdOjK2BIWtYRs~en_|-F? z!C&Go{b9Rj)qsMb*5k8)?WjW;OvVSS9?O0<*b1CPA``!B+0hEr8Lx$!7P<9AqH9N^ zzxbozvAW2~*b^~fi?$nHB9HkX=hD)_5`Q*xN zsm7^)!VcZ#ima3!fWAhauBB^D9v@U>EdyiH!<(H?uqlKuFJ;r5@6t{_4MhfrMAbc5 zg08xb$Owm4SKtDuM@l<6l`NAt8!xKe;`rU4JjrvFWnKk^43{P*VEnxFVQoW7K^@VW zlzVfKOD(vu$60Z__{A@R6HXEpeV6|vKb4Hyf=cj04j-y*Hq{m+D(?H;?zqhUD91R! zmvvs#own>4xbqXCu-;68a=_-M{2z&no=7GKZWTD>l7AL9#W;aHtau(2PO+VbqLFrY zKWdKcX!yNIg4(#Hk@7_S1Mc^u-65}q$2psBvkH9G@0A?}|qXBSiypR^TW z44ha;-hXmLs8n6^*_vnoQIp_Qz2Ljf7e%2KORH}38=XYNAFC=m{eHOM7(rjA!O=*H z#GFwOJZ}3-BXX^sRiBX2qF^-4SpESH(EJ@TT>5X!>EDaVED5&Ed_rvx>Hg`a8Dild zUi%m)$g#J@-ozr>PdFPiP(G_58Dol1@;4kP@zT3ui*|FeDdyD~RfLt#Q^jmj#LRbk zE8s%=sO}CK1Xq#UC%`85MPVFRXiS)2xTrtDa$jk)FQk=C1RZTc4dZJsM&UERakF3z z*2*Z+Pougs`wW$t@U_YY-uL=gBeBqB4T;*@<#g4uL@t#74DGr_KX&04d+%spYz9a5 zVB1ObGb8+(zPMu!B8UFbvhx}Jy);?0zyB{8#y#oSsK=DwK|SlYr)fYP@>AN)ravSR z;W|mxOhWkP9EeGA`&sB52@kyIqNFXm&~^R=Tv)O)SRWOj{8XM%9~sahz`y~T8b~UwfwpC{-j_!=&z2d{HK9NH_^}GDnZ3MTF$F;4VZA7C$ zuBx-Rpi2+XH4kdU|@f()iFrH_^YHg}}J}zuj6E zo;`Mz2vwFAv0NX$OG&A52Y~>bV%^Q^K6A~NzntQdp5`HB(w1+l!FCeQ78|2n`Dc*Q z0(tO1|0tGgL8ygU6j*rU*XP@z_7up%!8@w_3cG~hOW99t*xcJULNPAFui=M{sK1=( z(CtyP8?Z|hZG6v7_Ok|ozVsuAujeXT-6V2lIAUIhI}B4eN#O15BBvp(6*F1JfCGw{ zzaCE=tMd%@6=juCJmp5@BFO#wIl^B_jB6R@ITOLk zWqe|54G0Uhsd)|{Yo(<`d|7{!Mc<}_!^QnKLmodKDLt%hp``2g4oP!*2REPxeSG1Z zoJ-PN;Vgc^a@5LOF}=*p7z9czYQf@&TB7Xxynw7#$;D_RjK9A$?;7o-3C8*ii9fFWD`?rvg&E(LbO=yTN*f#f$`1whGD;}((KEGEu|(P>J>+09E2Y9Y zlV-*W=#L8USiO#;8(Hb6!#ZIoLY34?3lz5KA6Y>8&cRF1)) zRq9mwJWLr`Ig$}W9AXO*R;zw8Z;M+()U2XL_$__Rs~wyi->0qb>DfRThDv|ykEf*+ z_~(L11t~Z=A6(z3t`JIbiO81sWzZZJ5$9K$8!{R8jKS2ASJze6m_1B51W+acy}!_g zQMDytzA$VcMnxH1e^|3M+#a!4+ za{F)KXQg7|O5{ySKHf&pB7UUo1}lrB=1-akQ0abFLnd*tY<1V|!NDBS)Iyk3N=_Az z9R0%0n z(~1jU3z*)2qs49#F1HIoZ_H_=nzTP#qKO6m=dmrNqsD5jtKnHwb+@MPgUZR6NUKr_gqEKMIc( zkhkAMU5x=S_2TqfQdazg{(^#0?+?&YBbpShqfJ36*p!+gb;ryS^ut z@2zKudg;U~V|R_=fWEx1I`Rx{a^{LWn1?5Y2F2%+Bm=UF9Im>>2* zSI(4Wj06;}obL%Pes3u8Q#}wN41QHw;gl`62(gF38;z`=R(3tGr%6<$KHXP;%6@VD z+A>pqqjoe%jNQnNj`6Oj>!n-H4HfFEBqhbEm-m-ewuex?qcY_2dUfKArH_ZL0Ma1| z>@-^{RttU=Cr-+)Sh>;Ku`fXbzZ$d7w-)? zs?wKm#9<(N*MhxF3+Sa-IdW@Dm~;RU?vl8#L623 zCu$%#z49e72>$f9VU$)pRi>fC;>ogTI*d{~a;0jx3D^=Q4yXCc4eH-w8{8T*P}d3t z#US#fU0r^~22mpwQYiy{<*&Wb%Q3>ODb&5AOB=vl5`EErhddD?a7aZD?Yc^_L_YDPKZVqRi{y*M}{fw^8FB2jVCtebIRB+sI_0J3X^x3MHs*`5Aj znJg7Ytd{*N=F=8rR>%1FjNs+42^)VHYe|++7tT$Td1hoKXrHF2;QJ|6n))<;dt}9R zg)SPPs(g5i)6LO5zdt9yscnabpaVu06nYR{eD1w2kZWd)irgehZ?5}zG8-f9u zl8fKCqf&WrI6nr?;ao&qmijgs37|~fk=n6aQUQS!VVmmAX)Ma8G0$#iJplT)S;zFa z##3WmL-=?3(4*pZWRD=UgnyEM%(E8%7PfN4{`1V$Ni*zsV}!k1vw$aA!Cb;BhgGXG ziBh5&nhIyDHcc=w6WRSCYzveHs2++dlY_@KD$>9zlIc2tncbndqzwYOa5iocv&Ox9 z%B=0FU^NoPqbYwxAeq!SEf+n>O>})pv~yOq7tWRso>a*r&@}$^al^rvRuX{;7ok^n z@^Dd|q+m{3Zjv-Y4QV2SQtVs8)R83WO(e>_5TK`iJ8?nwSqu#OJch{YX)=T3O3pVm zTd00(1~VL)ZVB^ES&pIkAJe06i!eL$sB{AdV6rSKi(OkmH`R1=|H3g;p9?41WReuh z=f)`gflszn+{s)XkFfVsM9TKF7_c0-gUO%q+hUVk8NfxQ?e_bii-kVTo!8la_T_$_ z5W?d3uEAFOi{2V?j9@25cdSp!Ep(7fo+X|KOBjEz6+PNcIT`r)Lt zt1V0rc0Yrt{)J*QC9Syu$H;Cx929{sC)ZbtirxoJ`*wPO{rH3OUB3S_oWE3LCF|cf zz&eJ-N&o4e9Pahhuwi0M%C~MAR$P6pHex6{-j1u{i^l%)zc-_s-^l7S>agLG&xGn% zvd6MUt~4)9!$2uW&H|%-^M0$MzNe0Jn^|18RJrat!KbdDQ#tZ^c7%G9q}os#3DorM z6c4pIyav;&suqhO~yc;T;xcyV72agDHAG}~U>eMBtamLH6%yO~*3BG2?1>D)CS1tBU zC}#s^mk4mqqobfC$hjC6irv2iwCEnY+)xUnC>KUC?I^R|;g$4Q(lGT{Tw_=#O5j21 z|B210p8RSc7rL1mZ4GmU5>|@!G?xv=n|GE*)qi>9IaDLiR~?wb#LZGoO=AqO#jrrT zRFlR;)`9Jj<7GZ1J=-J+d&U!&2Y>Vyy#y#*{i%9yEF&toFe(~lCI;22&`QmKD{zd zH*^Hcj*Pleyu7Hk*`<7L#R{!1eBy_+Np}3YP1eCOHp7L#ydNQxiIp&PQW4Ap;J2;4 zeTGnp5jVvaZYI)IT{2fXx4&=VI%h@~w#6FHiEv{A(TRJ>B{rJ=lBH>>rs;^?wk{0# zE|hy-FxXL%pp<~r}#al;?$~W5dtQ^XT{WZqF z1a!`RK#zrb{-P2A#9!iO&X_NE2DVx#zV!=4rPD}vr9Aq~&g%E|Y9K_68)PY5q#$(= zvb()-VbNYvnn@-emy?p}qru{aLdW$(4E|c0hQEVd+}4u!3muesu`)`e2vYCogxgV0 zKT8rRD^zKZ0ox4a}e1dWR9%d=8ng$mQ`RO z-*|g7zqf4hn)^sUF)Z4(;HA$|`ndjpf3AlbHHrramU+fS6%Dvn7CjhOF3bJ#<+@1g zd45ZfqG&S(SXo3%X_KFyIB0d01l5)Mldl*C1$hIZl|lO$CY4b#OdfpTlEoNrVGLn5sYBR{uzt|P?ifTHb7So9EfEu zzOVSVbonGg+X<1)M+25Ey&OJ4yxx*rTm z%tePouSU_|V5All7W*Gc@er1)%nYmUCaZEU@33Lsm>8(;Rv~r#6M@cCn!qrT4kWh@am&=Dc+{9<+v7pUm_ zSP_FYX2$!f9F*)iD~DNU*B*qCf-+Zurb2VAtdzW;VJ`*jc? zhk9c%OJ3NM+b=btlb;1TFxeg|V9MD}Y=6ye@0kH)OfF6RS0-l?USWm{EN8C`i{|Nt zFmq%n)aJ>r-@#NQg_Sq5$(qh_qmegSlWjiuqX;&D8ND&gM^5o37CFmSbcBRbHJP%@ zt1jx1gVvcmZffaWVb7bz?1l@>InnUDI<%XXsOP>34aan;xG{5M!S!w|~(FWsi2lX!_Ab~k6w63ePNynOK!Dl*;t>25vs`~>-) zfJ;7}xww-EN4kP9Fko&BAwOWZ+?h(uuQ<1-JqgF-_!#G<5?_>uqPQP)Pv*U{o3eua zJW?Hyr`Kzz{qfiHsiuZ*DwIMSPPJ6qSdcpW^@>?nemGFB6lP_YFb+zI53$blb(#An z4$MtfOY+^twg}qI?LL30j5ZpzxcRf1LkY7)()8%grY!z+Ui%A+)Q`&*7sAGx(tgk4 z3-S-t1~2KIa?ECUT5rG*CkN*B^erSDO@~?;)Qa-*oD918;X+Bn&*ZC$Pp@{q1AMhi zOyq4>Fb77`%Kmf^W)UgGh%eFNx?b>vcygQ{Dnc&Mf@~2v`BWP|D-n=}qNyDL7M%;*laJ&lj1LsE>*-Qsgc?a80x|awZaC zJRTjXsxj20wb)A)yQ2x1{(H38ROR<>-5IGcx?f8s=v>KwQ)7L^P8O_kL%W^Na>-YL ze1CLt@?k_?!k^EKz_bdb`(R^oW6A67JN(Q5N?8u$o@L(ep+aIsqIUmkJ>`iZK0ZK1 z{rA%hqsD4kDEi0g1Z4(aB=OtSmgf5HoxAF9)#XlN;?@6h=IcI8^Z&JAYtX@>{cd*R zxV#Z_apJXMQB&b+%n)Mt7P`M=w!u+^(J3Y+?+Kgi6pB8J&SRfPZ~MUqj6~g!lNP^j zY2&167*8z9nN*?pL;Eh#X#MTop=W2f@rw-9tnUL6`%Ap-ze%{Q5KaoI5EH8*kSJ7U z5LTrzCUFztc7AQ-U*M}16#5kmQ+!XVR|2-R$;ku;B6cE=wA@%$D@Ok%EGY4=@F2VO z%`Y+X2@Ss2AzLpc4$?!EqtOnyW97yY4GeH^`gIM)X9aW~_su+|xJcZ@3H(Up`V~44 zaT4bxClvkEj5~g`DH6tbE5aTiFN2WO!pxk$eNY?_9Xv;LeJ{_k3bI}SQlcBEQ zl-CBkudH~r)sC(8aX?+l@{&X_EJY%XMw4tmtfpF0YSUME+W$}vOE?=Y=WvxP%%slR zXAXboT>dFY@^uqqr;;oC!UmklA&^hQPMd|g_jkUJNZehY?{UlFbg$h8_2zd+t7F6& zU2PlpD9Tx|3uYo^_S#HC z;K==GNwB8fX4645f5ZRMgWK`;qlk6KCR$a1{=XbSF2lopHgM=D@4Tu^KmiLJ3{{fZ z!cz0dl7g^uqxfkAT3TE)t$f@-ug?=Q-EnODvv|mhJx}GHRNl8nzRO-8s2~**E=Q|k zy8*@~GJTkvq~2}J7SRRxibzsO0K0RuK0Rz~BPGV^RERqgVCB&1a6^&tyP2Uwg(E=E zmvLPe;IcdFU98qRMSnax@J1@&Yvt|HY~hLxOK!zesaUmBv4`!i(q=}lJ*S)&_r0VL zX=TE%&j1#Z`C}Ds7L_e2&v0oRmph}; z#>sCcd{qlHTMNN|KA7tKej4zeWf3}FT0Im@$FeumbY|Fgh66eu8T#eN`c+FV&04=u z^UDbA6Kyhj&UmrVvkycnsQ+JA7Uow1D@!h4oOH&YGpc=$?k>||FXWuA*Oq`k@}Vs67MhBih~2wXCK{usf3?L76*=h9dFT`y-we*W()_sb=$wA%LQpo^^O~-(d!oP zpXVuRqq!C5&nRk39ksn@*3u{Il227+l*6+Ji)n?LWRBm)D8yCjPyH8btWWvA)gADL z0qW^EX2iXZHYI$r1>`Vnf zO|(u zU7xaHWNs4yU`nh-Q%zmHAF&tq39HG$c8rHLoJ});*RuHQbAwpW%hi1o(x$H1wl4z6 z2aaN8)6O*%^>n`bsFuw#a z=w3$7DWVlUQC5miLm2E>1U@nL89~yDg%zt5a~zd_?#6OB?KhZrL;vGVF`wwJV+){B zsOU(9zU!4hIBzi>oHziCk$7cd0Q^C_Z<%H<*;d|LqU;|-7uI^a3+h*whMl}iu!8*M z>E?8J=GVD|QsJfGoNO~V7m^78Y@r1*;Hh}gtLc?H6X%+m_8jcnYR@?Tge8SB`Gn2P zu4IBDYzN0cJdvRQL`wNb*4KbCgiyi~?Q-aGc}W$kob?<$Al2!H1{QBwX=sT33TRzi zl~z}JZFpDi|A4gq9GZ0GjNnC+eDo~}$LCwK1t)Lqjw{emC3k0~0ky>2p)bCw)Rs(x zO+|qX+lqGq1B=$>5Ka6{FI=l8KsUL8n8P#tg(wKtRwMGDyH1)~GEqu- zGYhV_hs>+kRaG6glSkWUO#dQ@urOc>ovo@fC0p5OvSIxu-P=<6CkUNnjVX?b+V3Fu zHTz|Lh9{p2uzm?A^!UU0kp=GWvO+CXZZ|%~NcD|`AH01ofm@|B4RHY-w!)@8=iAJq z(%%ikH&<*7ToAB#Q5MTyb?Ytc>dF zVS}}AL>`RS{i6&s|1U)!y5Mucu~eHP%ynycdJE9{B{D_ydh=c;B;PC$wGT3S>UOOC zqd#~jzkI#E+`L{7{EZ)$mtCyqKP}>4wfd}uX!3FA{j*fEqo$f7Rpq31a1do%uPP`# zSCDpEz$8L7QlSQ$!*4@~w!s!-r3 zpzuse|93>HJyKQB6_iwPKrOnWhA2p_AywlG(X8q|sRBEf08$BHIt8jK&#bN>RRVYb zz&{4|BP`tF4*~oiP<`+VAAI|L;OS!H||fkl@=R z%}1Ow1#y>${Plfx^MQ@SYVF%T`5-@ky}$Il-k-odAK1F15&3B$Z`Kxfqh{UQCdiw{hZWcRkVg6|XN+fbw6{ggJJ(oQ}AxF%SZG|>mjkQQ3Q$Km}nV@jpl zX0Hee(v#HI3+@HvEA~Y|B404%w_mI3Q8yi-0>E7#l)LD*e%gb#?2}YKrG!tw$Xt99 zR8jL_5{61aDnPfhs_{gxwANMA09uDys)kfzOoh5e*sua*?kjJ7TUQOAw>)0;0!dW? zcnH9|fjFVDh(7`Fy(FK_uhwEz+TVEEIjFBJ(nwTYhu`%#pJMaLv9QKOv&&RZZO5V< ze6$`SwIrbv3gm^XlZMDtz9jn4w?FfCK69hI4ZKmF$Xy?lyU=X?#C{`H0?$(Gk3rnr zJAg4#jfA_fRRw5>(rsN;x6P_B0nnBJQq!s^D$M8b)>d>Pg_1gvs&ip&^?Z%_?Q7uU z>!^^I0rn!+dt$Wu`uL+7zo>lTpkvyEdMQG^)R5N0SwMrmf&DK=u({Aw;#*r6q&*t`i>ik zOm8ScP3gY_eqvuWRRDxK56XYtp{E*2HC#nir9`SwSG5(SshSwE8e>A_imv;QqJUIY zZxNs$t*#+$SS4cB2Gz#7jj+0!Bi7wW)d2W50AGtxEB$nSRj^PeO`}lLX-Myr++K)E zV;4W!r~_!4&iARG;-`@)xM-$_G>g4dFYQI9;Z5QpkYBqW)u?bzVM7DoaigU9H!Pt7 zp;0xH`Fr=({Rcq7Od!7p!6hp05LE#>p=uzERlz%IC6zR~a37DZNoDQ-PJzM)7pt4&>@TImcHOJv#?HA(3`=5sVfSro2jL$($`Z5Mx+`BLLu zxm)u|Jgo`?P*LQ>uMzxj_9G4*$XWfxI?M085gJf81)&0Qq^i2~-u=v}#+PBP!2bfu zba_=ZM4GW#g`id?K;;1Fpj-v5b%h2H9ir6+fHqRqb&vu?0SJo9$C7}Jwbeu3RTr^X zTLo~#G_A7Q)a4=4#i%q`^(;iCOS|}~gO6RJ(xw3l)1~-(37iD7SX?EA(qj+#IzY;O zlFd_x?b>%<@1s#S9iako_@CSV_kK32LWWPLAs_QzHmIbcQX(Gpj%Jn8BCe@5G@7Nl zYST2(A`6QEX$k;!C;p+TFtK;Je*ucH(*MG#C)us-HNY4N`*|R0t z*>qY%av`NrCFTIjxQlPu?&P;C)iElCcO?*n*FCB>#ZS#ADqV;;611sa3XxJNJ#mox z_OtyIiTsJ%W%Q4)=b`{%;Kmg|m|bV2Ndv>L&7y(3d^eYpRYOjEs-BBemRX+Kuay>sdhkDeHP z*Y&zinhCXkbr&(ud|>-u>`SGpyPBSd;1B3giwa`ZsRYn&R`o`!!uPsrB5}6SYE-XE zO{+?zGD!}wMvXG8u3`>YYZpeWfSrx2a~qTE+94pTO})^F6m|k&$8i2=T~J*rQ&fsM z;#?^}Rd*KYeIjidcvBSGfsU00^qx^^Bz$(?Jj0u# z*-G3b*tec)myB*J;=g(?Q!Lx6#Ar1TY0v@C&=8<`OKxkSeb3gzXkH>hLnfTwj)*kpMhzdx)W2oZ%3DgM}tyaklC z{XU=TQO`6J>I=Z#AKHGKtNr)x%T6U+T|LAF2S z$K&wpU5E2~n@&wp7KN(0qv_O3?_n0#M}2P>ABeN1fejW`NCAMJR^aaj)fq%)p6Y7h^J@3Ex)eZS$`!fDZFOtWz(EK<7w?nb2t*v&X3M`ISHO@h6+lp6* zGC;S1mHrK-fO(CwL?^gn7wW4aYF)1|4r*2#0Pc;7R@b9jz|E>Q)pyL@oWX7Y|9^W| z7h~5|oxipBIp3AGJv2tNi15D}_GQBw(!+G4R{yeeAGxwf*_WJs;_daKz z`(t~?6USqp_2TiJIdjfE_v~-J{jG1Uh2o{fW0xL-}a4#c!HH`)4d#qO_n&Az~~9SsOu2BA6nTB z%fF(*g+C~iWm@@9RBlm>lwv?vVPtIM0!Z0v-MK26U1e?44*;k@?GIr_VpBH&fYiUL zMN#&Fx-b9*hI84HG;)BSz`Ag90reP`4JHR%Ro$kNL=#T>mr@@omVmQJo0yoQk7$MJ zp;F|z83{%}obeM;QBwX#j4Q*ygL0O(8Y`^Q*;N^UsvZi+ z5~wEGYS39@Zvf93iW0RH;A7m!ig}<+=34=NE4dNC^@{E`6{?!zwtnH{0*dQ>iRd&R zX}z@vV8Zxj>6s!v6VtQzzHBtDc7iloDPSR@MNB%4drQS2r$VSwh~Y1j*n1&u_mXY? z_j=nled@{g$r)V5Ay@O8CnPEeqk-Cx0GUp>3-`)dav)qp+ag*EoDXf$P z4cT)Ba{{~#7usYfFbN~_xnuYC|Gw+`b(I5Zj9b32{0;{^xGG(hs08vjh~u2WRt-@q zg2igAAfVA#fpp?(Y`Bs#Rg$IHoSXpGK2p}2>a4M4AOOTs*Xd-|%Q=y?VY^L@G12&P z%+}A(&-*8Y5H((>U1U5vs zsU%AueWP(pkFZ;a{YWRb^<^QhM_LgRG*ZE+5X}kodgvsOdPW+jjsiet0f)#+Q6SXd z*QKKYOw(CUA`mJI7}FQ({tNCW+z^VRnc&Z_#0DoFpsrIKc!>Su#o&`9?_S-?mr8&q z#o(wahsFZb#$FYhR|C@u0*VrFUSAC|039UDq9Y(-tU+UK>8)W}K=iT>9XURZB?Z>S zMZeu#Tm;H%7s{QXF;`uU_3r?FiKZQ&fce&zzS-6XBYxOfn9>yJ z1-uJg^P@hBJcm?O)5HV~Bh6YisA$MftWfHtHRq}64pnQVB2rMXm%#0i)lKLXkwG;4s7@1&2lCOc=8wswj=YSfdpHt$wROY-An% zt5ILAT>(iqtC>2h=B2N`@>2uSveuNf`n~~G>5(;PuAzUxG=Sa6)miJwK#{P}pRa&# z+yrUN_ue>at?xtX*{I*r12IbBDL{`*W z<5twOSFiJ>x+`w<5F1?sk(mLw@_M(9vCkAhWB4-AhJ`A9hJG{JcBiE5T^*pVnVir(^u@vbLVSW3*i|RdR+lOA-$u9qAd7lfpg*btZGV`#kwnG{G}TwBpVcodExl&fNCGK)Z3+jfa(;duEqS0^C~+eY zlUoQNTQgVy2e5INY&6!V*S~)W#R3*u?=jZVH!O4!)@BI{Z8Xs|OHV6eB8VpaNNYA4 zG;x;|dFDnE^--XLBG0Wr#JK`NUq4^w9?AAzo%W(ZA29G*sq7TWudK#b8i3hR@VWc% z=|A-8Zc0K2sOu58{PXZm2lwD=3IUP_@?}Df80Bf2nsv6=s;C>qCv|#Z0N@fifbg@e zrs=FTllAMh?#G%=X9Yr2mZ0UO^RLFiwPt3aQA>W`9#;^b73IzgFUtCaZmpbrx&nb7OOC~}Tjp3-f7 zqmO2FiKxHVuC=X?-JohlIt55mRw_i!m~;}^W<>TW_=Z(KyNc&6>;upIcJJ{H1v)@o z*Vz9p&YgO7@J9~(;2Q2SL7V{jIEd1S3^}H+rqxy+SexWkYPCY@44@ra=Nq|3ofW{O z)*1nIiv7w@YHh$(T#vbl47g!lv8OMu+3z5BI>cxQLu1w0g>UJylrP&pN#+v z08?H&kje~^VV>joIA3Yj`2n;NNa^**j!yMQ7m`USn~ydp2?@YDxs))`2%IATc@8*w zCR*8?G92`fWk40o_!exk_O521Eg%iaCWWMluGCNJ8=3g+c~3Xu_0q7_A2NUW=j2?QUjUtC4$-~eN3T{ZH<18wQaPt%XpV=l|e=FHqk;*?e-%r$;J4PgD~ zmOy{+#*iO=kIix@ByINW|0p(@djw-X zRSJ`5pwn9j?#1d#ccbQCA(PL)VQ=pr4!>1K-74<@^^(V}Umo02Rqj)S+_|P-pjbgB zKQ$GegZ01`%UHvnZkPa7;|d6xK&xG#wMg9ou^+2gF#PzaS>_(JvnkAVgtqSL&+S_a zwl00JQhFOuqr;~CT&ICme0^?isf+*@wc5>FfY=x$eLVso2TL*yAg3KaZJXX^*iApt z@#~MZ^KlCgpl*>DT@{}jKC_Xn&d^7V|GZ+>J_XX&Oeccyj1)?} z8I(6euxV`|z{j)9e&*?q^q=WgbqA=gYkZnC4}Y;d=%{}{aP!(e1UU=fry_VhES`47 zRRXRNSaBZKYW@DLtel6?5p4-n$g-@i#7Z^S25OT6f|S9=$N|x&QmX|%Nk7+yBn^-< zzI2w>^hkkl7AT%8QuF-u^QZkp$FE;7s+*7i{{5$b382o*13*2~K4u94I44DxCYSnyf)ix{guN-P z?|Kyptc5Kr%^CH-+L9GmY{O~;iw*y#{aig*_59G1L_YA0$|u1*%r$@)EnQw`j9)j& zpC+3gH{;WfkH+~~=TG~Ij$eO~lzc`^ozy~oWy3&|B$|?KeJB-G2{rekz?;Ni&uR-#8eIl7M!q?h_y6`voJ<=gdU$X< z4F62YyVm?mh#^Fd3-oCbGfJd@+8Gdmb%M19+g0jmjV^)6jx4HC^tQ&qf{s4Z44}~KHr`cpO< z-*cSFRA=VH_+_!adMS^l{NQi%O-dlnpf=#Uq`p4wM;caP5jFGiL{kJ(Qgg!G3UW7O z)w8wgFd{#O%3nTvU;oK&wRV8IVPelCgWn?cj}@)N^(t{yoKQ{(-BV)Ca+CsEIxCW1 zto}dcB)B>uy<4Ew?J7cQA`MhPE1Bg>Uq_?nyB<_hYgX%;Q+Z(4`x=uJQoVNO>lgYO zCb#J0kv1F|kH%mhQMH1Tyh#4O)Z6&T_%q3B=80rG->$8<)4iifoqf8kkMF}dofEOQ zQMgN1SzOWrQeZ*E{PnSW`~TXl&JIvFWZe2~_C}`$9}~szthPdB3|Rs2X9D}Q7`_Cj zppjAta*VacMVhkKY0NdUCLkHtVlA9=p>d0?H@KEXiQpW_kOk0XnX)zj4Vz8mg4WkT zryU2~nkgoUv2o^jK7dS*Pq*mP&hOtCCSd$Ow?w1 z*vq$>=nOVWA`cC9L{tie!iv4t!QBeT4HvUYg|bY8f690Czwq>XWZ13B4p29Iyyfeh zfA#F}KBaybvU*F)!~y}HGh&{F=+Lv)z(JBE)@;^_x-pAi%#AGI;F^+G1PX@4IZ(5* z6lCjM4ASu~XjvemJ{uecWB%CWr)C-_u0Ipki)3Z%BD@JFyvq6c7)5W6nw53v8t2S&_Swr}n|{F4vJVz&xA zK)vGPjzhd=Ww`Qj75N~+;vyFeA?D|xK5LBpT%95|Vwoig#6>-=hd{$#St4#Q$6W@EUW-~%nD~AG!c^Oxb$sj>I_vz=P(SVZ z( z+w}P^;nV@@RS|a`;&rEnE58fi18b>fnGyq1{!bv!f$miUfJVyb0Z5taIKa012t@Yk znOLKFwpncSzQ)%87q-8Uio+7HHAqF}H3cqfZ8=FAy`{^ysq_6{6UlZ0YtMCjx<#LM z{@PGK<@yz6Yx@qQCVNEH8RIOp1)^;L4LwLz00U7Lum-BKo#4$P`~~3Rb}d1BtpI#| zM{macD1Au|K#%*U> zl{GF8Oz5uwBG^Wdog~hQRV%s*!oU95m;`gkJTTWF)s__^0H!~e0^>Q34=i)$`NI^@ zsrN71nF3>PwZ=>S@X#P9WAbPcMC-2jp(IqD0wUW)y#*$uf-&%kU9!?h znXLmrV}}4>1HeT%bjJGaxeLD`fM9xjWRvGQKF*$>b$-Oe(Uj|lYELIu$yjC7B!D7R zFVz|PkX#aDw<`1(jmQma_Ki*n1D*oSSGI5If34F{d+&s9l^7`$*aI)x8nOY| z>5Vc%%fXghFheq!3Jf*FZMN$z0E~I^4p6&TW9)utWjAuZUx>R`I|FDH z+CV9aQv^=|`htNy1uA{=#4}hS2n(nS8e*6}V9a!&9hVL2jCaJ{F`w+Yx3|$;bm2gG zzVn0Hn|A$mnWr(NHq4#MBDBsEfI9$lJs>+^umikE$Hr_nx=6vJ7|Az|-@oa2w;DP? z?P8tc0GU1a#o+-`KcK*`y`~QZMJafdz$;edMRi;>7R`i92hgxgHN#jYiP%>Ft?ltN zlH5v$O)%XVug&`Yl+w*}o*!eHXIkc2AMX?}rf(qggkDd`4k5NvXkN?vZ-D<0F<-y= zp59}R$yGWWu>;gDE>+zArL#AVoPEE7cN4t+k~}D61!GPVavI7-7``ehXN0H}3S*7m zeP^_b-IoZnD-(YUWrh?tCqTaC(gH8L;YHmGi+ zNOox!qP$=rkLK2W z(^GMCLfK53Er8oBBAYyWc5#`6@5{P;7ir!_ z=sVZbezkV6g~G_PP=*REAsC9Hgh&bMfRs`#MwX^hs9F_AiwX*gfdU>-BM7Uih%pA9 zfo3$c3K$V&bjXdcfMk6@a|(L^dWNQ;um|NF1?Kg>Ck8wvFy9r?@7#CK+>g6Hq#dAk zahb=54$&SNt?Vy}1Auuup*MAR<@H=-=6OJWPzWB|mv1`!)q~=?yV3z_7aKJ899p?q z27J33yj>yt0rtAP@|rHIp#cvY#Shq*9~?Wl>ACKnbb#8$6&SaEn>{R6zv?)82PtnQ zdCP0zo4l%mpolyp!XH}6zmNIsM_sGD4p6(e3geDL+%hOv_7P?uh5MAaW4-zcT*1p` zU<6MH<%mF!^ovbLo;WB=-F@kz1Jo{Bap2#WJ-<-iu8MsMy%XRsk=S+BvRH5IKLN=9 z8kon8!I7JG7EeC*o1H(jiw;n`SVQdp7Uxc%K6_h*d@t4Q5hHs*-E%oO3Dz?VcnV^U zQF%;^J(gi~blbMgPaS@*EO$>q7agE>@!A6IA#Pt(>;i_nwBk)F*kypiNgow)$UX6q65?}F29{JDYt(KZzxe-YsFnd z$7@J)4UNnTxs@VYg}Rj@TcGGeqz~^M?NgbFzye|z2Ga?|0aOxBj8p&ypbS9{U@#DJ ziDJ$Od4?iqM7b!UuZWdb9PKLwikF`JC|>T&^Ide&MHgLk(M1u`0X>oViUEGQlr?|5~i$kFg?k>By7k4NNExHt^MOw7D zF0gNZ-}hgP_ z!qUpx#@5c>!SS85i<`TL=X-A-UqAnVz@Xre(6Df5L}b*5kI^x)aq$UB$)8eEKmV7O zo{^cAos*lFUr<<7TvA$DRomFq-qqdHH#jmn{uMFV9{}4100ad!loh~%E60|Jb`+57 z!o{dJI2lpTs4`Vny2NW38ci9rHJew8@#o;j_2MZSd9604T>jkpS{bZu-;VB;0?s1u z%%L~=KGq^ZqB@37oIazrQ}+Lb%G~6ig#K9zAs%MfI8}WtJN|iA7@*iR36*%~_=hHo zxxUtPaRo8FJ9@WFcX5(sR}v8XiP`PqJ>321brAo#sYf^x{ZN!2o9pw&|m*H`J+q&Q~kU^!BQQlG4&+Pm#=`driTG_2bsc z!V<k1;4_}WQ*m7E`O1{?`*{!D;tur;{&aPLRREZtn6HhDB z)LY}bN$hFd#7Sl90&}>V{fr|o{`luv_B+hkgy$dKJ}Q<7K6yRx6>|F8tvRX9II2lC zPCeJo{6)``MdI$GZmnIL`TW3;z~HiIc#nHRbP&jf&CD?P6Yzi~x5FIBTSz*8<<#MI z+DkT`z0M{CP)p@!- zU#Y#Jp2pk1uU4l1i+gE98IQ5zdTyq%W_EWv;D1%2M5Mk_wRN!GaCXiR4_>jGM#}VU)q;yo1 z&=hHQ=XXi=F}x3}y3C=6?LK3>B3++J*sK#&zF%S(p<4 zp!R}W%>~U!+_0l)&iTBtep-nHRS9%GF1ANq25y|)^-t*T2tB5Ur$_zQsNX1&|HD3B zMzkwL*O+$ej;YIv-d!Jq@S6V56O~W>gYq@Q_&9=jQ})bxNeKBjxATn)TbUi@!Gx-k zQwbITH&9bpr&R-g!&S0thxE)usl%L>e+?^KYL8&3+;V*k&W)g`HG-K~HCfP=G+8Pdox_)ov#CDzKt0OFICgj|V6cAIOtOz2- zE}DC#Ov%xUTa8FY5v1O4dZJPzKoGB?aqHqy zt4y}lN+~fvr^mAFZ?|BAmy8UIkrC6%}%eO@&RRWL{(4o zG~C2U-guce00&_eM)V{6J=V)Un<>Q@oMw4hXEsdN59Xh6U*tB24aBcej&iE2=I}(f z;u{7}WlEOLDdQ9~jI~ja}^Xx{tp#|!B>_>4A>8uIR zH8w?2DM(*|Ac%aq8fykOK9ETRadaaG7o$zRm|bG+Vrrhpe!nLpj0h7=|B!$BW7X&@*7FiLc0N@5O4fQr@apvMViQA9Bob zeb<`E!mZ$GW8h|4v4``%Z_BBP$S6UCx+dAMgBuQup2j}cMLM5^F^KKjLro;-Qyb@) z@VVLK^FCH%{m>QtQU61d4&WZ~Y%%o`15l%Dc5>r^p}xv0{VPvNdm;x@XxAt>Q-sT- zJTJj1zPGd!k&Q$CmNpLHf|+F16yb1C*hUugJNl?s!+b_fh(O3;OC;|OEBp1tUir&) z$jewD$~#0er*GxD zxcXu4HBEw>MfE)Kl8uU;$_jyO#2~>~?u4H1;is$1mf_2MBdC?w=f5cmkA-guQWX;f zSi`X{n8rf-v8wy~-z^XyD&W+-#3V8zFnMFOzxjKuWyn|m9%+WrmFgo`70p4w!YemmjNbg_8Eq8`a)wj+#d`@ z`W4iZx8yI3|(asw~c{7ukt=(xM&rB?BI_EKqx5p{#SGY&Ob3KpE#!gS=JTp(QAdLjT?L6~ZRVmHePoU2W`zuW0PUlF-=2x*@}^YP8~-h6s4S{PE>)SBSAd3E#fQp`J-bttZBP& zOs4^l?)fH7PrcV-2yy)ei{0@XT)#*U@7j|0AIkyqVzA2$hP+&yBcq@N0^5X3QN%KL zCn*1(I1e@}Bw!bIFnw;t2-Ve)72JG(mqAza9wW&d!_MK87;Zb_9`ka?#gRf}@e_Vk zK{HiQ@u^4vFgrc_p12Q!BL4eYpvYI&?_Bt%O@jV7oQ%I%>lJ2%3-%DQdf13lT+h;= zYr%~CVV^7Jk*h|&g=}=)8C2OfEB;L$b>-2j7&2V4w{E?RGoNgfrrfjj2|29+*r`pm zV9&6Aw7Fn!(Mi7EEq;@HAb8HeLsFWM53wYV`g8_$R}m&8znV1 zhZ7bX(bf^<)io4?*7$UU2)Ll>V#*g}SM{ia{vay&iZN_A0Do{acBs(Bfc_$JwZ`W&FW{qcxJ_+JSi)j%x9$0O*k1a&PQ~a7D z>V*5Hhk~(0f*=mP$er*AaioY)-iJ`;bFO?8`TX!Vuc~QWBc}RikW7onI$IBiT&W6d zj=a@wa)VsagQ|f$(>3OwPwCE8t8}1v;ADNdb@G2C1DB8rGqv2i!ruSPLJ7549GFHm zE5rIcR4Rz<^2!JhVtS?(b&lGmZ@ERALXN+NwXK^MUV;kqY?Hh(DhZH3bOTzb8d957 z2aFV~zg5`}1@}8k|GdytiQJ*Q1kKz7=4Cr<;AIJlfUk>6AAvQvK=%q$%fX_9tFYIV zE`I~uP{~CR*w4Ty^>$UTsZzuu>8Z2N##BSNj`F?fywnb={mbUBsBf*<@KtAwNlK$EP{5EpPlttbK*C?2eO=HS&RAI?iw#)o!D8vC+60_mZ zGPb|~#Dqqi<>itxDv@&HAF(qoL0@$&KXR*42^-BA8{kGXQ{nRDG}McI+49cPzUwb6 ze>s||rvEd5y;2;E;xZXr0n8Y2IN+h`#u7edwaz)maD!@thm_N8BHAwe%fb)Dwf(?h z>a{}#ZkA0{CIVvTxK-(EcqCN72jD4|0*)m@a4iPt^sjnonk9&$ss?NaZ);+quzbI= zqF)FUr3&L*g%KHgjDSlCCPoc$+Ocs##TQD(pu3P`@T`%x2W6 zDu}%fU~3dsuOogi@4b<2uUrD-u5twWYesJBV7Fmf;t)hU)(Cw!Vs9|3@sY^$@ARDZ z)4bdMq8!BoqP=}>5p0BC3Xh_4ZNis5=P-kW)tCkg(xPIcD*NM3t=z~9&FAA`RC*vs_ndw3M6LA|6{&g zoR`g#e^^}3&VaxiC3zU&p6ZRuGgX^v+*B&&QzJD2h>-}N-!6@6&W!v@N)J>Hx2>-C zuV(kiIHpxj5aVfRzMxmW<#!8Jh+Q-GCU4_zU(CPf2>lySP13RQ;jk{xw!gE(7$iGG*Gj%cX7>$%KIZ+o9U(g5NSKHx~0>!7f=_p3{a2<;#+`?^A%V4R0|?rWjEhhP}>Jo+mA9B zw>`m2h)=^mi-%@a6i(2dD7sfnc=`b3jY|44wKJ%UTNF)#OhRx^OA58(xv0pb5rdgR zU(FP3nhW&H;VYtbTXgHG?W)i6%Edte*AXlK^32YBoHK zXTdjrq%5UO*K_#3DV%2Q12AbJvDpN2)#SoBT)L-O41QTnIRvr+mAT77bz*n!B*ml* z7|K=|6y4Dci;LzgiDBG-4ayq15zBoZZc6S#+MQT?tayR|8J-=;JOdE(FAb9)%XD|h zVAC zyt%hICT!h5?u$PsClQ3k&TkxIf=Y{sGLF~ggJTjZ zS2TtQ{7uqeE-C|l9e%D9L)Q{gsg-KQR8+(nAq&(a>8}BA;i*Q+FEPm8;eM;@aN5=L zMhg->dI2?2s4jE0vzk{JzHgfo+z*ujJ3*sRvp-j*q#+K9yxGrcy1S3f0W z56~MzUX$Gj^hLr$$O4|piYZNilkR6j`8=wFn-8jx5hIY%znoggh#+&LN^PK)n&9P4 zTUQCN0fB&6U_`V)3|!7AFo&y* z7hj287TJ6bmTH0@icZ6q!e2VUwUCp*Ftns?Lm zv1`pw^SUf}q~8s*7#~o%0Jj!Em8P@_6VSP&Qlj~%_1!C1)bcP5`{Ctq=B$tjAFXB< zyYdNe0dstz}r4g9o0<8G&ue- zfJHkwE>o0r!5e(VdsSoDeXtHZgIZZfYsMT@JnrH|csz%vg5&+K?&fHESZissbZiEv zCoAC}ftv6E@a_Y&V&}eiiAx1psjLLYgA;>&;XRmf4v?l^&BmSkR=102vAr)vdOzK) zJJbw$43HT75EviN-1o_V`ma4j4GK4o(A~Sux?QxjIxKj!v%XZVI$Y{)^%o&{R;f_} z`cV^7KzVPSvVD+pi~iR%NFTYHo6~>YyL^(5wt(P+FlMGUcYcQLdWvn1`p0~(d*7iW zykQ?q^}F9>)N|7c0B~Oav0RQ0O<^?R?;# z%@Y6l?I~AVj28hV)oiZ`%|aJ7yqBU!gj?mq#X#(p_f)Z`mO(kyce@b03bjYqc(5jD zA`6W6X6Fg*m4pyhZ7GUrqrn=w>?>S`#g+Or(fyDgH;b4qIognju2=OdoDy2wG4$76 zT;lR@L4yKH+5{h0y#(U9w&iJw>ofVf{HJ-iOVg9JTV42n*1o#0=|^ks+~upu57FbT z!;q1ZjOXqYaG`qr5HC1~E;}y-2^;<8QY1wmenh;$6qmsV!3Mf_-%r0t0>XUzSBS)R ztbQtrl^o#dME{1)4Z?nlMVqziFUmiz8WwfaEKGyk+h);?N>#tzUEFIlb!WF1q{aHL zVYUq+3dej#QY;#tu-}XjIu=;%oWS-==xwjbjyZ_CVmtV(|M)LX+hhOeA)^=txz`)w;sE zsS`(S2fh{KF40)5K{6g!SHT`DF6fg}HS1|qbz?8cJ&bI^1Luy53n@1*tK`6} z@G!-P`BpStkF61Z(Tk4beEsi+({HFxF26pyEU=wfG8e(fVS#B~7P?Zd^B`gGd*gDL z=M(QnRkp8OwZ@$TG`xk?AUd5O%w?>yn%Cu+JGAPOAQ)jC{@D|B*~ttpx^M4)sGv7c zxfUozvs$qP*KqEH!>F8G(4GgDOdUhZ+$qSL$GU#{>YpH$eNVcEz-pu+G8|S>TnH`Q zD7)1w!x@un6L{DO&DbOD=6(i4vskf+*5qqeKR7H_5IxoRs(2Ms$urLMpPhVgum?7s zl3rI+5dc41;J8o~($8-e->&u<0sJ;S+XWbTw4R20&h#QQH9o(wz!C^kUYe9-0>Ng!4&UzY2~tWGv=y!>!grDjY8+g8lV(F9Y229E+Z4+&iFi z^z-QWV=Zf5wI_$q2-!#D7qV@b6KJFL5KK9nd$I zo2yqwfU7Q9iOm{qm>Zu9X~7P3isRw+)q*@v8d{!8hRO$x&v5r+e&HY(Zmk7EABF3q zYb#(+epld-Tr*%bcmX7)z`h%<4-$I@)YNMu1h(88qWvzxdiOQeRVx+!bjbX^`a+j{ z7nRTV=>{JPfyxI0X9;uOnr+Sf#=5ZLss!(Zc;g4llk!@4)fQQFf7Gf1U#CV6nQ@vG@eG8xL&?M1Cu_;-mgkBl`I7bR{nw5)%CF5%zwYVHDljDf0*& zWe{tva(#qdU;DPDmj3e!Ufthf_=|IuyydGy$gO!v*_W!wcL!^d%SdT&&C7ZycQrXL zyQz}Se5f9E?kb%-=F>GN1)FL!a<@q8n5&w0ZEXHqm-Vj-_VXvXw5T6~4^9%tejn$qCFQrX<|qA4`wa~@*1m3~`pxUH9UJ}B`tFC1TJ5MA@k;Jv zgEM`;(blP8^nc0Dt$gVpZ%>Ykjc^v$S6rYQYNn2a>|reeecTlte!)6}a@u%Y)h&HU zN9%U?{qoyC$2SI8WeKNcvRWM#X$)L*o!rfu$LaYdXekS;? z5ETPg44c1{%Id*<_B;XHuJmHs2Y%SJfDy#ukfY<=cAO^Byd5in8h*H3XkO*4N$zua zU7?2lft7Jp$yyc_3SU#*bkPbns9-v6FK>v0CEwfqw)WQw_6x)WgO@I8E;kd=5Jx#5 z*mIO>QTs53y>15bcYlY7W!p%RKuOfOud095(x*GY4H~?;YPPgq^|pE~;@70*L7V#&0|b6g;kHmnHPh1DWz_8Bg8e2SxAT8AK3)J7d|O z=1eLnldx*7^+OOWRd>P;^zznND#5B9rjuD%_`3uy$QS3SJyJ?F#!VQ5Q8sDL@4<{uDUs1~? z8d!7sDxQcrpIxg9A*jE?1a!mH`X7q1Cm0UNYDIHH(E1#S0d0k*-@vpAgcQQ3!k$9U zOvlKO#kjC|=wQ9jSB-$S7UrHqr@_ZDF4pO+JCCCTTG+}D)|eIaypTG>SXCsoTHA2n zjG7?20@%bH;{<+tC#ME!MF&*^iQ2T}1ijYMgZlm8Lz64it)&FkRa;l+^pD)s_jn`U z@taed^}U1=tHE^+7~s`#AYTf6@7mzqjBWR{+44cUtaKguBNWgKoCa6?x1wW~z@-~c zi9D!%K-4C~&kZv+DFCgln`$wLXH-*9IIEfayW^|E;Ms6ZF#J5I4(^gH@E>?%PXIMn z+fmaCCi_Td5Am{xJQf;#i|;3T3}s&FS>ker0R?GPn#9uX6oViF7>&=NPMQvi2Q)cJ zTu0Wm_giI|F6cj)HYUeaOU>0Q3Dqogl{=X*wVHkl4-@;rs%06RN>cKc{I1vTgoV#PKO zA|%VVx_RRuV9XsPJkuM%XqJA!Oh))H_U$NO>oy*%ZPV?mA>Y7HND!(1BoZLnTeMih z$(2Ly-nTe|>(Op~gs-puF0giM5@LqH_&Vm?=k#BPZk}^Vne0;k=T+ha>rpo=N~2+0 z2bD=l!0JvGJGdRzV8ZM`?6DXA+H=wcQuqmG7z8n{kpzg{1>I1l7&Z(0h5Q-wxXr9! zuL5)Jo7jj4(wOguj>#G)-nZVkJxA2)VPog99N&`7g1|pgoBd| zn-_~VPi0aF-}Ph)#n&Dz!%^!lv8pJI+~4Li_R1j5U$7z$!BF zw+olaL_!9k!EUx@41H-^*tS`s=O_s}H-;CpzCs-@NaVud}ACm2#7-k3n2`=z>FBUpoT9!9!_Gl6;Dr3Z%bmBoq(%%{WyKCOr9N4Bn z)#gU=gLh`5z*YcyXDU$3qcfqv=oo%=Tx>a1=guxiWLQ zA6orlqse%|sMb^Gjn(t-#%#98KP2GeY+D8CA(|`4DbLXkflKiV8Me8n6KzMQXq?qA z(n-EZ;%b-dd-a@zQ^g`@-L=owvU3X(?jS1%@mN1VAvU%;?$U45h_So3XWYKG%6IhX z+8#zK>FvM!j;**cO^nZrF_T8T()^S&vZ>Ag<|>|nw9A*)QbxTdHT(jZweD`j zQ3WX*KkNsHW|6e;n%cghd!u#%IDI9THjYzG&_RCcs&3Ouzt+2xuwY~*=IJZ>JLGYK zOMHRhzc%8rucpI8O_jv<`t$_K+*v+@9Rt4>dmuqR(&ZiKh3nqM20i)F^~SW)H}5LU z`KOoT=|`e*lHXeVx`iG8em#7>> zV~Q60ONnGd1|Y8jx2QobTu}D2XH#Z6(@XL}0-pVvI2Q^F`BiX}$-|Xyc~qbmm-ioI z|3R=hs8aT=W_MX5x!efXkSO=4{bAZSA33;sOYY7Vfft||LRC-ik8%7XQF4+0|D#^c z>16_Xd+|ZmAGzEzfBPpm$oc?brRx3^SfhXG?!fLcIK?l}v7G-vbDhU_oozP52Y54>yN z0yytuG)}qzel)0iARC+h@=@}98rrDL=GF}}3yC`ZFZEi+R=X|KpJ?^ozOZb*9HW{u z<|d{sK1%407?U~Fl1m@IjLphbD3^S#0!a{Le*}A~G-ZCG*K>G*bh{#OGAeVbS$IBj z5y3%s_)Be9FwFN0o#RS0i1}U*2BKdLR*?Iqq7Bz_c;NboGs!26^IR&DruEHynen7OU|OgYy6x23frbi?7AW9-R{_m zB(daE8pV9kCyAteAyz}$tIpRIeh-bA#?Et#Ym;N37kHG`ZGG%4fU69yBil%gnuczT zvHRF@e{E)TiIn3C@djlY*BT)mO23%ts_x!Vf`nGj?+DaM#bHcY--w{6-p>$R{61zQ zbJ6l?fBIc6CbtS#Wr46iy}@6wURiBU*cgbZyX9cLggJuG=2sF`7H%`O5%Jr9#@IY2 zPE~}XwCqxawY&9YOI{>UgnL)H6-j-AnHIfaXbRIuJ-ab9>D=N4yx|$)>26vibwyJQ zU1~tFQZt1>r7hu25)rh8PWKx`HI?|v=|N_M%gf%I#y#cV{)6C z6voFkCIK=YYCFGgA-}Yox0Ec4rbH3F+@i%zFm&6siU*@u;r>$Ig6tH%CPw2SdEnwR z4wJ7~q2!DAy#u?G#8V;ouoGT~dz;EH6s)PB%%cWpYqriGfn#NShBLC$FDBKqsR67! zxV2>Em>3BrBqoQK^$ZGNMNMbfrZDn5fT7bNor>pu#x)heXYuXj6sz^7aJ(~@{1Je6 z-5z#oo8eb-D;o+gB-v;XX{tY{P%mDV_t&-~qO#9y9Pe-Ik0tW$INg)lLn5QCS|Z5a zTNYM;ZbU4v@Q-gp$WL5}y7|h_6X~B(tfySS@kQnj@2mQ~MwVE&@AR&wuV$tkW?Ig{ z0O4Aj)HuKpJdbC*t;{*XTUm@vMcwr4yT0`4&{EV-9TBOv#TTgZB8m3zrvit}?)+&q zjjW_`5w4?d0Q^khAG(pQ6cN#{kErAP4c{M-*Qc}gMTmZ9aqw}`MXybU+i4{$f$po! z3$Vq0CVKrfD-i=siIM3y{?{4R>whrdzmUjjQVmEaQ(mf9_l0<>B+6(Cp_i4d1 z9hD?>=5DQ|E3!W^fyT6rA3ar6UPd_ZGSm+}f7!^OVzd<>;Vp+KmC->lF&l=RRq4{*)%00bC(cgfTX!sDOV-_Nc;g z%!skdExhRS;tSJ5+E}V99_M8?*K zg`ASl^)OrW{7w{DiZagMZV*`rcjp{oaBi1GRr*~YePgpz55>EYh9?K*w> zI7LM=Wee1V6^2QxiKrBI|bOUNo2_2M`$fyd2Y}ULF^_KKy;-GhUX&8UN)OKccfYgZLtard)=hGgtTV zX^QW+R0%X>o2nP09_RUrJSEzPB?a9`F>4cub#3zV57jZrqgWb^eH+L+Uh+v!?vbix zD)A5-%P+ArBMA3`ZwqdJW(@|}Y)Z-+ zJ$-2^7&Gr+EP^@^e9WApp>0(K{0JoS!m&|!LAyu#%-(bn$MNukS<;L3bG%#*nN77H zBB&8jN-o)Xt>W_$>WsAH($CFF3;AYVq2;TdbgOPhFG7Fbl0@g&7ycqB1?2MBVc9eQ z++HaU{5PT489^$jgiVURzKS2;x@+;3v7=CEo#E;<7(34~A=u{vYvk~J<9zpmeL{=I(o z5V_N|?IP$)EV16jay-r-&LGLw&85Qaf!ObK@9Hcmej}85Pq89+uNq;$dSac zYo=KK3=t!GhPQ%XByZU?y5o%)Dq;(Zrj+7-C)etR$QwJU_S=AVQbi(L+9Q5D1O1r*?4_HmO| z0Y3%#&m+V^HgD=%olzI`+MVX)a^r3=3gY$V7FeXIBWxe}KF2AH4!=lztY3c`E58#A zL?b^SZY*z$=ilErq3mpD;o^OL|5JRIot1R3cgRD3ZKi(Jn@xl5j9ex+)NFVNosEl^ z;i#exnFUM_lTS`I9)#uIa-_k0$MUnMgc|ZDb#!xce1SQlE&sood_9jh>>;>&R(QKp zBtFPBZ9H^q%15;(**I!H;~SZdL*tJaCO>G8=7u(eFIHa#_K^R9Nt=2KReU4dO}>XVr@p7PIfxKzU#b0 znhjVKOovfR1$Y<5nk7pO4Q}_Ie6-C%e=f)=u(k-lm6=yx?1O&kk(7I#_Bg(4vRAON ljko$Hzvovn?id=YoysFrWQ{xU-!}()0)uqN%rJzMAdMnYA~1lo z(hSlJ4Rih7_uF0T{s-?_>wGx-)ZWk8XRUqqd1Ao^&lu^r=l}o!qqf#l2mn9^`>)bc z{FCVENyPvFT1luS%hXtQ4x~=^Hd4RwzxzIsb2EE&y-`p#4-8=0Cla8*k4x8MNb@ubo}yHeL3L zYi+`1ac2JYSXpFBhK-){^+ntJ4D2;E1;8{7v)Epp7KOjGkqoXZT*5o=>fbilP2EYR zresaMPfzmo`*E7P5HR>dNm^}s?n#%|*D7O4-k{+f-{3Vp`fJaA7xO*+sQ}(lJX@WL zk3IF+>iy)zqbD}Y`})l1?^X9%3k7lKmMhw%OK9?orvj@ zb?cyhG&nx-Z}BiM*MJkF{gnU7Y4Ho%@h=BQ<@rMngTREr!RPt&Kcc}?P3Pl77a5#C zZw@S65ZqJM+r$-=>z%0;*ke{>Jfwv1@^up#%{umjS#4uJ;Eszk0);oKH=@EiWJ&={ zqs(J15Wie3B>6#fbqvv8EByLS?hknbrCgqxIS(j8E@W?X5S7#){Js06H)06TKr*ZK z`BneskDZ(&F7mjGu*hfBO)e@S}Q(HXk4vbh_4 z6tA`NAujs!#`CG@$mz@7cO=GzjpEY&x;sE)tj!tV8%UU`L3s48AM^i9TC z=p}?+Qs%&dLqVA(C$k|2K+cmu){)O7H)iBSLoFu0ecN@TZ-Y84(5rigy8M|i7M!u` zBXJBc0BQ8qRtQaKkix1jlFpM#2IiR^ZqTNinhGgy9mnT9o&tc^z6Fhz85ppI-ZPX- z=8Kpd_bvL~IoZPYr^xBXZQOuw$r%3>SAK;zy0@A=>r+rxs~y0p+#ti;3LLq9Y( zNb4MXF~MRRwa0ZNDFZh#Z~JTCfQMOPgOU=)Nt5FE`BQr;Ss%furl_{rBVPyj)b^K7J(JC7;K$^Bp;OGV)uq(vx9< zFMPjq6LJ)FNrfb@j;Fh?_o)3l*hI9_=^JA<#yzP=shobVV^V!-iQle!B-Z)=0%BA( z`uW@B*90R>7(##Oxa9ThwSH&u07ufNY%N+WDdahxh6zo6nP**UzAsB)Bn)iMbFTf$ z(zW{Y@(M8fB`*Kh9(L5&bIVa z-rcWN@z6G3GT+^Z%e;H<$G1CM4IjN%(_?;WR2a@*yL|f?$QfQ2&dxW`39?AFq0Rt$ zPKy|3z97*=Z1NJ?d-K?$?@61y8)g(d;mbLoO*^23kS z7D>tGnqzKkT)CCb-}SoHBUgQ>y}UP)UNaAq=BRH`VyTrj96;G$&u?1$vidtqD3#fr z88Vw@8`Jd8IYbISRh8S&tw6Qp0I`<5LaQ-){%05wX=fwYkJnnMcaY>ow6HG0-*X}o z3O-b(ObAbn<|1GL(l{Ims)h@$OhdI`DD&-!j-^w!_A43PNe)q@~h_8?$zq(h-Xr+)0uYL*I-#+19%;) zwC@In8U|p7Q-tGxqOw-XRK|tk>pJOt1T{N*vPM%T2j6!QseKLTk0o6W4Ik~9QuaL6 zVHD&CJ&04OSl&=)2M#pRwRvs!+X-j6T*IE$Kcsx_9;BM!{Bgs5ChTvl;T!QCPDmDi zn5LqN@lF4A8>4Dr>0|?;iKzDg$;u;l5vK&)eRRt!f>H-}g5WO*XjDLdbE@^(dz~U7 z8UmS6QxT`l2!P9YyVn0sK`)uSUnK{+k^{f_*)cQ%;={3W-e*ATbL z5*HcHGLEsp1paZmsg#MQPYFD8WP#gt$$qBgvIJBWWr8s) zzAeON<}6weO@`TWrEf52Jo#iMCDS9kkb7!Wt&_>;c(2k)w6(5MKT*;T>t&%=HR~ey z&tXD6P4sXR2$MbGhB7Pqtz~OJvN5x%$s0 z7!$YW4s}Qq<|=OdCzN(78FQ2bJVEeYn=u8%YgyK9es5D>+NQ1Cb|nn(2{&tv@jEy& zQ_cO^UzSKV!B!k3RrXK)hsZHErKJTc*sb<6`xUzt+t6a58UF+&@>Q|dwY9Mqgb2Nr zL9vVz_|>~9>xR>$gSG}6#|Gg<_+w$tI=PL5ei669_CWM4ycHB7qmenvfc0FR3_YBG zN4;-7?h$+{Rw9FovP%dvd2MoOw&gOni!C(ZK_K!oC;gU!#0LhT*bkF4 zyEWR^%P_}JTAR2~7L=9sU*{zq2k%;XT;|{?g*b$y$v)oHB#X8eBpW)NH@@bZ3YpE6 zxt&L-^Us$L5G^r2{2|4~^5Xg*dyN z`9nfMBWR0X-34iI!^R*=Z;mofbTMJ#`{B2t-g40o;x3mV%I6)LUeb_KCLuo-YL?s<3<}{5wVk6fRLYo>7Il*26jN}tNm&sCEn zD~iU*^8U8C=S!^cfc!HN)}>fAoDF$~t^POFiXWjx;}hdCpS7pQG;}`;G}?792K7tX zWKJMTv3fXXa{m{=wSZ7Q`m9OWN*TP>#)s*5#KPTN4P=DLIgC0aN0K>`B`<< zs25_l?dKc&fUZ2)M#3@xg{?Okp?rj8`52C9SSIX7k4I$bbF53{Ib08cJ%v0bMyPV> zp|Iv6qeCl=|`4<)4`& z#}V0Qs>YbOY=DbNCPHxhK@!=rVn-VnnAr)Rk$)zTah?@V=T4~BL}4SZf#-m_RViSr z_ogbVHoM>!KY?bb&=V;Zy3ddD!Q@pe|na4 z{W0sgsZv$DJ;fu851x_~Pb)uF8Y(_)CIyGC9>SS@jJ4q3Dx%+iKy|`G3c&WY4~Gcl zQme*3fp?52^{C*oEv&B^=)Htyz&{w@Qe7j~(u%zLS($twS&6C(&6<$3>zN&%cmky*hhgh-kcRow%r%lX z(brAMBMOwa4T7_FDuO$%GIg*tK&-YEbu!`9b z{5%5*Q8e8RU9X!~{^W&@NQ7)W>ov^GQ#@}i{+PiIcGR83jr4;NL#|Pea!rDOtBWWjUZBlbD!*CY=wJ z8Fj3u$kn6%f^DE6Y2vyk#78ym$yKxip;T@FGYaZ_yKb{k=cfVgm5#^)bBEAWw~=CHjL*h?N(RLF70Qe)Pci_i$wFc0@9F_~b8&ot^an^Q%v(P= zi41^Is{tKgPjw1;lppeZ?|RMu^ler|O@8vjqJC&-9hlO={1@ZiZnAx^P-Gz7T)EUL zZWVHG%_FO?`X<1{GK$C539iAoi*y99Jz_ThA=J#qR-Wa$?@A5eB70QbZ||+)RCN!% z6)W&uLN#m;SCQ&vESZ=B=3ILkGEAaPh$ndEr7igiTiSkuQLjC~5i!TIaNtH)A?o?_C|k!p?*ZYm0vF1U&t<8SRJ=*y=1OWT&a|8C*z!aKcYG8RaJ zEg*E5!HghALDXOIVRJIF-4t})59r7&{Cpii4{$0pLxGPg+f1oJN4C7WOVP1lv>KLs z6noUfslp{W{Kf@6XNOVw9BgZ}BQ1%4-Ho-wAs^fIVOk#GW17&8-}hkxFy)H=M9XhI zBQd1~PJ5iQG2)qv;B0fW73P&KF0MR3r!PJ9Ob@5GmzS22t|u)5b%EzA_tF98=miiJ zd8p91D;%`4SToDzW3>+e00cBre`iPBwlLA>h>^oKo;<8k=;1KR$`W({5W4AL01cS5 z85^O+8XAMc^d1q;+8mqF^+daT%mGjLVU-k)&1OV1>1u!vN?dlF% ze7=?}U#*~TgIHvoYp4mJhVc(J7($6;9S{|Og-+M62zJ=PnF`f#NO=>y?wLBb1>#7D zzexj*433P1lpb`bvsK*azap%tTBCX63H9sG7%4&)C{+XjH;WLLAI0!5ua|IHpzD60 zdl!OzjeBH`RVuM#&ntCQF1=KxN zK#sY6{3)q{8TO(ugWX-n0eTm(S2(c;0F^}or zVR6_*n@f*h6u|8A=U+h}I$x=r%lXrMd9)~i>&LrKm09ZC`;@TO3|6{^deUSB_AWPJ zPQz4ByVG0V>C2S$G+MJK+Sg}4-cK6+;naG8qlZltUz4$zis1pP!{taj-fyg3zzaZn z!A60yr`=Q5AQ(IWB#LdVP<1nA%HFv~fz^43T#o&VeOf$Sr8bl(NZb$%#=oI$IJsE+ z6Y_32L<(zfN=0yc2QfYNF*&GygkgmY*_Q;Ghn-=($~b(^pXNs@vH=JGjr#?<#E=su zKQ0@i@hr#@Eon3G6-h5l?*0uD<-@DOe{(O&XF%eY`R~DX&aBi9L7xTviVzI&DpCaO zB~;^~P=QjnB-z&#>x^Oq3d6;eC%31ia%oXfhBiX3m-jniSujOpmli5P0$i7h@neM$ zp-RkSvtqd@B-`Iz#!DFR2|Q_kkWO925@CFy7#l*{z=Aa_ivxeSPAGXSJj8T^L|9YS zg*{9D^B^V=z^ui536tIk>GghrDG-7C*9Ru52VoSr_$&@8^f5oEh-f(u!nG9^EKlW_ za-`YAvMgW=$uswip2@e>CJ1DqgAp}?>tL5|WBDXWc{K!UOE8}q2!ebTMenO!362p- zYv6>#R#{`@9u5d%^XVopK%rbK+;Ew6*f#({@oMXt!OgM>Gzf{W=25p0*6d_WvD=u1I+pvUi zqqUJeQyu(gq;%B=6mjEc2|}3^pcfT@9V$>lm_vQhw?L88%2PqRYsz_V7b=W(ju&qz zU!8Vs_g#S~;CyG#N|l_z9vfpFX%N}A5u)Fkq;lXU(e2h=H7ot9YsXnhLc));aV!4W zF8+?dAq%bF*6y=MXXeWNIi!{Qy&K%GGnVkO0!py9Em$c0s zL*O73Dt|veAt!m2U$jgzb$qIJ-e+b8z(61oJ5ovIr!pilZE5EXzKoGf`ux-4&KY4! z?m7sb73O~rw55=HVQz}$moKolF6}o$!c==K0WQ+S4=)LO#k0}RuL6G^ za}I`3Rg=mpx01Yx{XW}Cf2r3`ggPdVnMl6Tua}B@>06bvuV{%%5pmLlR*#&(H5waq z$k~S;QRhjq(kG<&Glw&dQ7V#`@kiOq6~jN4%1zLw>=d4h3K+(mR*B}VhhFSPA~G!a zhk1w^+GM^Qg>hput{M$@4ew*< zSC(bxCuCNx+WlH~EUTWO2ezYjUU_(7E8SXi&|*zHimRWrN)1DLjQHs2NDJP|_l>uU z8c7?>Xuh)>$88 zr!X%2V$V<87mT7n9wsBrs7X;MG|czEb%LI( zn8PvcL|Fc)wfRS^$y_4ReY83cD|RvDs@QR5socBJmv-Tj>6e)LnHRNCLW4bu3^Xaq z0~_dzj^uydY1?UCJ+HGmPy9RzUMQ~3KHLJ2WD8me(2Sxs3`^-l)L;DBxzYGg2G;Zt zK`Oq`KP$b;Ys{BTQ+MgU!s|qPgb?^v#6d_Q$6xtoR4|Va?7YsYmIA-@U&G3qNZSws zuyVt=u{`DyBds3-#?I%7%0eRlHKt)JFX-CetGS02SpI{R59w?}T6fit-nDaP6 z>2GP3DP|x~osBN(oc8$K_;2}1Fe!XV2_NA?7YI|sM(G7{3DPr_86|@EH_K_o0}I^2 zug>igu)DN;#G2||a6gw?$d|PmF_Qg8_ihI{TKoz<+-<*sr(k>CZO?|(f&?*v*`5V) zQF|C^WOG4?&p}M!WnGNsAESIiVZEZQc7t7^W{;#`5K}2U(U9rJI98qX^!-xmit552 zK^-^>s>6LKl2|f4Lp1=q3l|$BFP(0GHaZZ)|F#_bOr2yMrk${Hns&5HxtEbt&wds2 z9+~--H-A6gRWP7PtqpVA;08MuD}!lT4S`0Sq5OSPX7zyAcrz{DVagXieJ@U3R&Q6q z*h1j9v7eW#^AG<7eE+ca(&tYKQX`m77e;ZFRD7WDSeyY1VnXXEJ~mQV^nMzM1!J$& zhWehpsSU-h-&bmg8HqmVSfqm+Vq!+v173JNCIvkYiK$)o;0Sq9yC3RtO`27wAp?BL z4x#7W72(ksZiMcM5^K;9iCi56j3rDdsfeRR@EIKkRt=ltQn+I%bk5%fu8yM!L1lr4 zNMBAmJdcEK1@&C-F#Z=VxnX0_F$WzvJ4s!CIX2Qx8<_E89A7Vv(@5&r`Bvq7d6~}g zzp`t0OPOIKMpJ?b$eUR98(1k!E|S@i44*W9D&~iI6h+N35^F9BU7P61h{g}<$7$&S6+fNbeR-Af61!@j3PXV zH(0)0ZMX+MuV%|T;Z4WV&!%mjz0A)SVTV*5a)f~pSc$(?cJC3o_qL45`1-Q}8O=>|B{h(y7F{U43M? zzn#*Ng&L*p%A~uEI>#Tvbn@<8k(pMoyP<}(flze~3_hlL|9e7bqCsQHqQj5ju{c)FC zJsTl9tb)Qp(;z(x3V<*|I=@;?Y-Q-|1NI~-pLt)qNZP`k@%mD;Y?6z3Bcwu z34rOiuExuSv}_{1N*hp}uUxN!Y@p=*k&x@e~DB#ESCWWjusD5Aoj zIeDzb>^_^Mi}s|n z1cGBtKsRmskcDKpb59Cef;$|+&{c~XEz zFFUG?aq1sr$r!y-fAy@Ki=Fpog-#!@g(@0TF&S^D)lE13(0K`Y;cCs04o<7%A1Zw@ z1YQvZ%u@?5g5Fa|-GTprJw@AjZ#bdW0L|1TpbVyXS|C%wBhAKp@rtjFDN(cR9l1kHI}~g` zu-6+vnXhR1Q4Rx;AME0;9;ql*6bk;f;%S$e1AdO+&#G3 zK)A(AL>iJ}i`s#VAn+WN^~NL+#E6w_vO_x<-~s7lHI3aEO}0uI>Tw)bfo9Xv^C%bj zHes(Tx;$occ2F$sT)tm{jYwmqEIYg}?Mbjev5H@Zzf_!y=D$o{pTS;O09PgUE`Zti zRyata=bg2jV1Poc%l3mVl{w$8G$F)af!!wN@xWumda)Oko?A12bn8<9fI;j(E&#~U z>KBj&Hu{-D`5HyNKeyLD1!p`Dr@ZXE%LxIaMHNF{*>z%WUH6RrQ3=$|YamGMi3;wXE_j0@U?vkHO z{H=w$TuOSB&(5RqAXk=uNhXk`^#*MQAt5`-FsPw$@b47IW&ZtUmCV|cG+t@u+#8F( z1SfNSQVR-GBJLU54^${zGm)-TIyar+S3djkWxy{e;A%Ufox8)$Rr07R+@SD=2$LKz zzT9c`&NUuTfccwtmoO@=hna{|vpdCdTp6~xZ)P=n`AMFe=Opz^zla#6%boL(FIIt@ zYh9VpE+6(xiCnY&yoHAqWbo}82@Vl0lV-~(0-dmhq#uxBBIHWrRwC(@?bYeB&2~pw zVzA-G+-jeS187!h21K^!k}?C;jZ6t{DJ2ink?C(vPI)E$4PjE)-jAksBHtdW$1MH( zsks{Hpj<5q70gLoJPX<=hKw${J*c3P&PHI=UTTbEeT-Fm5WE-Ip%4ZlwG?qgL$%Ta z(NIn|=JRU2AcZleC+W$zhJIe_;^qo~e&=jG?`X(t)$r^y9RaG3csAkOvZr21o_Q4n zGbmHR+J>yasV4$}9k9>}=J2@%359L}-9J}-17snJUy$P7R+8Uv zCCSgQl|A346oASQ3$HO|)B=O&cC4#|tzeg~9$Ql5!T>_W@2Z<{CzIxDv~-(0iFZfc zc8+KsLNm_X*@0ovg0!WqL5-u2T(WX29f*Y~+f-0Di?B0L37L_n@hl~!vnfsWRh~Ha z42R8~o^mBWBXQ4j#h}LNI6G0FRAVxfkC54%nk(X38GNXQT6BVRa@^Rs&`U#+=3<~1 zBvtPDHYs-jw_eX))}X>yIa-yae&2?y$u^-Dj?l-E*$xF~KVi88xeH~__41znLMX4D zcy8svS4{_+dSDOmo(@$5Y}T({ccttxbG=z(1_zCA6zg^6&~Z3^&#G^3`Sz=_@ubA~ zTg57q0ObS!S3P4w6E|DQKUQg?bW&Yn?m;I;@@?*R@ag8Po|=s{az(UjXPSRprkjP| z)(0FLhx*n(#Dy7Sq)OHci&*xGpTNfi4m^i|*=F}Q7~^6}E&+{?aN>u?tgdcI#(JHV zh_u%N-;10((kgK~E$@e@_pya3e>GRge;kYhu2VI2!6~~#Zx@^0nD~u_y~R6b-B`Kt zr?4|;+Q3X4x%v&*GznaObEBV6SbZ)l9z|n(-4Z8l!&s(6r4{5j9VJm}im&xjzY&SM z2HS5OOd5Kp$|w|1p5pTbSckjrX(Bg)ZK`V3K@sn)Fws@INHAF~yka1_&p&jfLfwX0 zlr{%MYLNY|wwt9ca2bE60yi;6lrCy5JP!y?tdJtt%9M8Gi4)y*GjezARjqvm);{K0 zfi#*8T915&U$9kM9>7%4DBH>(bhrW?jo2cQs95DeiJ*!8;YvX_74PyZ#ERyTPijM? zPGfmmd|wR&U^a16(-<^ihEqv^gM8<8OS)Bi9>v)8wM!6(@ULnc!P+4&jGFWK{=I)y zd*YaM{e_t)kWK%7?E1allaJ=a!7@+v%BrMujofX;8~5dY^$WFsfPV>Oy8yK zbvYIS(Q&T6a8Q&$_A#4F3>JdU3zhbD^n^*5f4F8!1J>T8S}7Vd7e!dLtiqzM{}!cR zHshO&tANQFP0H`xp-a{@4AonDGyWB|AwndG)u#~2P=BW}R+A%Pud>Z29y^)Tfe`Sj z99JqEAq>Qk%1EQ+woBwaxRa7DaqEZ-Ubgzf(xFX-??J6~Tm4*Pgo)|xJ2i3O&;ehz zW&~~H?VpTVK5RKqCVfHwH&40NwC0{Pn73_TURRsA4wG0z8-L)m9S7K&VS42X?Wvj} zZHZW$x`zD{I*kIAv{*JhK|ezl&7Nj)U&+hs;~UvOZkt+z`+i^FBA17D+iK6~)RD2% zIa`ddJgON_0V;5U-Je-{Fpu%9wbhrhZNTnz-G*VIH@e@e*3K8OdYS7}>ir{8s0s~H znY;l;0OC1~k(TnwLL9h9AGI3UEcc>Y$OX=6lhHo~-ukewDjEy+|iBs@(H>S`jo$bkyl7RJY=t;h*#F&I5MVp!4cd0iR|DIUYDiyMNx%C}>B`cWVNdzVceJA2-CAUlvuHYzea_ z7XrS+y%K0^RMHEFTznKMtZ8z5zDY)nhNev$z18k|5+>-I`o>9jrc&r^e2Zk0j0-_W z9vX-cIFu9tnt%kMrMOk!^f0R7o<6U7wWha^_}hUVp~uQJQJN}6ahj_C%!i;>Y08K~ z<~anu648H$_I;#!?&6XDeX=Y^K9wqbYwewQE)%Bo8I!R8L2ftrOx`HWOP%iN4Horg z9_7ozwb~r@NIWA<&C2T7f+QZpZuVDcyWXPe(`U z=Bqf->h~=(Q&(WJo$^=M*JefM?b*e_JLhI(h8#E@6LMUxTO-Um^jnf`m}J^v-clMO*5uC!GS zI?+4c#K(7i8Bod1dmqDFB;=n7TdD;1iB^^u0;_)KmZt(9ZimE)F zG**4X^NU|mv8j<#0GOJAvgv-aviGSSGBTV>S4H|;pMlZP=a9uc=szAE)8leDhaHk7GxE)8VqzT}E}|cm21oV}c6!|$ReGX^ zU;EeykdGm^3iSLK{x6x+TsL^uYoGrzQtC0x?B%8Z zn=WBlrL4SWAMyM~NV?+;#YVlW@4?1lsGIq=b?E_z*pOZb>`0ycn=;P>*GFa(i!mu; z9qnhG7At$d36s_-4V)qlmEUqrU0*bWCYsjyeVoN!X{hgeY&JT~|o^(`3;Xb?%Iy_akZ)VRM z`1WO(x3c_T*X;WlS1OHF-pxS+^0&j^p1SP&sY7bcI`TC|i_>JpE z7b@!9-Y`FL&bn#eW@Ex$UR-%^F~Ngp?*684eX?gHc+>VGWcfk-*QsA2xPNSDfVPIg K(<(Ka@c#qkU#GkP literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ribenshou_fast_you.png b/app/src/main/res/drawable/ribenshou_fast_you.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3cd8c2a6d8065fbe1fc7f15815c4776d6a54b5 GIT binary patch literal 40914 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ribenshou_fast_zuo.png b/app/src/main/res/drawable/ribenshou_fast_zuo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1a6929280b2fffab7f229c60a08cec474844d0 GIT binary patch literal 44092 zcmXVXWmp?b({&QuU0dAUp~ba8aCf)jP^@^+;x5IdxI4w6xVyHvha$zDH}~^>Ka%T8 z{>;wq?AbGCW+GLUWie1mQ2_t|hP<4#IsgFF{O^N|2>Zu3X`mSZsDhK1meBmV_O~lA z#c0`s{PxuUtjigIK2iWsBh_u7N&?wyGzU;#o=cl948%IFx;paI2WX}RGS+my=NQ&2 zUmr8pZdEIpt_^NI0=7q*3azGwD5B$rW*OOGinWLcH&? zeQ%e=ras=S3lLAC%O!xU&y3OR$u~NM?xwQty6;ZAdR`n&W4MNhE&l&kO>x3MCgR;y z)TA#@Pc9?<6gAk++_Q)ECzxs;@|4lEn5bV9_9P;d0qg)nfR$uEZUo33-Y}s4lQ^{m zUVca&f+gw*ev`H|JN6d|cp~JQ$khtX#a-|d80k(rytRyZf5i@ zgZFO51JRG&XbeA`AR?6gFwIUt6H!80O*v6#e#ntY#5M=xa}pq)c~4FAawLgAKD%2X z_x)RiMGQo6s1YrjV(%4=h@+cVTIACXon#w9uL63ft-wnzsyC=NPvbrT`L)y2^Q{jK ziTuNhU>k2Y>JTx|BZegokHY-sD5__D!dSVF4Dv^LcNsUO>wz98YK#aFpd9g}c{9(U z?=S^#ZXv!_hWAN!j`iyU^)W|B&*yZW< zy1T>D(N7=dokjehW6wB>_Ob~3Tyu| zNMK7cB5ut#eAEB;SWW-TPZJ;Vp5&P zdmiS=u>SxGV|VPpa?JFY4xY(B8Di1757|E6UFX-%n{=*z+W&1bX`ENWW3DfIS5m@T zD1B`gq2L8IC-w<;PVfPW500Y*JmZo)BDO@fXB{z$bit<ɇU@Ue&??OE(R#$UxqRUn)JRMD%Ebjm3u|3+(XG= z{@7E>jh((R`&l5bo0MKO7rpm6Gm&n2`B^AGQ`wOSdUQpAZ_b27tj& zxldT{McGp}Yfqq?foIN(fr6N1|AmGQl~ds6AdTZ;H`dsB!M}sUqro|e>&_W=;yo0| zq0D~gj39a>#qsE>y#l;6q6nn~B?5l$bX*Xnm=jH&!mz{LD7TO?#G2tyClQgv?#iDa zRsirNgxQ(;hVruj_VlDna9MW9XitvjKQGa{ex#|m+DjbO;je_d@Ou8+xwr6>-J1|+ zAJ2?r;s}Ons$20g zH*h9TkE7)p+)yJ~*ojvR&U)2S$k1&v;PwnNDoo=B`yk|UUZ4<&Anh{K7GT8|6fM)y z<#A1nlhDQ%yv4&|qroX`EyK|qQ_<&txz&~0$pn88pB&K42nYu%&-=pz2TO+C@(b2? zo*{f$+*`mIOuZVEcVQq9-!85xhpMXr;ve`1Z*7RyPjGu+bXOK8LtHd$eaEm&ZeNntI22yg1-oFGY_fN0r9{|usW zf|n%LBu=_R0YriXCCz=5(th`!J9h@|-d*{Z)NG7CNGS4mylRH5H&t;?f0iK~H)Vx7 z<*(ut{6XI;v5{Inkye(f?4WquhGGrtpCFf6{G~kmFlxQ_c+MT^%(-)<_4-c(xjSZr zp!_-;+em&L4ULA1{<8-lzkk6m?l`g~Qf5-Oh<<2=nx~J17^9aPq`&Amu`o+QTS0?8 z?-=Z||N78w*EZc}R=FF-zY2YJfy^#u8HpvHaqNG)6fzn5Y>S6;no-4QFD{`k(?99b zfWGqpAgp1xA0#REJ^xkou>N$0E7ooQA5KVh?!X!Pd~tjX!G2CiobHGU+=>p(CP}MX$mAL2*(=Lf{DrX=>rqs7(%Qju8cudLBlO) z@wLMe3O!;SyRi3Ge0bF$GbyiZ73|@Okbq9sY#u=$F5!MAPW}QGEx38;uNBooK=}>Y zjD`OYf!*5hpPMqVym$#WGr_rvd z2fE>p4)G%F5J%A?g4+`1Q2XmvX(G(DTUnhqh!5sB;Tte9>pob-a!Inl4;Z#jh#y)H za3&5+I2j?<%MHJBee{oaJ3jNvr1*B{?Aa;bxc@MJzUtulQb57WMg-&8%mLo#FUu%bq z&~)&<=rfx1Pml>N9e45GK2q7`C?;pZ|C}jKhv7#1 z(8~qj*syw&Rrm=$Tfr(UcM=4VX+yWXa$}`ddQj!ockm)KO$3n+DqSFK*gJE z?o!Q^bIZ9)nQoysH69aM zB(q$cvKAEaVDBydK%OY(bcq%5z<0vzKNtan1v~0*eYLoR+-H0jyA1VjO6EuPb@J0#B%CnVHpfv7#^WU`G?D=`l{xEi5 z^A70YwIs*U;>^8fG@TL~F+ztMUk2?Tsv)pA%A$dz7pw|HHUEB6C*?1nSAH!5VV3*Q zQ?GqI6Sfi}#RO-$6_bOXw&DTNSe}AZw!eQb1i_UIL(K_F^-QW`_it>BN}XDKyQT-8nF7y0G1HAX~aP;10UwES6MiC%P6Zs)(=JrRpo5BLQmoYoh1hHaL4 z0pyDVn`=a>{9ir!?MQS(!}(){SY)7be0nH1T8=&KBs4!VY>JexpFR-|P^{8CHZUgn zSCWra(H)RA!Ci?OVT4$P${zkIjBw%O!osUonZ_0IQ?T?>LQto1s#R@S9GUShbvU9@ zJ}e>#=7={clxaF1bM~}Spd+B(lbeWWc=X52taDM(_+D|Nocc>-Z%&3>bx(ocm3BOaDP-hytm__d; z&sPEIg!qcFL-7tvd=B1%&$vr>YpORgOADn}SwWwbRnX8*JVYI{;f(Ee$*$1OOl}%kuM;!k5N?d`Q5-egAXu zpFSV#MqmN#vXo)SJkrkIV*xZsT)A#uUx~CLGyo%D+hz}LNP?SspaX`!E@X1G5%MO~ z#Gg&Zj~tj#ustCu7TDf6a(C_~VAQIJg}3>B=c>R!Kd(55&-#GE22U5+uRNa1)ak9^ zCe@ELv*d-pLUxKL3KbR)K8?JOAQUMcVjW0l6o~+-k}OE1b}yh)sY%M35P!Cmq4PJ% z`wK`4$UO$mRIHD@#{uO#d_?jTcQLKTwv?u^i*G@o&p>zT#3*`eg>%Stz?N`u?JVOr z$Pp7kKyeo^4y?lcsl~NQ*{yu&5KGcl6avN+^(gk0W z8@oQGYyXdm(~M>&JlMcYILam;SuIf|=u+(UA&XE{pxZ!JyvuqwF4=FRnA86q#^#gz zJ2a4Cs2i4i6A$*aQVG?`->_S-$tUioa+=6OO^Pdr4*kCpP3g?V1It)KP-r#mLY*k!&b(WIt+7JXe+GBmaUQo&RLbK%fbtF^&3y+SK`=68X zcRN|tQ+c@^{#n5_W&9$QlRa*h8p~~dl;Py2Pd=>Bk~(iqh%QKXNEr&w94T@OTcaJ) z)63@tDd^?fRQHO9^Ktr8(L?C!w8Fl3t(3jt{JS>s!hAe&_VIW7a&1Khys0E_?F#g< zUmk2tzHBHR#a{wGR54O;k&VMurh~^boyVm1A<}K%c=99+@u(+aTS5f8jzFwM=c9{Mo!%+1Si3OaP6;MYYF6 z8f1a}v09Cb4;&zD516y(UC!zs3*Iy&y7*B{HEz@;<%X??jK|;sGxEzRk1VQG>d?9M z=X%x2EI#c@hwj3HUzem%ths zU8Yyr!@G$mG^3^w`c59e39qJao!VC4KeaaSM;&U+(m&MXGs10UmY7{L3Om2&`GEFVCp$-i;gwE8ce2>UD$_jiEHH&;uNcFZ-=5$*(XFG~{Q_pPh{CM_!eJ7~x| zCqsJ}j4Gu6u_^{|bdxN(+5obM9c&8N_kmU#(_G7aS9!fRUrb~50=B=%i$}CCw;ljN zA-sbXF1nawx{-oigx4(8KTkr?HoN&KU}x&aTmaceT~L204NIe^E27+gATRqIH}GE{_8| zDT0+wx-}ukRpdgSJqwh3)Ax+|@Z88iED+>KE`Av^wFOXEGd({P8nFUrPwG7>Me2r8 z6|@H~rk@etv!XOnH1`{;sA`krZQsqw zVoxgeH)&ej9Wl3mt!S*!glup58z#rYN9*sayY({nRGj8Ky`5Kjo&|5%m2A^kTlb`y zlQnM#n3I3+;Ij?vFz`WFCyfs$Uy%@=Xv4e)Vz?!wl-HVk!hrD0Q)4Y)whd((Q!1Tfmhd0v)FwH#0r3l~V$ULwO+1V7e5r9! zo?=@&&E9&5Qvo#jqNhK1X-&Q|DF&{_)c$N>(2~2Lg5;^G@yv}wQXA66_N|lYyh?Ku zF;9NLjcQDPV(FC$52)f+$TmE*(NKfKR=SxP$hVFy@)vJh`jR=BNTiOMr%GdX)aG{O zF*P6ESnR{_Wi8h0Z-c*V#_Cim)|rWIxW}4aIc2@BmsvFv-wKJZ5{0^PlY9~z&W&i} z8j2-urm1{du~tpntvV|$iMBTK1hmTkF#*E2tXHgH&HfT$?_^9sW`BtWQPpE9Kz#85 zI(4X5H&r~3zWQtv$wv3$sMdan>-IVoGJ8bRVb0dxW~R!+AMvg$`fDqlQbaMeLKKoT z=Kw8MIRYIKn=ivzniZ96oBw8%T=AsnB9YN0qjUK zLU%_EKY=5l-Y|^f;FSWB3aoIx6+K(Z(I)U!7o<`#>A)kd*?I^yg=?kA{&cgc3d+l# zT~g1V2BPHW(kg7!BQcGu29w1KeAut7ahJ^i5Ea~R=6d(VRhKq*M)I=+i{o&Kl(JYT9g$CmV-28zeo`&7%N)y_W7S%1 zh#Aq=p*x{(m%aj3B{5z7UhHfPRLT@+kr$f+pWIX;{$`lbN%VUq2!_I?UQh_%552_4 zaRlS29_}o4aQOR%K68(T2qCGvOSTaO^T??9WW*Y80Q9X-$Dc)v%!=h-2mUmdPG0{I zPm;tqJiuEiu}sT$!Q`)?YH#zjAYtxQnmyWEHON4 zV5_9!O~=68i)1}6B4LJ`uxcZyV9kq~#MT^NNR?xfD7x;suU9YD-l4;9+XXjOQh(_S z>bakJclWk^KTH86pxsZqQx41?P%)HGG?wm>+-4B(&>WIcnjxgr3d=kBb2#XcGg!B( zsWF>Cs35GJDvNw%bHtTpY$w-4@{Y_-Dri7jhrj5GSmL^kg~C5#u^eLy)wJfoXIm1q zT!20v&EM5G-fNJLj-g65rE(PZBgpb(oYP!?qW6Zz{T>IVKXdn zO?GyeSvsrV2c&(qVS>7-7(Mkye^+WP2tm(r%@k-(>277R%aZ z;Dr*B=tmHgJ>K9v_ca#zsW^vlLuP>TXMEE)b$|Dk<=mlsROgVkC+>Y|sb13!QSPh{ zSd&>ERQ2lTFEfMP_mOF&#{to=)YcB}9t0QPbe_4>TwU@B)|HyolHQmgUQU;!bPyBV z#5Z4oMg8&9r*jiq7x>TQ22N3()rwZBK|w_}IUEQR84dU{z2g1tv+Lk+FaS_e!~R?U z+iqp%20TVVE8vzpsa*;*_wh)G!e{r_8y{@FvFV*&FT)e}$vQ40_)+o9R;fdrE|AL< z#?hmXDA(ms92!l;D&D6=LQ18^+k|{A16ypL$E{vwUE=l?qEBnfvc8l#9w%rtgX|8R ziNe4witX~|M4aB~=#ldE+YV<|B;nT;I}Hca=n_7zrHs7F0ZtOAZgCa{vO6aJ0){yQ zV!5xF_E?e0^bT$vDP3$gX=XP(r71hg0=;4Iwt)-65~SktB=9xd{|zR%b{xxqwQV+p zUTWpKoepi$D3Go#Y;nk6vQ>^%QNt`R|Dq=e-rAmZFDFkeg7H{R5gtOU=Rt&~Aq(9R zebE8#7C&rTJ)!aeERaBuLzaX);59emdA7!H(%O_wL$5fBH;Jo;_ zOP|Lg%p)0-Y+&(bCcfEZRx(R>9#3xy9y~<0I2t7pTVqnYBrUuvq&j!k0ZRS`HZwIj`RV6I?|qw z)irXpaqndtV-`9=)|k4*-TEc9V3Pd%#;GUxiKqIKMb@}D{>bw3wG@JtD-0Iw^3_x= z0C!|mI*Rv6Tt>wa1%==19>w#q*VrJ8E6m>?ba?lhT+E5l?7j1hC{pX2hh(3IJwiAr zktKdN&K1yTItkVDOWW4#x}0Q@}lSF9j}$}PQR(Xw_v}{`gP%d zKiT;`QR@C7Fg|;ybO^62nhO64*YrSE|Hth-Mog3YnTA~tYT(yV4!91{=1oA!FyL7b z5~6Y?YY4bVrvCC)Q){x%wX7FQfWgUQnSr#_q$l2FfAFk3-b4T$GS4gnH!o@muqkW5 z(*j6MG6#K8UooqgrXE-Rm$`vS#AUKQoM>vWkJ7 zEs0!}^llMx4doL^Gffj%sE44Mh9C$@X?HM*-2xK45T3cPKq7LhO~smj$7p#H%Ut|n1*zlj3f z90=fKSrX}ORXRRuoD>{F>+}$4Co3##0VxFlpjsPB?67Uik7FsE2kt+=eosALoQ*Pj zV*GD`V1XBmeq|-HJz%kacz!8kF~oMm-b7e|X^n8#rtXT6WMDG-db|klScKr$lCY78 zY4Iq6-I1)%(M8fG3r49@@3r^G$+vc!WBk17<2Rk#xvRBhon`IJgL?nTnRt&6j&xkH z^{Bs|i&EWVr89bi2MGPU0bKmQ`aB`q!Q$qUK&>LK9n8NoAPp*&I{mLFPQXPY zU|H+B|FI0&o`C1yL&i%z1W|#eKPSrqI%{bM$-xC0%fAXg%%;_&jkw)gtwp+b|7~XA z&-_lSjXH5%^bL~%dp){}H{=)t@cPknjn(h*A0?!RromTeOl43z2qOdtH!iNWOpCSD z$w&Dc9?WB}i=hDM3L$Vz+90pt4;P+;LcJ*@s zbbRCZNxU5BCd;P*Vt&TM%T|kGSa`?kosM}@yo#L}&WR6AXBX`oP(JpnUw)S$(Ua!ki9BzfBZ`eNU` z03OeMv{+qvSlED{N1&a3WvRWGLEduj_J6PQvjVQSG-2RvUIe9L@GAn#&o%=mZQ!5Y z4BY(X>L^|-VpDCML8}nJNPcDu=tG2_20y5%-OjvR1}MG~E#beY>;TZZxq3PoHK?_b zU-UpLlW*#Io%Sl^A;6(|Kq1KGiz4bJ(s|kV121=VA8|Fo>lwuU`y2yW4Aasj$v89a zm`?SM`(#YCIVgVrXr2RpUjhUm^a`9`B%lFAL0eb=KWXWu%V|CM3rD~!__bYQ9SXz7 zs)*38`)90ifKp>EFin+AeDXLmf}P(u*I@?KURNuD77_lbl3xDD7$pEgZ1IEL5q@Q* zDw9Gd6&4P$m89O%(yw#MFT;EfT3nybh06$Q~ajKJ4Wi)R(}h+- z0C{5%+0u69hdZJG+^0D3+~owGv0P2Ru&fxfT_6Eo6%s|-tMk)!i*c4#3NlgwN#_+& z{QYb|D>QqX`N+B&ssv&S4K0YNacw4jWf7MaW=2IXDIS05AJzotjZw{1NM76a!HaVT z`LJfKkhqA1w#`|_>wM0{0mF&NLs`OMxNSh&`nfl?f5xy^QK@^uNs_az-fwiH&xg<8 ztMJ)aYJXPXH|Bc+z%b$V-DP{?gj@hgugPZN(1RHukdhipwBKz#E$D{tE0pxK2k9c3 z+T8cXIT)*+bgXi$1=7}T=PW1k&S1StPYXCXVZq05J||w7;<~sh+3Q3NwF?%2yJQnG zuVAJSdwdM*@$Dk1F!X}>T%X;TtVP)9ko7U7K z&Y*X{I0HKEInG5%`K!Y5w5{Bm1sZPGQjRM|O3pB}vlnKE<)<}~erpdF1<7!E+*oZ? z(7k-?^kLxB!g<)r5IFNagh_(xe^;hcAR4(P+iG~W$p|LK$HFd4rJsciRk#hm>tw1( zR4#dl<|D3Ta%6q7H$s-dCD<(#bN|XOh#C`pA@}MJ2t?~m2E1;f7g7);-W=Ww-U9E_ z&}#xodSd~vsS(e+UC(z+`96EEsfYllZtpe{J8hdZNB~@!XY!P|TE+nJJ6AZpR6%V* z2KuEGrOMFCaY6v99f2*fFPBo>dD&B7&O^De0L15HeZFUQ*7M$WP)u!>hpAbGeg^Wm zu?0WM78M)-SB^R7NBwmfcD+s=9IvcP=m$xl*VMv8v4xZm>j0-o%E!`Wa8!=Qr1Qkq zV?xApN7rks;6EzuL9DHR!!r(sgewY_fD!3;R%>PiEaeCuG)u}pSP)?mxA+(j*Vi6)0N*Jj$z*+YEs1qaU=D4}2ir%zYpj=T?4U12`&oe` zU+W#<=hU}?`q3G?+V7d!u=M6GvtX3CBcVEg_(MbIoP)Lw2E9iQB_}!oV7+Lhf_3N< zWT;%pd?KH@yu?m1S#z+eT|g^n1M~8vHBjM4Sl6)dRMPh{10TRmG;RmdSL z{{3`5DFf=?+#VX$)O}LfZ57q}2C-q8KurF(@yqZD_s`8<4)MyuvGq^l1afl~-l~&X zI)egGJ`5lwZ(<|g(yTm&Cbm7pPzAe&R$)zApQe_H23gUY5Sa!+A{z4jti69$h4DC% z*VFk0CG+c;a<3-5iK1zHL6-BHoiy%QNRW%@Da*8}ojl>bIkH5hyP=FqV?a#P#P0bf zg?~&Aj2FK=B9~bF&HUg|>Ry`ge%cTLtBRW3@ULv?yN#o)l7F8Ku$ya-L@cmBFLD=+ zN@Uved6rL<#5K{%!joy4V-EnzzCn_fYo-2*syPUK0n@YoeDV5vp&vkAt0zv!bQ*T! zg}buU_DPzY=uor(AB$1FPr1uZ`N0jY0xnxTQdKx#~NW2ra9xbc6vST(so-Q z@kR4tQ#7-;6rsRZ6T_u$AXf~CE5xa(4x6JY3C7o)%s&Hq1u0gRHZtj7emuN9{YVd! zAs7C6)MfJTKZVKDbv2JP$USDA^gQ8gWv9X9V@I&mx9$0WM$I$3&l{N@o19jzOAnNY zh(@1tLIFq>ZpOt~)ri4Ynm4Fl2Y6|v%s6M$LVG{(t;r(j{?7fpE#%~Vemz{fSbCNz z{b+FBeSMmE$@1H7QCfdSlr@FnTR=%Lv0^HzxoNSZt++&!m05`q5*Rs-z2j4HX1UVx z%P(3-%AAZWT0Q&(qry*|WELC)-*m~^0*m_+t^Q;)RQl*?>D5y|kxG2`c%$PFZV##? z_7_r1|NG{X!|Z4dwfnEfBRrr2kzL}NkCMS4By9#I@U}qU?5!V1wKdXV@UF+vKtKuY z<`s@oWkT@rDxjnSDipoVJ=@*BB#&H0*hwts>~Iiy8!*+b zq}iGDk*S1{PlM84ak}~|Wi10q#xb#PN;$cSR3m8X05jJ0gH|!dB|QMeEZ~*G!y+NG zK6y>cqezL_gOAl(Ds}utGr0*IM|_&qg2dsy^||%pN9o3w(+`nG8hi^pi`R!Mp^HFgqvpCNunq^XDeJy?;p&s;wTQUjJuY) zBN1&+v;WGg)P8q*P4ut!vl@Ai7kf$#DCtwOiG%RaTIwojBl$I=`o z?FyQ8=v&4x{Gl!oSWt~`zCK|l=1A=*oJrd%_?5HxVVJPdG!TBC>-KAQyGA=6AdZdw zN$Oj=UrhAtj=rrXAGt1Ijj+o8d;p0#)IFCf$ZnY~*;B`G-3OqaM`-b>-ctE=kXEkg zN&08VlvvNxk#FfHOvd@IuZ!r{U!oQy4ZUy2!;B70V*}caE`gkRn>PnDkZ5myF>U}E z2;h_FUb5QXG>XBfyi7Zka&X529?Co>wz$ssf%cbkoxDWFyUtSRzW01fE{dx5_BkJ1 ztZKp|l5!!@qydZddxNRP!^*)M{H!4LqOjv(fJ5F?*2^z4hKFA`s=&^W1qHK5So@R% zTnRlj1zwnnXmmLW!aSilD7sLyHf>2by_wFzPyv3EL{4xsKKa0dPKK1v^1ncp?RzD* zaCi(?I*+s%PV2g3dF@1(@Yty~OViB|_y=sC@jMc@ILW>u?AW4>k|Od^Wi!-DUde-$ zLJBV`?vFf;v0+VHsPiTP!{{+~>DQrxc{s=}DN0ym&>57ZEq; zBcC|CL%N7+9V2#&$ahb&_rVM~&c_;EO{{bFbJSgM(dEE>=CAMdhK}cHzQ=J5wIsgN zf)z)%u{a(=kcj;Ag65NKTz-S7_yT>md&J9XnuQCY0DO}j(VJ3>f1HTNG8YM^PyaN5 z8!+3aWWKnn@qr0X9Y0^$ooWR-;1gBo`tcm8z-qG8h|RnRskS{TfN@nVKs%-~aWH!m zt$(#GPx-#9x+%ry*}TAps|^O*g;kjt!FjHs6|)pBt!$&9$~kE*raV4}FNmMXfi4J| z67iU2%#;J{(q;-DC>9gbHhMID)MTyn)8wOp%A$1C=`D&c^2>wwHM_8eWD%q?m28u@ zn zBNzu+aW7r_ma+(870t-26S1yRz|G3j%Q&pI+v@us0gLfox;!f_PSm{nzM)&XDRu&) zaF`Q1qxTS)`_ZXNMczkD1HfW4?{mmCNnsIFn)k|3g33yjI)hpU(wJFfJ6UTq@2(9= z#+EyzVJVUS)WQp2>?4OSEtRGb_C2Q@-!C{AsihnJvuS#mU%m24e z#F5Uzg&wICR}`V(FDgeSHWmd|F!YG$!=dmMG^wJZbF}J5-dqB0JoqM8E4y-Q7^RGB z=%=9K%}Tvh;Mt!j6aCB}yZ(0~IdX{_dWUe82%CB`-?j+QsXY7o`hZ6Z&GOa#1G+|t zOtVXJwc*pKdy%K?46t&3d|>cR4bsB!Th$8}O`H=($l zxkL4>y_j`V%Gj0E_0TyTqu2AWL1qer!!mXIPfHO$;@|Y1EILS4oqgY~wPyk>4LreZ zItb|i1Ya6`$Jnu^5<*o8Mr}W3!Jx|T=qhvJ>O-_BjYD5t{i-*WVOMgvwU^k!@P#p; zqWH=r^i8AYZnbcnbaCzh2@q}Mk|{fgR1Gy$xWR6sm9|X}?R5T)R`4?7c%HZMpRz?( zNnUhA3kFBO<`zepgR%y`g_9T~w=hU91{_1e5`o1xG z*Lsd?=xd8EG;+BJXVL9Y`?)V9+L(|KrD&?hb$xzr#0vlszB0+wOpIeMz8xLbH3y(K zF^ZJY2j3imKDN^3f@)yOUYV2!gy?OXu8)Wn8%T= zBdSASmeWwKB9fQ(+fP18BSLk|u@_WTU}JA< z$At*2=$232i)TU$gZo~bU>n5@4rUEY%r(ygfukRp#8WRD{xj=S6L5EEsSf?GwQ7*_ zMeOq*pU#x$n6eG5IoVzX<(ntR;-XSY@s$eNnd0`e{94_I9s8&j1f%t(F;0UDq^~_Y z)8q!^`)V){d@ub^J(etUQ7c~%LK@)T;2LdLmDxU(tXb$f=K&EcC$mylESHcSw_eaJ zPvysvlR8phdJboEmD%43^4S*a_^&at#j8KC*8!X2{aHg{jO=DgBx~2ZT+fk?JnZtYf+LN@~ z%RZAehCZ)|t4Ir3jxU+}qeRKR50n__?(T?lPSnK&N>G2f5k^6{R$>%$i6@1PfaD6L zJ(6xYoIMY(JVXN^9{64r4cHp!ij{wsrB-uEkB?YU&B>J}=MxIq?I)-Rk8LkU9TDEb z&;3VzOIl6d(6#Q}exHWJI>9tPPInT4Sr-+z0G6k=NMFCPm$^&yK~MqhMFNu^8lGu6 z_H$#01>2)crtbe)t_3NG08J5CKDd7!9fnn_v{jVmHLL9N4qlS~`RbEu5x&$HQ%cL! zUf>Mu9VWgc$m|REv0;>>poWTh8Nor>yuK}yK8&&b)80#p^0RIsLd8~Mu^C6sBn{Sh zlp7w2av>o3{=R6S6jA$kurh5mr{2{e-J(+B`j7t@YfLS9SsGh~uF>EF1CdCkzoXO@ zS~5aD0`{{aIBaX1+0zL8Vl)J>w)yx&y-87$dd3`ZpK)sa66?4BpJC&4h|llyFOuPT zt7opEf6#(#Usb-OL>U8X3W*r|JE*r5_Vb5im{=*kc7Y+eU99U4zw$>(3I^ho_voBrxneg z3Xw$kG}85Z2cv)b&uxc+vsM>9kk8NR5fLt}Rk&?rH|p!s*hc9d{bGeUrLDOn#;7pW zJLaN?2+W*H+oWeDjfx(CDH&1XNy)eL=RTQxyj^>5*dj1gWxlw(5x`iYkV*Rj?x?y7 z-7yP>`k-*tZuasDf-L=VIqs~uQt(@ojxq>)x?&{FUISeh(_!5R$GyQ@r9J-KQ0n-If5Hf?HQd;={J!YiA~e!T1{QXg} z#wM!pHlWPB>B5}s0!RQs=l=}GT;-c1jSROf>@3?Xw zmh|}Uvk^#(yOwthhX<%p!2za3emal-HQ#chWHh4daSDR6s9ZiEJ_I?E^J{%WirI;N zkPl?SrDH~nEn}bgX!7T?pbkU1w2^OnyVBXy)7*B5=6~FN=;sj4d66LO7T4C4FjY*v z?@H`OWx6RvEXN1A=eKDWe^CFpX|F*eu7Fx#o?A$bWtv5>0JEZ#yLSak;r)Nr_Jo-> zTD8|+0wMy~s%E$rmFEK(*AfCjlybxTAO9Uz7XwzBy`SADVF)Exg` z^VXA!aTk4b1F!fH%4+Wc>4n=Kzl$D;!oG$!dd#rFbdYD3sreLkRff??gUS{Ybe;@= zu6Uxn2N6+!0crrrc(47?@&Sy3#Jf@linxDmiE1yP6WeW(A)_j@*R1NqLtIu|i>r~@ zklJ@h+rIVBm{2F#r2)15TzvSk?V+QP?xO{`8Erns09RhL`CXX& z;ufC(+{qG9YOOLf=d!2NgNlo3amiOvq{U6a)-AU3?T=&xxGAf{)LvOnL0H5DrXU2?JFA|C44@qPX&l46f)-(r z`8O!W?XbpHmh$F~s*qfGSH0j+u{*gvc5tWpdjLKDn;p6+VH+*qG9#u;0yMerhUdI| zmw67$(FP3IsZ;S@VH|5zP`nH_TatG9S(22B#>}QU$8dQ96%Zgha;Zscd?qX*vvY_R zfE_zeOzGu`i`dou zglB|A+M=gB|7*?xMhUa+K+_NV9CwgApnY$P3<5q$SUHaEQieTWy{oB~q$04%(ZA%X zldQ1cGASS5A~~X827=5@Z3u!i6);>mlQM-~M|l?aJxWoL(V1;p;5B!S*v|6;hIKGh z>CEjtnQ`gXq_Az-R5)pwo&39g{FLYNROkN=6R)bTMrjKixg1LYN!hGJGGb@nU^Kyq z6sE~}TCF~H1`DpYVMfx@<8ewV`nmk-{qRR3tP1~2BW*yP&zc;^fE0G*H1d2do4Cm1 z+0Bnc;cg|REj6{9qDX5`)LHFB_tHTC-JENQ(5b4e+@RIMMy9p$fY>wbI~WP_G|B#o z0b#x6z|$;GYd;$=vOKiYE`!uaS;`<$X13%E=9{XTi5Ihtui;C=A4rI{FSgNmKOc20 z$BW*fHz%F{CRGHAiz3ZQHIadf$4ceRN(H}1p|;P=@c?apn>)StVzONvN~O1msgIt2 z6)F}=8+?Vazd!AJqwvV(yLs7%#0#?;?F;E@!z)yLlMA|1IbO99kDlP(%>Vw{L%!t zLAz^Wh-uij48rq{z~+!H`4czTG4t_TSseS@T#ajWG?ix6vx~Ku>--*lb35vL!A@RM z*?6uYgeNW2uAE*}uI2i#%`+V;D>w$nRtt=7sW>!WSRIi>4HNaGpq|8Di-4QkJ0oH9 zUI9mMu3%YwRNN%~j03&jL8pYFY#mK&1A{lJwhS>6V+<-8QG#{ItV_{-6yzAHFjKYl z3lOZ>S!M=}Sn1-KM=1XtgZGX1+F~5rKE)mXy%f;Y?^RbM*4%R(;u31 zI(7~g2!M8(F>~h|g6qQ{Etc&Hx09MpXTFC$hZw1iyfUOp`at8Fv|Ci4i-e3wbMA*> zJ~b>@jKBVABM5vQUC0I{l$3tKmwmg=6OIG>@WI>ZOKfu7g-F6{O0e{{RnI1Fx)mpD z=)ji^2MBd$4`sCmqzJRp2Zf6F4zy!fY4xdUDJV@ceqL<3&d8}b9Q1v1ab*(%=NKKc zb;I^AMr24`O!(w}dM*Hx)7*uZ%HCxAo=?e8FcNohmIT+rV^C^9JhP}?Q?!#Vh+F7mRRYJL*aJt(YKij54j$g44s${*G(q!3n;xFQ&xVEV^5C(&2HNSkE zx=lRW(?2V|A!1)%W4M&KK%B>Slj)*p&>g7BjWmIKsLXNo3v2k!5!P%P=+{@w-+yz~ zfCnNX;{HhG_}!ig(nJr16}P#i{Sl~=WIsOt1{xbRYzJ$z@jA0Q{8rpwrb3H0)CcD& zGH}-LlUT%bW#8sW=KeFuSvShmND?RtXT2_MZ-MK?bM&9REFinR;+B3Lu%vUn&a=($Ir^m6|o}cRFvhR`?LV-4N~fA@$Ndh ze09vO!(4^hPACKnHG$#KO<}MKCfS2Ry9sX@wxiTvNz1{V5fg2xQm*;1J{7}XZFW|? z5-@+bTwrtVQ~ysSwo}o#vzo`BkT09@aH&t8nH4HYod@4!c4s%nx_7 zATCe{%FFK5Iz3Rdl}(g8qD9%t&7!t&r}=NB_D=K zD;6=i#q1U&jcmgwrpr-QZU0BoRYyhDe%%?6?(RlfN^p!Kk8T`uTu~e2n?@u-v{6_gGF#$D8u#GGd z_1!zJ_g}bQ=S&&!0mox&!3-$y4`Js^fGU^wWqQXaM-aC#Ubr>&GajA$EMCr&Q zvj%(jM9YSuJQ!wA2hC@FKJlv`eu4fz%OZ}H;x8MszIl2N=Hx2a$ore1e$|78(lFg~^q0>r&swV1J`dn#+*XY* z;^dd#fQqMIoPIKUh6{2qjeeD&8=r?nYL<)nj9_~|ttmC6qM~yC!3SH!oavxBl%C4) zh4r?UUFd7N`H)~nv)xSDV>}^vhMGe<)W#K-$Q8_w?)OI?2HjrIyXWc8wy`XEq+wcW zTx7gI3de-t>{E3sXYLps6Oim<<3arXP{(JCE|yF%?M)gWs|nz4-A!-Rkiaj_(VZd|YVWk@m=Fu)=q`las6C zc`tMlTsY^P^-jM&)@OFUsPtp52@JNtxWzKyH^KiD`RdPWzX@Qn*Tl4-w;GXLXWv!J z=ZiM(r(5F>X6M(w=tNx~2s!ZQy(tCk{1eTqc$1<-39YkoVE;hlz2ME7u1?f%)zvu< zP4LRS4fY%H#aaYHN)&oW8ly#W=yQQn{j1E%x?@Oc`M|xRyt7Om3u3UJGXCc>9Z?v3 zLDLv=MTWk;CQ)<`#d(zRS&jgg5j4Np|3xHcFuwTWzkStGYehIX9P&v>NUZAn_GkHc zQcYD=)jrNbvEv>478X!*b(EBw4p_Z7^1OWh@X;MQrN=P1*TjHsp&>0b6!m0tCTzu? z!s*NR;ptP9C{F>#tW)uVy-6nhYds2wjvI4={dU2><9P?jghGSUt4_ZQz=(iXTj&jK zP5+P(5BpE!ri0kc8NMyUBNk=v?Id=5I-ARD1V<5q3VWDz^EqKup&ln&qg#x>N~Sn* zKx%Xw^@C0kTZ#l-uKvsH6V&C{77$-c|E~Xku)l}( zI7Ka`nggs&_yWdPp3VPzz8g{byh0J?LOt^@C6Qz2dJaAeVM3l$#5-lJId>v~{bzZO zzG-M9{qEh6+Cq}TflPnk1MSAi>o+Qp85Jt)l=1%vAU9DJ56xnUUt*bQDHou zwc~wtKF-dyb?`tGYLvtU*R{ys&@e>A7n$M7+u${nW{Afqoc&;xTpf(B($&(icn9xz zi0JIFp11?dJ}c#1;b!lEN0w>5Yf))w-`cO@mpdv!@A2!$1F7d(5EMB&ft-66k^8qN zU?&RYma4Bh!ARUrUBKMkk$Mokdm#Da!P)%x{r*{JhkHT$=^2Nifx)q1-KI{vyu3Zv zASNls8+z^Jwn+o;T5h$JGR^zYTs?C1BS~fr#8%NL>*$3}5B^1gXjr?1plXZ$C2?x@ zWYw19{4&W;)7Iy`^oH}L>`F{oC5L+elz-rRk{{` zS=!++b;>};10qm72R@KV`^@<_1bDv3#ro9F<9-yaQq_xsofOWpyb2oBSqwobLyccT7P$-kH%##?yZA{+q-v2Kyx2ED z4|VdHkx^DI2LTfd_;eEHTVLG_oMfpo7ro87B*MT_(s?B!H*K(w-R6g%`vjkLIK*GH zq7zSzSqCwAn73&Zq6_O_pXnbLH>$1t6yY=v6uDW17btO{A%pcWl?l9vx;Un^05akozbvaAuyVwX={)QSNxq5VAniuOM zhtr-<$~(ba-QQ;|9DE*=Y{WwWy+vx7tHMI7M<{jL&VMa`bmL8A7Qr=aJ^ zQVFMK9{rIB-ZaDobBYQ#bX|17M3=ZY*b}{a{fBu;9f7)B8t}2UcfX4N?*(wP)YpP6bQdo zgGH_e+CJ@K+lkJD^n6(K`fv8Jxj-r3rg*59{uDBTAiCrz#Y35k)}>%0Xn~fbw4iFc zGmH-QPCrHU3IbNgbH2I3W0Zv%x%+Xu5_lJw#nH6xj-H-1=o=V#GCC@RTkc^r{HJ?U zYdb}4PpL`wf$4Ceej+*jT}4eMB;{ak(w2Gi*BL!pSS}2|Z1@+=ZF*W#vQFyiP}s&!YtSq?IS8r!7m!=E86n9vt(#B8jb zWN7iIrWujp;*WfPO=JF<-8xV^Rh>z7+wvsV+#5=y_%Vk|ob1-#Y2S_WSzpr*t9QZE znf6;)x2ni$iRNr%J*I1nb%CECd}5^?+Im7{5dt#)QJ?M;LrL>q&d0UguC2k+ufst)zEi|115tuc-_y;!* zRMOkM{csv)<4#~5_C&|*>8ZW;JUgckchB2l8Ulkx8sk1u=p#8baukX@<*8B6UT>8q z4{muRP*u-5qqkZUQ}K$fYdU36xj8)0aeds4Y5N}rTjHTI(X_BsTEwVk>o!qqk{D^7 zD4K3EP~yQOa`>n#Up#n0>(9(Sd2ugsU@B+!nFXYd8~g6+qtv#;XjX?^DlS*%_0CEp zdN7(Y4J`_-k+}tIz@H2H#K3$u8}eL0=f-3g@mI;SHK|<`Rfhle>)T%{{**<0UxLFJ zE|wJ$Ozk)oIkYo6QoX#aficTD&Bai;>L2m>Coy8QIj;;H&n)=KCYk>EoD7&?`cHV)VZ?zg^Vo$Q}aRqOKY~E=kXb`z|_Vs)93ETZ4Tv zCt+DVg;-O7tIhMBOjZ}WezwAr-oZk`q3@-Zp) zw}dmUtvxCTkjcf>Pmi$oFeV*`_UG_wuVo!P-*+-<(8mEzsd`wEiu#-S`?Db8xvJs| z)Z#Wr#3+DfTxh=Rq4gWXS^}cr`o&lGX?FSLNi*gtF zXx)5u%k@T@uB9C)gs$D{t4SrQ0Mg^Zc&*Z+U*bRPn<|+Xr>MEwt>I>|I&2@s7Ze16 zX6#Y|7cr1&R1Axp4bU~%>NLAQ|CldG{c0y}e<5YiG)WDeXZ>#}9=!AL1a@BYSpMd5 z2?b*n!%XyD-zO3erdTYP3|!mq%CybN%AT$MG{cFntXQCG54j z5Axg?p#fVwMxNOk8XSLrwxkZhTk*MXf4wmh47!ycxVlmc@492M$QkjxUJ7@f5rFo+ z1WUEpb-hr;4Gdi}$jPbx4Iedt6Kh0&UfiaB=X)Tlf+%)|Q?P@4Fzr}rL7cHrCKnu& z4=F1KChfhT>tcvc?@MqZbh`_5E|NF?Py02fGw|Kt=BHb?d;``? z9@Y;}!Y^2qawX%h@3a2^FSl`yuDZD?ZaACx*mP&a6jY)3go$zF8)un6a|ulC#h5Z1 zyzqs7#(UDKCN)yNmI_?s6mst<%`Ic&q3cKZzE)j)*hFYVBfV3&JE-{G;^Em?cI~d8 z=lyDv^yC9pFUe}kvop~W=2~@<&BKsY>g9Fzu*EeG>`(Wbmf)k;pnGf3L*XCmsfp5( zmmCq@M7<=Kmr9^8qTajyfQ#iH;ISH3d*Zrumfl&d4k_#)XH5IGMmfc(WgRM_8Rb zf1E@!v4;K3Aw}|zhJY1699Qo5mWv<0{2pUm=#{VWoheA(j{xV;9CUw_t-x@Bd8vQ@ z78Od>+k0E9_%3w#0d}#~P178k$zDnlAF~0K!J$%)1Gi+U32ZeGLnZqoVUjDoWa^8G%#aDuI$2#JV8IQ^PutNpv@#i)qNYzWb^-WbET5-p?e0{|i zOnZoZBy_4;T(WkiT|u%5yXFzSbCOrP=Nc#)-Ws0pM^Ih_Uo9x$S6LjBhFcpLmQMWM-4|D@!XGCaOx8sU_)3hNP^Xa)gguGYtb9?V0|*sp-^p2))Dk*t5GX z#Tv8vJ^!Isy@KJ%JroL|-=+>pz_R!&VY0B-IhdCPrYFj(h8prY&T26%H$b0FWnmCi zt_Hq%&l{aTc zhYv9`=h;Uu-Av^H(=QogAT_rH+ zQ0nUTlgocK2|8@9xCR>HEXX~4#8LPK^JD1Luj|qx7+v0%`e;Z|o@#`*WP;`G7dZd2 z`nhC+b^i*+u}$o@S&! zfN)BQG}YyB+;fKtzorV90%5zq!j9Cf`1XU0ssELIz3xhu>cV3h?y~fi91b8LV`5^T zhicu8Zp1iK>AJe0vFsw>G9=Xg_1IT24g>cpbJk9e1gQ2g&~VmnZWPrrk7-HgXZ{4T zwQsGFRm>~!FBRptINGcfZ?T`VIQV82B{@+(W|ga)yRBN-Ny0ZzR`L26P@S$zYZEtv z*F3@Eva1*oZs3YfOLVR6ia%Qn8et5IDw1Dg4JA{fDLcd_R_J++?(YQlJ8^5%@=NV& z-E3J&)g$A4@sHANklF4ve(~7AWvWtn^^zFL&$j}ia)xD)7Pbu*H|;AV&V(uMu?1PC z)ydw^3FUqA`+a!KrKj;7H;O(PQM4eAaDq*RVXX9%+-;Mf15J-1eKc+x3!MZ8=+8Cz zd68=bLZ&2C+EM0n#VPt5pI+=}&`6T=RlL_?yO%oCf9PXb^_J@NBDl>0g=!hI3>aGa zr>P@R$)L-c+fEZtGD!&}z}yI3cFml$T?O|RmxBd3cwqKdP-aq(D;}rKeLi&I0AJGmHk;#H09px~MQjO_8s_X^4t z)-`}^Ok+l|Yy0nQJcB-NRS^G-@&WhO?ZQ(#%TNzgZi2llCt$g(heag123Oce zcr0z6OpRAvx(l(!L*>qC7@|{{N8_;&gb-BZN}jkUibDN~H^P`mqG$7}{Hsp`x;Hhx zQ+R9}Xe82_Z8({AvJi1FR> z(O~TFB|>AH_L4R6AUCT3a;ac9oYSAGu6&iZvqnz1iH79aXZm<~%0#JBy^@?9tRGaA zMN#PUzjdDhtTK8xVC^NSuU0C6;`$<;lHh^Q{r1rp4UA51J64VJap&K2&nksj+i{aa z@}(Ov_b^Em;H^h+24}%5#Sr@5N>dkVdE6C+{^L0TN(=DO!{5gy@V;f%UFKJ^iMg03-q^hr0YC7wV{ z1*z5<5r(x=3zBscPc)anIF){a;0gf}%V-O0->pro=XYX-vk@_m(bFmQ32h{bkziVS zLJToB5#Ii5-pSWH@*;(ik%&ekUIo=nNpdG#Q{jcq6HQ@^N8)6JZArN;<&PL`d?!h@ z_kxa;?ndVuo(m{0C%lo%1IzENjQJ?$sIi|Ch>Cc-wrvG|>eIh2gn7`(A5eCS* zk~LaD3bK*>Ddf4Ep2T#YA$LEu@CG?eVs>TN%Sf9v_jptT%Cu6{6QR$s<|CQ+JCl)s zz~s5botfC4<8CGB7a@O|a|bnixGu7wH2)v9%V!lj_<;KhAH@AGy%KU2US3 zCDZO^oV?BuTi7lRqF531vi@h!U;zg_bc3Vyi!w&YE*W3Gtpm7@^?8=bxa87r%1R!6 zUsh^@364jZH@D&&KnC85$rEa5JD7|auODyLg9#rc)qdjsH!W3V+mIFu#Hd_Fu^2@D z)l~j1hZCag?SYJu9*na9ND}bWvdGYLf-bnUoH0MEIvR4ew@$As{_$mO`HOVM`@f27 zr$nGb8bP18xidJ7v&wJc?%u0Iqzl?Q4y*CkYej^x(xOn46sYIdn&la|#^h?H-C`b; z>W(H~_N(U<@}@32fqlI61gp9SN??1w8qKo55m;jgoO+tWjFJ>g6G%Ty>9|ee=DPYz z`Z`)U>S~`?i*J0fRF@tf91G3B_`*A-ES;ihobq0S{%lWa(U9(ZH8;&eKNj=+{G4oE z;`|&e3-66Vc^Lr;mFpTF(d$$Fo{O6gfI|tX%(VTORu%sKLMry}d}0}8B#90NgOd|t zJgz>Xq};Yt(I+Vp_h6RP?xS?=M>T|mzRdA_(3j6lUKl=Hsi{VxJzQdzmynnLsVxp0 zpsSz5|1s%|1ab3@?{&cm97dE5KQ`YuYu;ISdNCUp5%8h`PBQlC;LfR{`N$h>%*PW}C%DzOk%qicSr4=75DbuSjJEZj^ zMg?o>Pp=qHZUuMyi-GL;#mrX)RJxO{FbG&bgj zr-5{6Yo#7?IC17lRy53zC%e^&rRJQ9azfJxm}a7WQBb;&l!q6Vv8oHMT$L7~I2Y+SIUZtmH@91f3=CEq2=L%`sYYrO@ zdivV&xRd&$+3haKT;fsd&jNgABMC`APa2 z2h38Hxsnyre%B4M=LksoEO;uSJSnaZY;srbH#}YNkN2^S)%Vu>PH#B-1?3unJv!Mi zsaG>rl#*hq2TnLMT2~xml$4GPqBLDnL?mX#Pk>SR%>OME(kRkhyijv?CNguPqI3`f zcs>7XomLxpE6e{K9nG$Jw$|?U=R9&Jw-bgBkXmFy=q4Sk_rxtC!NUJ3V_$|ODO!$O z?;h)O-hmb`>9-dhKG&z&5ntwIv+6=iDgZ5CtFlLfEA?e-lJm?P*?r|sFS_HkzQurU zi3(r@D`Mse4>y+MLHloAU3cpKPCM!C5~A-s3B{47LRGWk(?+4Ku5yhUfLQo8Xk;KQ ztnPz;(Y1(GX`bJuPvr2za}4#U5~?i*R3l7GgO-7XUW1ow1Y7jE?O@w>E0c^L8R%ms zza~@BKkY9^>fs0em_5;ClBJI&&FsZ=3Vn3;t)Ft1*?_#^nwK(uENz)3m8$2cMjsg@ zbREgE-jo=X>v+O%!Q7q1EM zo{iNnmn~OB^oYNs2KDYd=7x^ayiFxr+TOlyO5ar;djFO(4}Ac{A1Xb)X9#xp)Xul) z%w-Nv5orgyBcZxu&~E*Iw)nHe#-0~t^y)W`{ru&qzM)n>wbv+@<+MTY3-A5h`Ot?@q;nYIVxyXnUV4GZ#2&tVSzjDd!I&jz|lH~C4aD;3EMQP;JG;-RYump z&0^&hU<81qi1?jA0P=90d1NpxEu?iW4haBQ-}ZbA8_hZw^$!U?p$jSGbltDfB63$- zG;SrUZ;Yr-j((=G2?Z>p6K4(twXP!GbHzK+M^PsD!Wzwg4yt7w0iiJ<=Q+)PbIeSc zKdWKtn5%GAI18xrf+Nk*PsY-z_*w%>zEQN4PvidmixSr^0%PHIBH#hJb;ch~w9q;Z z5dWEHaLVTctuzwAJHWy=PGk#fpuE7v-4d5^HF3wRGrMf6M{VG!BNzYE@kFWr$*{m5 zJFtzPmkBT3-#>#pl#)y7`YpHTMLI;6%Hn*tJ53z}6(LrNo#cIp%e^&-O$aR z*X_2qqU5oD=~o&62kSb(4Xc>tf@G8{21geJ-NhlY4nXjDp7EM%ps_^Hjr1 zB3=?*d7d+8J%zzLpoRgY7^9HW?S9c4z>QDs8Sz2mN$#-O1h@~cXhd%RqMVoGzds%JA0rLbo*1Ctaqr?(0Peck z8eTH25Mxc3;PI~_c$Pc=AOAA{`7B@p>2>5aKX0Dlz9;QlT;&*kyhggx_AHX|h~{$p%bX!#Szu<;5oHpLsJMSWM&3v~Cs zwz1?S@NnKet2xX6aNCoNMRrz#qQ!)-zMCvZY-e!IWXTLuYRkaK^%d z`$;C;(~B)W%NolnB5W0mJ0IkE;vf&2cZ~t7yl@O~-HTcWOq^~`Xkuu48M0TyS9bq| zV`5hQEy8`fx*^kUcE8eACV-zLJ!g{K*?O_XEllSIaAV?ijLdaI$s>J?9R{X1qfy_R zOS9)xp7Ab*oDIE*G5S(uvhru&V?~R7l0kw0E10u%doE|ya*`7D!Qtr-&XE1Aw347&-sV4zVV_9NRbF~@9}j;soIWt6x7U5B zlcJpnwMpW~M5O}J5o=fhzPcc7v{_`UN{EF+T_Ev_ipdLGn(Xe;2mdJI@j> z*e)%N7aS=IVp${nG=#hkL?Hrf)hdPA(q~<;dsyIg*C(v8j?WC*CTbcf+B$`Zi2&5ruy{<#W?vhoC(7* zofFGqDUs8TE^!!BpV@kl1&rt!GbeyJqfB;`A^~Oj)$OUe<^_9A%jwWF{7}l1WoVz2 zh!9~DW9A{h`}s>+Sw&rkMAw_X=aQDUUl#!y6NwvyFg3?0K+^Oxx zvMwvO_vIZV!jivU4Dp;MK_ZF1-nR4x3Ki-1ocQM{l&&{S`2X-9b1V&X)-;74h^FPH ztVpK_HVrgrL?jZ_d5%lEIm;v&ICYOOO&SA^FUdFjb#q*#NXWIsyw_8v{&1bP0Hs>_ zHAVW>hP+CARjeYOubt0I2Un?4|Lgw^(P0~zy0#p2j&dx?IVB*Wk_TH$9J1Q#oPM?Q=Fmv;lE_24oSTkSC_g9m&1+V-Z z-Z=D<;$?4#6v{mzP=k^B)bI^!%QqjL{)uuP*eB-$HL~3;al)azsY_U*sScp`oTU_1 zX5qi;5qIYKZ|tW0QljBGUts%tUgtG{&_s)N#vc9Awfna zJw2Q4$-ItYufCs$>7D_oc+${0-OS(^n|(rHf@Y-paNoVjT+w;H+#Wm4p(H%<6n;D? z0UG=Ix-M8!kOuiySCQO(UNPZe_1_>nNff9l>V-qy%DW(FS6FxyBqP&K?5q5;K5beg zyBhM9j6eX>!pz63-@cZ6>P8zg zzY)9t8QQL=E>wEzlfB1Kk$SqxL7Jg|b`Lg|^ORxqua3GtPj04R^p(Gg5|guY?3oyQ zHHT?aLi76^gAU22XrZT-$00Z2tK&xDa3Tz`^%hDMaH}k~gQCY3! zX&sG3()@>Q4$!D1{kURTghr&q60Ce%+gLL^7IuE#S9ZP4sIn}r5&dnZ=la9Z;Q>87 z6;^rwl)-H}b+w=Z`nUpW|89-(Wh7pBj2douxXwT9{K>Nld;Qmc?+x{qJ6LQNl4y1< z{%xcXgh^X*uDe5SPT8nf@Ef*hcA=N%n71(8P=j$xmsh}yU2BBrLO0L>gt_Jc^i&@`+)0eYHcWsIaEy2OEKBp^A^F z;|2Cxhyb^yd5pSSd_HswWMj&jzsx*#DfQzJF_tk8cx z_@Y6rEv_dCZ`T?C)PC@hf)BJ1?6hl*`CNPP*~Gj zk0S}^OsGpH(*unFl@u1pd(Q@k=EA>f!$-BxnM!)9WzO+xvw45dTZVXClGC<_z9183 zT22)cEe(0XJ{~Te`?i>;+x_d)=XS&$u8aim&?|1K3*sJy5b$VPSr~&udlXEfEV*wT zi&-loOgNPq=$MikHg0+n{=|nr2>LWdze?%$Wa3EU(}&$f@MmouTQHs1A_De5>T&K~~;{K6xnvYbQbf5H}SQ*#DWWf&!JN0Um2%hK6R%qO@K;J z*Bnbn;8fR?dCj8*=o)g$?_ck_0RHF<)U3{{C3wobj24+X{H=;TLmt9d1D{X~;IVW9 z2%p+O_A^?LTC6UX4>@<~>>+m3!$W{L^N=#WcH=0n3_KH;o0>8 zK3-OEtG=%)J3qgW!qEY_D`j1H1I`zPE@A7sot-jJg!Mh%Fx6#~qr9=i5dN|>%WWW?tb|3sKw{bGM=jIL!VW(a0KJ`#yH7td zcH}9-4r#p9P7#<)3{s6ppvfw3b=9;e5#gp(!$;vtZ&6Plc=L38ZN1SdzqfW?%7qZu zg(d)-&D09Aac2>+D(s)Qc;&h-5b)>6cA0z0C#H-`JWbI&&W6H~!Z)R$xJJ~boo4?t z*a!-J$AIhJ5;*aGWC1x7(2skTL*lI@(er7?k8}CZ=Smjw6FWn{gd2BD9GR$5md;+V z!-lc>q@hu3XANM&tW*!KNf4M105V90EyFI!fP&+X2Q1Xo3fUSDL*z9duF*=DEa zVqC0MKPA(Ng8ux)`@_MkvWxe)@^OfWd0y#JhVjy0A}{FEb3Vhs9u|PUS#BV*`r+S?+h8U$)-Vw%0EvrkBYGYNwnZBjRWIVy6kmwY=cqf(C| zuHgfid^{KWHB+9jd)=NT8C^u!6_B)#u6n2C6Fi116zeh=osT%pM+Sb4RsVZ5osXeN zl$auNwg0L&oEel`ebCb+f7H{`!t(QDSjH6qU+g`>%|yPhe!mCkO54T8-S%w)t!^VwLgMbTu&w1AW|`7BCXdTOG8Ay#sKysT4%6 zBbjz&@7on)o12qmNJ~?f3+>JCR9>%7mLUxpYSVw!CA?9O}vNwA5(Yx(ey%#p$c>K0{@c^mfA68)?G!MXvWh;*jtgS;_#Ys;;*FrmJjTw zKvuG&+c#R8GX%1j>+6f}Xwon?IL1%e0e<0}4D z4bknL%9${@eH5(1gdSNTuK;b`pkbVF1@f1)*{Hy{L-q4%z zbCaa0I?oMWcKyV*kql`Asi=1-AQ`H^a$)wyP(d_GR32m^E-Z=Mppp?& z1vlW`K&}>xIMC$HLHlehaddZ>YF`2C1i|xZoi3rO@|iILh8Yn6oPdgn#op^mG~>}t zJ{7?$-HwYyw)AQ;F+fWouKDeU##54dsk|xBBZV7U-dY(bR`}~suidI6w^EBt!)2U4 zJdWqz#v<{D)9>)cXL}Vw9K_5AsmsG?UQTct9Sb(|`pBari0+D{8;r{DfogKnVS6fG z1BNAF2816~og3C4Pw6?loNebOWs_iUN|3?o;}}FXqFA?edCo!@iemkXf;PEZfUn2s z_Pfwz*}GwJ3!5UdF5-l#vM%7@CHC<)J!go`HF6rpP5H6?=F_1)xtxWbZ-F_a0t4s{ zX!VjNxtlRS0cugau8`G2qN(5r$0yOwWnYuG<^sLl$r`p#e<%?=VmRLUHU6!taUf6? z!{uy2lHYHXvw)ua2uCu$Xl3_8Vc{OlA3|v52@OHx%u2G|?tSN>3MztJ++|*C5xf*z z#wZsTaZ(_6wsF!zvoPY)nTb}?0B?O{EZ)1xI!+X0EnJ+fDFB?omVJWOf6YbW>rQYD z-V^~tqj@j;E^W+jG0{e_;)xDNqrk*OzE=N7c?aY@B9Lz^y=>v4YA{biu81qD=-=2q z2S9`uytlhGI{Y+iuYb(kyR2sSld}JN39M4TmhoCb-Dx7u+zCw`_{0}T1OX%Cn(`A6 ztpQS6THRM<84a`IO{oCN_^G_JU9arwqidl%Pa zV$Tn-WO5i*`HlK?lO4&gN9p9q-=FmrC4>b@62I#(Kl~h0+43MA;qDe|sIiSRC2g8; z2YT-@9;YV8E9CIQQt_?GBgG%jU5r302reo}!R~k%mN}bHehHG$sfIDEel(B-z-Wvtu~TW5-zY zQBamK%;w6X$5+tsGRpYxyi>XQl+VEI`HkwmXiyJS0TG8&8Tgi0>cU##bnJYm!&iG@ z@r`ofmBURVMo*{6si`c&;}9bY*<()}$n<2S5=u@%r>d;1@gy2N&=5iBiXWJUay3Xt zf==s?<-dusuI=eE-PR&n`^3WBSv1#*{*&=Azeq4X%?ScY zP}_4Da&k;neL(13@*IzHi8dvegkHI&?pSieK$qY8o8|WzdpfT&PeS3tgAvRvk0~K2 zLtc8J_sroA4%>###FLo0+Nh|uip;+~lR-eOfNiI2Z6pw@^NyaA#aZDORu3H8i`wr3 zfRW9JkocQ$xVC{TLs86y>I<)eVaagC99(ry(gG*`NjgdfwX*#6EQRAbilXlMn9YwA zXxp-Uhh}+=6|_$}iui30{H;1xhC}8lQu@z`#N_*g!uP+*avL2JU?gUhbuV^J)Tba1 zj}5y-CqDz;g8cFKmSgrl5Qtk{I=>QRuI*(}zGK?w(SD$mPNKv3=h{AWus;F&z9S2h56c_7~JnA5=MT( zsNWu#qrjjf-_ma{Q`MFPZ6k>Z5x|me{b^SlXjSj zaMV%X=)LW27+c;6PK0S))B}E-s6BLjwIIKi0~X0wX+SZThblEb`F-)BtZqkBEi61^ z^;yV7XSiTGbz~!-eMJA?l%0heWM>!$OL*APS#rVkSJR&_ylN{h_6ojED?GlW$#bhj zkw_m2{1Y9^HH_P%pzl?4fN!lTf#ZRBb`)YFWs^Pwnwp>eB6Q}7MpFXJva{9sakwUm z%H2j(uEm|%6}V8>mzF{&BSWaqcq&ZdSKj{|T8@~G(&X(cQ_AbzwiFzY=5h2jY7jk! z4Em*#t^8*kvQ7Qtuh5dT%iVMg${F1TG}RSmlgPn1w9|D@TE_!$EK9MD_iZ8HfL@hWFS_+i_y?rUpm1xZ zu&D9OQ(lHIlcgBiNkVwGn&C7l%7q*()pdj!)O%}g;Us3AN#w?Gm`MQXT8tz z-ScsGio;dN6Uq7FC`zus{uaw3M#Y4lw~*;6vlv<&ST@%>Q`+~9LI&$o z&}8{ULjy8G5<@P<2^jzX_Rc=ova>4lzxBR*?{jZ=C)|(^=qAA?35gPB0t7{ok<3^Y zH98Dqji!)5DdUJ1mSdro>=;nM`9nQmO&NN%DI*R z&O#@1Q{h`;FicZt>LlOdkx*NyYCFJZPz5LxRr~gZ_T&i&p>NxZ)>&sE3z$aaePiNflFr_Q zGCuOT8<&5=>?{@RqU1k~Bhlo%<(tkn@1MThbfH3cu}ky6<<%_ykD!^H$^%|DF;#U4 zp&?*KT1j04)>|`3s?3@$T7Bx2Z_*aks=1^;IQXgZr>Yjb>LPYiR$4gIrde)6Pvd&#f>~2n))a5mB&kY`s*u-G zGfjkh+a^O5bG|u#{6sVMQ@!=Jg{*23yCW-wB-k&0rnA}n)U0)F9*D`ipcGOAD)_oa z$YK)ihg{~zBHYgj&ae}Tn9QWjnkcSOjF)a9!8%TFZ@TMMXUBpCpgu|*dHwQ{O7W-6 z*g|=&=SJMsF3#KSN6z(YX*=aZzv8{?|Fl

(;&{^eN08DehEh`a&({ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ribenshou_zuo.png b/app/src/main/res/drawable/ribenshou_zuo.png new file mode 100644 index 0000000000000000000000000000000000000000..702a1474aec5a79a58646f555402613b4c5dbe8e GIT binary patch literal 13454 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_disabled_focused_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_off_disabled_focused_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..fa697be1708efd8aa8f4d4ae47aa620c37b3cd1a GIT binary patch literal 1593 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz_>ZUC&blw>r)`IwY7yXkh#c$ z5H?%{$bhgR3VdMz3?LimTDTTuDTp9Y1Q|iJLzE#aMplE&MpF-w zf(t@SfUCz8M;5`XM192~5bIa&Bc z?Bf$m)wIneIheTxB6WR@xebHlIr+lHq9X}1mk#Z*qBqy9JTCSj1t9VWbK@_4H#L|EGp))H8U_UFY$D742d}WcKYw=O92wc z-=>M5-gIJ%fc8m~6$w=(ixwT$?(*!^@o{*vY+mMx5WQUsHSRI-)fcf(dbM)1peEhqP;ye5 z@0s&1|H$G{h8MY?xi#-SPiZ<-vcycNc$Kzd63*NWIllE#^kpLG2XO@o9F2~Kf*2hK)J$aiMw3#|IR`)1U>9MgLH#rAa!PDk2j zF#E9?q&qMCJ||9m+5OU>`uhv4?p=B-Tc!8Nai4JJflbmz#!dfvx4kv}`aUf%=eG9# zI0J(ZsX<%^&US4m6?(B{{h43?`D4~!%(6akz~BjQ6HCI`wx}xy1h36H8M@kVYdu5s z>k~J9**Lmuj!jtXmKo;H_M$&if9mOd4~{Q(X|QU$e>P6SyS0%mj8V)uU%e|p)IjMQs(~ElguW2bvoLQShF0k%-Yc0Dc5eZ;PboO z2V95jloVbBv3X2lJZvBm{*Ck1gdN@tYdYrL^3GlKDY<7tzo2-Km!o29q2k9QPODZ; znY<*;YEO!>=)WK)1I%?Hk*Iu-QH76?#X%x>A7$uUG07A zvMT6qQ2FXfrpYU>9X@>R%8ksgn`*xvFJfJh_m^do*U3Z2rvKOjEKC?YUHx3vIVCg! E0E_m*ssI20 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..17c040e4933fae49ddc1c4e3363bbcbec8320ab1 GIT binary patch literal 615 zcmV-t0+{`YP)1vKh~QtvlXbVfi`@Sep{h>e}F7WPpmU_I*N(5+i9L-AP;ZyC47L# z|1bk=7PMSLiDCjaJqhZ1J^i2=R445KV@{L;FRzN|*j2>^~R2cdDYXmVF z6AE4_&Fm^c!e`)Xn-qc;l3ixNvuwGz zq>($G5zL5i7f^yJ33H08s%yub9#bV81r+p|kYAqr(-c_oMngsO<&z)TBx{Oh7{IARskcVq#_c{xLl^QoB^aijaY2_aGP`Si2oY z6)UE6tps8+R#a{R4NF3@>(_x2WP~iyP686PEXf$FYg?ERpUBxs+!8<<7L+`YUKK#f z10{>gCuy6lc+U%(C)Khbl~5^97+%j8;J?$D9QU+GdMy7+YxV(}(__4SCXCQjY$>Q| zj_r9$eAo8;L;Rrl<$Jk%PykJ1|BJ@s@pwEQ&kt>x;60cIGKK&E002ovPDHLkV1hC6 B2g(2d literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_off_disabled_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..26ce4cf1efed2cd87c2080104186e118c32a7534 GIT binary patch literal 718 zcmV;<0x|uGP)0lrj^T6Cm_5dK^kaPOP44AMacK*Do(4vcl!jO9cXSV>d zL5nL|j2N;aab89g9Px(Nc-*mcwmSom4NkeD!6&|Eg;xqpF4%I*G!KH3EBI|bu;pW( zSGrq!g+~vQnf>JM0>D1x8igBY?&dl!7dNn%oY7(GMp<`@9L~3B@r6a9?3(kLHs?}Q zjDUm=7mOI>v()b>*lRTU%%q+n&{;Lny7e{e)k?K&GG;m zYDokBRDhD62O`5E4K|ekHVBj|S+MttOJpR{7OfJ1N|K($A|rrtx`#8R6Q>_yIzY&V zb|ru|5n*|NfRGbe+9y(QOqiZWsV{e8rWhEq-11;xFikJlvv&80O1EUL2)bxIR{I(G zjIl}@QO9D8UkxDQ0Trvb52V0C<$l-{U=S%OX!9 zlfN}<^DcL5w&V_Phpkzm=2T_KJ?kAer+>BQF)L;)2-pA`I>&T4LSf8^*aPJsLPW@9?*ob#Ml>oART;M1& literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_focused_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_off_focused_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..17ac8cd5ddecca0388a72453dd1d0aa1f38e8b3a GIT binary patch literal 1923 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz!Vzb6XI&T^(hdYIdcY?ft3pp z#43fy1Y~33%J3LP(0qu2c#MTBK(+;qjcg0D6vTzdvJeq8ab!U>HkwLg!;#s@%HY<) zjY4C<6`(PIT(}5O3s!_n0WcXL+k#auE(KW4L>8QK?JhUag5xDYe!j`i1uX5$~6w!<`_UE-^sS8t-NY>+b;Sl!`FrQ)+)vw1MVJ9RgYpbCYE?TBN zLyVC@K`vNMolSD4QUTX=lZmWMQ*}}eq?n_oakA*zmk3M#+Tg;#z#``9;usQf`0e!H z(U-$yj!Dj5z4caV@~NYDwPtVN)t}3~I_PL47e{uWBXfwGv@8dQ$f?|^T9;OZ3dk%D zan+l4f%#0)maVxA-Y2*Hi?z-*f3|txn~W#6aVX}BGk8z#IgI^*MKJG0_X%Bzdc?JSBswf>KpZXB0&w5WP|JDq=y z^a=K0W%(YbZ{H)sa}NAnXw?=tHS*&3D7K|fzQ_huon&gr&-`d|_)Ey`WJb2Uu7z)p z=`&79^)maGwd?q?U8Zx7Rd?weI9q;W!P)xEvjIOAJ;e=h9c ze;~zK{C)AIfY zjCXjV;~rlBzI_6VoP*AV)l>d|FkifrQO99rQ=h_!Gfn&NBI}r%4Dt3YnOd3abOPPyyE82 z+@%x#J;|LSX1m4rjg#~Z8}v^d&3!T9dy8tp)-S~q zbier}F;q9l9zWn$j+oWj22IezIeI{&HkCzCz;M=4c`$3o|f%TO7fw_hg z4HQ!S`8Z4sWg{FeKmNhsD!!4SgeAMiJ>Zp1_7A1Ho-U7LdXLpIqGUr}Y+ zRCoCBw~r^SPPiN^nyFm&sHe3{>hy1?V@z}2D`r=V=jZCb{JU|jZq~Y+>pFJIh3rXN z_clsu=IUA_=NmDLzv)${vv2zTS+F|%$`y?hDalvvmEW1-c(cQ{?0`Ud4olD5+uL%l ze{o}Sd*HEFoV922N7p%F+TxuS+?OveDKU^KT(eV4q;T7@9*c()zM64G+ROQu{{Q>qwzjV3!)KLBQJDqKB&)QG(bx67{ Zze#?bo$xQi*T6!L!PC{xWt~$(698n%(cl08 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_focused_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_off_focused_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad3671c6834bb09ae95aa136ebc686b0353149e GIT binary patch literal 2153 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz;q$NC&blw>r*(gg#ow-oB@#m za)As831L7Kpvj^MBCAK!4mSj10-8CPT)4>)Ga+0wHk^y89Vmh(i!1_>f`}k11F|6q ztAWUZXnHYqK@=d95R1?>!WE#2BP&Lhg0qnoK-fSMg5YLiil9lMnTDwzC<0dlOip+d zpqY%U5m^eE4KWQ_1V0;YCPbP4y&F4$Zu(FX@rE-piaA0*?mnsk4Uwy z$JAME7WIbhGMUmDt5gD*%wtwAa!wKJv+Z`P(kbk+>9p=#R#c;>UmMKIoxn18YvMZQ zz>{d(-vJh#LP z#Rl-el_UrYn|)iyz`zpW>Eaj?aro`@zwyDLGRHM_t2bPjH+ch(aPnIA ztSKE2g%=6AWgDp!dz#2jIgw(+v+W>HM6itF!wHHXO~e*TD3vR0a#pkGES|e|r`f@k z+>Jedx#w=Y6j%E0?y~(w^|xNX`&zZX?A*_J=b!IoD46blfG2^?fqld5*u}{|AN%?~ z{#jqLOYLnP)12!%(^L6GGg~ist&*9#^RTm@J;Sl?`yrDAUWM}gd!TTC;U#B}W9i>+ z*RV+Zs;c(zDDmWyw(8q1Z+q|K)4EP(MW40mHB2v}RH`EOzq`HJooD+5cdM-ZE83sT zpX>I%;qcW$7RA%yi|2t{&UtQ>Gl00ny!B%qgK4V>&$O4XGQCuS6m8rzV5WKUF)l$t2_1G3@yLu_0vu< ziE7?fTp#YvZjcx1aCw8r%^Ht?7ms*cwO`-8Wd9s*yS=`do4+``oiR}=A)~YTkBW48 zvDEX!OApo8EA#wx_*chqJ>w>y@7ya5cAN)SixryBy|m}}ulH%3>}Gi#Pj3ZnIihVC z!jQc7-mcWOMVr%_L;n0{7H_{^E52w=g!6>eIU)^HFBX_fo0w-U`LVM0`|9}ZjV+=d z4iwoqgm}0uyV3gmDRYvI!yae5qnp;(FSk3?$+{sm;89Ro!9Ag%yEYH6O0PU6oPS6( zOXk48wtKUbw0=L_x_za7efh!FuG_x4)J~FRHZVW9qfTJoFLN=|2GfIyP2D^*OgkCB z%zSVT@_^?ES(?!|Kx_25}iW~aUCH%&EBl% zFS|c*+TwbUE0me7!0rB4A(0#+$uO&{pq8mzf-KQeUCaBwkm?%aYe+oMM)PQ zbT8!-J$<<3C=(C=!mMh6&}il7uVh1KFOO;NJ$1?X(}ha&{OPYx94XoPN@~%|(^rGv z?_qz&ka+Cxr{9gw647N(AI_ ze|$ct$*+aGl*&FFH;Q|rdv$Nl&S(9vs#2_<&5IO__VQx-blfdAtv1ucHMEtUQVw!3(t}(|WDJS_KPHla;3Zf}q82Qa(xPp#yWM&r9ze3)oo)5P zdGB}U`QDjtXWtLBw6wIewElM)YL7{qG)WvB#(22&=?m{K07!7ivdSVU94stg#E2mS znl!k^6|)17CJU5UXT&w9*%%#otNBJ)^$;Fy;1X8<4#(ri+~l{Vx}2P^Uss#&p1;#8+xjI{Ox3L=Be>?05h<)_BJkrSJ7;YCItu z4`3CSPxwjzK4*BW!~l>Ei*)G9Qnkbq7);qkY-$X+)bO$v6NBI_h`5fGZND z)BzIMiU;tA`q(7Y0Za^ru>f4m;5AJCvCIjLG!8a!q8$9-CJqJ|;)S_T0*|p5yotd8 z1BT?)SC^2-WuOkw$# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_off_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..8d11c5b19bf7acdca8f50a2a5f002591ed53c93e GIT binary patch literal 827 zcmV-B1H}A^P)Z??DlKh{wL=90h*C`~m4w+4tYAdlEdU5>bb8gG1!oMoZ87@$QIKic7R<(*0T6U~PovY(NL*1|TMOA{MYpQ+>NU4 z>xj?n@p4#~(t)tX(@r_>>uRnR@mg?Cn`5pAQ*kN>nhg5G*{D=)hKowhT5wcjx)AI% z;H=*hnoyT))Gng8StH5#}87u2mnoQAvANO>6eHoi6(3KWNR?3-m50 z4VrhxkoW=3X^%c9x2QSYu=go18c;OusvD;Li8edzc0jkB%f5AeOWN}dADZ;64=7sH zt4C4MoV=keA5i>bMAN=LqFGRoH<@filPOcCOqnue`U{xQ{cP9Zv||7O002ovPDHLk FV1hiJmZbmy literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_off_pressed_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_off_pressed_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7e0ce0e514ebcf568d6b41f66f9655bf69b93678 GIT binary patch literal 3144 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 QNdN!<07*qoM6N<$f}~U-`~Uy| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..571a69b5390d6ac2945e3c0891e50a559447057d GIT binary patch literal 3190 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_on_disabled_focused_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c5dd175deb2f82031dfcd3bbd71c2a54e36f4133 GIT binary patch literal 3297 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..61a48907d6c2b3fccf4403c028f67ceb26c54e14 GIT binary patch literal 1258 zcmVYxd6o#L3XFUFjV{FH6K1dWm3b3Q9RisL&WnXsmFLYgg30?CS%C6nRvISRVhiDZD zaU4RN*d!j?W6#`syRZ`x3J#4ERH=Sv;lP0=AtWrDPXJH>MS=`dxHu>TuoyHEJ}m-F`Ro8HLW&$&ECC(qN+=On*T!s;G#-jQ znsmzc3;-(NQ6P_|;rPkkCF8zzH)2(F<9dn$LX#cB^63IpAjupF-Z;&f-hvf5GTQ=J zyCJ)Aog+t=S9Hs#2T*}2=0UwKwH7Qgyp96c!Bv%=jG4uv~|{;C$R_VYO)i9RJho^*}fJoYtdND zjGgH`sp<2~Q6(HZ0u^DFyxLf56+lp^miu$!e*R_ADY#Qk9853t&F)hDcH>r%i7*&! zosDTTPlMOT?FjjZ>@U$QyvBhF3ky0)SFeVB*_3g0w#rmD*N~kmj zyH0(UbG)QIIt|WffbShjxbCYJjY6TGd3W=Vu4J#w&YRS}+f+^2leP+7FL5rbr&pb7 zXQe-50J3&Fw9`2F_eRD*9g~4L(=>|V;FW8+KjwbDoWGhW?!>m_4P8P)y1Zdac4L`h z{_1a+@8(+WVDwC%CRyU67dQ@J8twRV7D24@OZ@Rt@}ie*Dj$7hn8v56ylmpq-ZQlV*peXX?oe72!dL3ekz2E>4L8U{uxzEfUi>daPfYA%|Rg|Qvm@}6?O6m zc*N*juz(}6uEugpHxeq$c>j?lpcA58gbFmB}VMz05Kd1hI>UGrh|f{`l3HL zToa0X8#P;_6H-c~B)K9D0TmRziggA6TI4 zTF=v^R+*iVXz7G=o4`?K%bD* z+Q4|)FZ&m^!)-G%1||x(FKl1$4*W7_7B^f&_lqjI#^&aia7q!D2;!+q=FltG&JVBUsbhlhy0%w*t{vY)y0;p*7xN z)MKAQJvJ~~ndpb+jc4X*r*6V`-UVyIPTf4c@$61BqlebaBhNlP#_|IeL(Yh9X939D zmHuXXtJkr{5rv3=F*@wGf?DFQuU79gS3=PkY*qXsDYod}I~7Y-o8SNJZA(^oUJUXk zV?B_*Y9$&M>$i7r1sRP#RZ9j?@mM70Y+P#}m{Q}cIe&N$(i@3^DLo(DY=7Qg)=D3E z<0mP7o{(yJd{cU8%W-N;-TbNB@^KrJVU0M`#^f*x^CW0G&0=r<1Fcz2cFv|Xd#5?w zb=sf2IX&DFX>v?s=+TzoNPC_lex~jDf8qnh5x?vW5x}5N{)uLyi6)w8qKPK@8*SEV UY^}RnegFUf07*qoM6N<$f{z4NO8@`> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_light.png b/app/src/main/res/drawable/sad__btn_radio_on_disabled_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee4eb1c64cf7205599f9ca50c01b2397448615a GIT binary patch literal 1456 zcmV;h1yA~kP)7&-8HS&kT`sw#C`uH=I{FD^$Cd4*LE1|Vv}Ix+(o=hDPeqGfaw*WF4uYUP6etn| z34#C)a?UA0fBT*Hvu6HudKyl9m*?++FU@Ob?`#IJQMalzR!^ zJuDXc^F8=>=9}*w7;31Yh8k+9FT2FSUaMMUNMmCGiiC)8Ui}{cs$i3&L=lG+5((%Y zg2x6v$^5+os7eYYRig1Y}R zcW>|;>*h!_Zf20IutYe2xBykb2qzd3Yw6W*x1Z6jxaDmF5SSO`U$fDaIYN_ndIe|!BePZ)h8qqs$1u)&?dHLsw_&A0Iy!{|p`$~SEhcNEtpL#z7i9}){v9Nkq zau-NEW@!I+JGqY%^-8C97#XO#JdET1=T8j;0*Nrzb?cw03%Mn?oq}vU6P)$G9?vSF zFlY?syJO)gA}-B`181NrnWdCk__6nBH@s}7{@}h+e!H@IESOc5c&hc4+QeUSf0sI$ zHR)c`P4q#erx2BT%?t!kg)xqcwX-X~0D;ujg7a+gt>f)eN9IaXW2MpY(XqmKq2!i7 zF1+V_7=JY`8UZ}Yjo?~}Ng9=~HV8n)<|vMP<+V=tUoSZ4ix*E8P9B-m*=^gCo@fYP z#}@iP9QiIaw4;v001uiXi(8ff6dSbhdU2!Lx;ppm#>vCI^DYPvJnl^ zWDX9H#+I#KwGi*-!U>V>h`X=4idcwjIPq?7r%uWiHtB-{q_9QMD_CO1Re53Wz33~1 zt@0~wuQDP6EbM~=NQ9N_RLsCOj+T4Z6@!+>3GAI3Yb8jmL1w`nLVS_C{a2&C0W?P0 zJ701W(J_5n4WmWJO?G1I6dHYSfEZ=m9)Ot&WK$*m08}DdQz51cU@|D;g9AjwdSqw4 zKjXWbNxR=aNZRhktYfF2=XfJzt=nZnben}Kh3j;_b+de0o_Bwjzde!A1mz%#;( z5)mF4U|!*o`ydw?40=}ma5K9UY~6hv7#(c6OF!6}RcK6P{*@z#w|BeVZx(D|hsE;( zgAwX`(dn94j2d@FFgj|8#nZL#heBa6=S5f~#l|4B0DRWX^aZ!u@8y$UdesGex&4Wb zKQ|VPj@zH;%hiQ*US4&dzTlc^*6{~wNGh6y`<1v+KVtxjX0Eg9-;CNuTS6j)0IgNr zX@)DAE8ki?=gq}Jp)tReS1S~_N_(J&q(-Gfis|K`(LQZJP||0j`|2C@?MB#){IC@@ z;tjRzES|XfWbNn8siYhJRq;+)9b<*Hex31tn^HG(=^byUDb?0>>mSaA+;XPdlun0d z{cm(;mHf0R9S7+o>s`5L&Ff3p1}dY(Y;dINSnf$pB);PuhqAq*eV?C+2E z;R|Y1Vth(T`QPDk@R;5WsdoeGPp_VrZECKj*Z8%ynv05N8k-fC2oBkte$JjN+SKK?jC%Gwtw$Lni^V!? z)bEKsziopejlH`;p-G6?y5}1dci5t_fn<;^nxTdoYN(-x8tQ-bA(8RLd#jiL0000< KMNUMnLSTZ~EW%#^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_focused_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_on_focused_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..557cb153fae335291b184898d2e48700ab34a4e9 GIT binary patch literal 3896 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sad__btn_radio_on_pressed_holo_dark.png b/app/src/main/res/drawable/sad__btn_radio_on_pressed_holo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb3d7c0543815f201831709ea3f10f4df8ab6f2 GIT binary patch literal 4481 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b041ba9..5343101 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -11,8 +11,9 @@ android:layout_width="200dp" android:layout_height="200dp" android:layout_alignParentBottom="true" - kongqw:areaBackground="@drawable/default_area_bg" - kongqw:rockerBackground="@drawable/default_rocker_bg" + android:background="#FF333333" + kongqw:areaBackground="@drawable/meiguoshou_zuo" + kongqw:rockerBackground="@drawable/sad__btn_radio_on_focused_holo_light" kongqw:rockerRadius="30dp" /> Date: Tue, 8 Sep 2020 10:06:25 +0800 Subject: [PATCH 04/10] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E9=9C=80=E6=B1=82=EF=BC=9A=20=20=E7=BB=98=E5=88=B6=20=E8=B7=9F?= =?UTF-8?q?=E9=9A=8F=E6=89=8B=E5=8A=BF=E7=A7=BB=E5=8A=A8=E7=9A=84=E5=85=89?= =?UTF-8?q?=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index c750227..44a7668 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -10,6 +10,7 @@ import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; @@ -38,6 +39,10 @@ public class RockerView extends View { private Bitmap leftLight, rightLight, topLight, bottomLight; // 绘制 上下左右的滑动到对应区域的光线 的画笔 private Paint mCirclePaint; + // 绘制 跟随手势移动的光环 的画笔 + private Paint mArcPaint; + // 摇杆滑动的角度 + private double angle = 0; private Point mRockerPosition; private Point mCenterPoint; @@ -120,6 +125,13 @@ public RockerView(Context context, AttributeSet attrs) { mCirclePaint = new Paint(); mCirclePaint.setAntiAlias(true); + // 绘制 跟随手势移动的光环 的画笔 + mArcPaint = new Paint(); + mArcPaint.setAntiAlias(true); //使用抗锯齿功能 + mArcPaint.setColor(Color.GREEN); //设置画笔的颜色为绿色 + mArcPaint.setStyle(Paint.Style.STROKE); //设置画笔类型为STROKE类型 + mArcPaint.setStrokeWidth(10); //设置画笔宽度 + // 中心点 mCenterPoint = new Point(); // 摇杆位置 @@ -297,6 +309,13 @@ protected void onDraw(Canvas canvas) { break; } } + + // 绘制跟随手势移动的光环 + if(angle > 0) { + RectF oval = new RectF( 0, 0, getWidth(), getHeight()); + float mAngle = (float) angle; + canvas.drawArc(oval, mAngle, 45, false, mArcPaint);//绘制圆弧,不含圆心 + } } @Override @@ -364,7 +383,7 @@ private Point getRockerPositionPoint(Point centerPoint, Point touchPoint, float // 计算弧度 double radian = Math.acos(lenX / lenXY) * (touchPoint.y < centerPoint.y ? -1 : 1); // 计算角度 - double angle = radian2Angle(radian); + angle = radian2Angle(radian); // 回调 返回参数 callBack(angle); @@ -637,6 +656,8 @@ private void callBack(double angle) { * 结束 */ private void callBackFinish() { + //结束的时候,滑动的角度要归零 + angle = 0; tempDirection = Direction.DIRECTION_CENTER; if (null != mOnAngleChangeListener) { mOnAngleChangeListener.onFinish(); From 4da75553c65b4d9b52b079739367a80ba17de4d8 Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Tue, 8 Sep 2020 10:26:12 +0800 Subject: [PATCH 05/10] =?UTF-8?q?1=E3=80=81=E5=8E=BB=E6=8E=89=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E7=9A=84=20=E7=BB=98=E5=88=B6=20=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E5=B7=A6=E5=8F=B3=E7=9A=84=E6=BB=91=E5=8A=A8=E5=88=B0=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E5=8C=BA=E5=9F=9F=E7=9A=84=E5=85=89=E7=BA=BF=20?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=202=E3=80=81=E7=BB=98=E5=88=B6=20?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E6=89=8B=E5=8A=BF=E7=A7=BB=E5=8A=A8=E7=9A=84?= =?UTF-8?q?=E5=85=89=E7=8E=AF=20=20=E8=B7=9F=E9=9A=8F=E6=89=8B=E6=8C=87?= =?UTF-8?q?=E6=BB=91=E5=8A=A8=E7=9A=84=E8=A7=92=E5=BA=A6=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E4=B8=94=E4=BD=BF=E6=BB=91=E5=8A=A8=E8=A7=92=E5=BA=A6=E5=A4=84?= =?UTF-8?q?=E4=BA=8E=E5=9C=86=E5=BC=A7=E6=AD=A3=E4=B8=AD=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 59 +------------------ 1 file changed, 2 insertions(+), 57 deletions(-) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index 44a7668..de1f601 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -35,10 +34,6 @@ public class RockerView extends View { private Paint mAreaBackgroundPaint; private Paint mRockerPaint; - // 上下左右的滑动到对应区域的光线 - private Bitmap leftLight, rightLight, topLight, bottomLight; - // 绘制 上下左右的滑动到对应区域的光线 的画笔 - private Paint mCirclePaint; // 绘制 跟随手势移动的光环 的画笔 private Paint mArcPaint; // 摇杆滑动的角度 @@ -121,10 +116,6 @@ public RockerView(Context context, AttributeSet attrs) { mRockerPaint = new Paint(); mRockerPaint.setAntiAlias(true); - // 绘制 上下左右的滑动到对应区域的光线 的画笔 - mCirclePaint = new Paint(); - mCirclePaint.setAntiAlias(true); - // 绘制 跟随手势移动的光环 的画笔 mArcPaint = new Paint(); mArcPaint.setAntiAlias(true); //使用抗锯齿功能 @@ -136,12 +127,6 @@ public RockerView(Context context, AttributeSet attrs) { mCenterPoint = new Point(); // 摇杆位置 mRockerPosition = new Point(); - - //上下左右的滑动到对应区域的光线 - leftLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.left_move_light); - rightLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.right_move_light); - topLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.top_move_light); - bottomLight = BitmapFactory.decodeResource(context.getResources(), R.drawable.bottom_move_light); } /** @@ -290,31 +275,12 @@ protected void onDraw(Canvas canvas) { canvas.drawCircle(mRockerPosition.x, mRockerPosition.y, mRockerRadius, mRockerPaint); } - //根据点的位置来画摇杆外围光圈 方位会在滑动过程中动态计算 - if (mDirectionMode == DirectionMode.DIRECTION_4_ROTATE_0 || mDirectionMode == DirectionMode.DIRECTION_8) { - switch (tempDirection) { - case DIRECTION_LEFT: - canvas.drawBitmap(leftLight, 0, (getHeight() - leftLight.getHeight()) / 2, mCirclePaint); - break; - case DIRECTION_UP: - canvas.drawBitmap(topLight, (getWidth() - topLight.getWidth()) / 2, 0, mCirclePaint); - break; - case DIRECTION_RIGHT: - canvas.drawBitmap(rightLight, getWidth() - rightLight.getWidth(), (getHeight() - rightLight.getHeight()) / 2, mCirclePaint); - break; - case DIRECTION_DOWN: - canvas.drawBitmap(bottomLight, (getWidth() - bottomLight.getWidth()) / 2, getWidth() - bottomLight.getHeight(), mCirclePaint); - break; - default: - break; - } - } - // 绘制跟随手势移动的光环 if(angle > 0) { RectF oval = new RectF( 0, 0, getWidth(), getHeight()); float mAngle = (float) angle; - canvas.drawArc(oval, mAngle, 45, false, mArcPaint);//绘制圆弧,不含圆心 + // 使移动的光环圆弧 紧跟着滑动滑动的角度,并且使角度在圆弧中间 + canvas.drawArc(oval, mAngle - 30, 60, false, mArcPaint);//绘制圆弧,不含圆心 } } @@ -343,27 +309,6 @@ public boolean onTouchEvent(MotionEvent event) { return true; } - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - if (topLight != null) { - topLight.recycle(); - topLight = null; - } - if (rightLight != null) { - rightLight.recycle(); - rightLight = null; - } - if (leftLight != null) { - leftLight.recycle(); - leftLight = null; - } - if (bottomLight != null) { - bottomLight.recycle(); - bottomLight = null; - } - } - /** * 获取摇杆实际要显示的位置(点) * From fa0779be9b0570f6c3cf906bbc527f53856eea78 Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Tue, 8 Sep 2020 10:58:36 +0800 Subject: [PATCH 06/10] =?UTF-8?q?1=E3=80=81=E6=91=87=E6=9D=86=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E5=85=89=E7=8E=AF?= =?UTF-8?q?=E8=83=8C=E6=99=AF=E9=A2=9C=E8=89=B2=E5=92=8C=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=20=20=E6=8A=BD=E5=8F=96=E8=87=AA=E5=AE=9A=E4=B9=89=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 23 ++++++++++++++----- .../src/main/res/values/attrs.xml | 9 ++++++-- app/src/main/res/layout/activity_main.xml | 7 ++++-- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index de1f601..d6a6c92 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -89,6 +89,7 @@ public class RockerView extends View { private int mAreaBackgroundMode = AREA_BACKGROUND_MODE_DEFAULT; private Bitmap mAreaBitmap; private int mAreaColor; + // 摇杆背景 private static final int ROCKER_BACKGROUND_MODE_PIC = 4; private static final int ROCKER_BACKGROUND_MODE_COLOR = 5; @@ -98,6 +99,11 @@ public class RockerView extends View { private Bitmap mRockerBitmap; private int mRockerColor; + // 摇杆移动的时候,光环背景颜色 + private int mARCColor; + // 摇杆移动的时候,光环背景宽度 + private int mARCStrokeWidth; + public RockerView(Context context, AttributeSet attrs) { super(context, attrs); @@ -118,10 +124,10 @@ public RockerView(Context context, AttributeSet attrs) { // 绘制 跟随手势移动的光环 的画笔 mArcPaint = new Paint(); - mArcPaint.setAntiAlias(true); //使用抗锯齿功能 - mArcPaint.setColor(Color.GREEN); //设置画笔的颜色为绿色 - mArcPaint.setStyle(Paint.Style.STROKE); //设置画笔类型为STROKE类型 - mArcPaint.setStrokeWidth(10); //设置画笔宽度 + mArcPaint.setAntiAlias(true); //使用抗锯齿功能 + mArcPaint.setColor(mARCColor); //设置画笔的颜色为绿色 + mArcPaint.setStyle(Paint.Style.STROKE); //设置画笔类型为STROKE类型 + mArcPaint.setStrokeWidth(mARCStrokeWidth); //设置画笔宽度 // 中心点 mCenterPoint = new Point(); @@ -188,6 +194,11 @@ private void initAttribute(Context context, AttributeSet attrs) { mRockerBackgroundMode = ROCKER_BACKGROUND_MODE_DEFAULT; } + // 摇杆移动的时候,光环背景颜色 + mARCColor = typedArray.getColor(R.styleable.RockerView_arcColor, Color.GREEN); + // 摇杆移动的时候,光环背景的宽度 + mARCStrokeWidth = typedArray.getInt(R.styleable.RockerView_arcStrokeWidth, 10); + // 摇杆半径 mRockerRadius = typedArray.getDimensionPixelOffset(R.styleable.RockerView_rockerRadius, DEFAULT_ROCKER_RADIUS); @@ -276,8 +287,8 @@ protected void onDraw(Canvas canvas) { } // 绘制跟随手势移动的光环 - if(angle > 0) { - RectF oval = new RectF( 0, 0, getWidth(), getHeight()); + if (angle > 0) { + RectF oval = new RectF(0, 0, getWidth(), getHeight()); float mAngle = (float) angle; // 使移动的光环圆弧 紧跟着滑动滑动的角度,并且使角度在圆弧中间 canvas.drawArc(oval, mAngle - 30, 60, false, mArcPaint);//绘制圆弧,不含圆心 diff --git a/KqwRockerLibrary/src/main/res/values/attrs.xml b/KqwRockerLibrary/src/main/res/values/attrs.xml index 602afde..0d6560a 100644 --- a/KqwRockerLibrary/src/main/res/values/attrs.xml +++ b/KqwRockerLibrary/src/main/res/values/attrs.xml @@ -1,10 +1,15 @@ - + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5343101..24db53a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,7 +14,9 @@ android:background="#FF333333" kongqw:areaBackground="@drawable/meiguoshou_zuo" kongqw:rockerBackground="@drawable/sad__btn_radio_on_focused_holo_light" - kongqw:rockerRadius="30dp" /> + kongqw:rockerRadius="30dp" + kongqw:arcColor="#ff0000" + kongqw:arcStrokeWidth="15"/> + kongqw:rockerRadius="15dp" + kongqw:arcColor="#FF987654"/> Date: Tue, 8 Sep 2020 11:29:16 +0800 Subject: [PATCH 07/10] =?UTF-8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BE=BF=E4=BA=8E=E7=90=86?= =?UTF-8?q?=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 427 ++++++++++-------- Readme.md | 10 +- 2 files changed, 245 insertions(+), 192 deletions(-) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index d6a6c92..85b4033 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -419,194 +419,205 @@ private void callBackStart() { * @param angle 摇动角度 */ private void callBack(double angle) { + // 角度直接回调 if (null != mOnAngleChangeListener) { mOnAngleChangeListener.angle(angle); } + // 方向的还得做一系列的逻辑判断 if (null != mOnShakeListener) { if (CallBackMode.CALL_BACK_MODE_MOVE == mCallBackMode) { - switch (mDirectionMode) { - case DIRECTION_2_HORIZONTAL:// 左右方向 - if (ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) { - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle) { - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } - break; - case DIRECTION_2_VERTICAL:// 上下方向 - if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle) { - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle) { - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_4_ROTATE_0:// 四个方向 - if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle) { - // 右下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle) { - // 左下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle) { - // 左上 - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle) { - // 右上 - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if (ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) { - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle) { - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle) { - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle) { - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_8:// 八个方向 - if (ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) { - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle) { - // 右下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle) { - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle) { - // 左下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle) { - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle) { - // 左上 - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle) { - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle) { - // 右上 - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - default: - break; - } + dealCallBackModeMove(angle); } else if (CallBackMode.CALL_BACK_MODE_STATE_CHANGE == mCallBackMode) { - switch (mDirectionMode) { - case DIRECTION_2_HORIZONTAL:// 左右方向 - if ((ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_LEFT) { - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } - break; - case DIRECTION_2_VERTICAL:// 上下方向 - if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP) { - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_4_ROTATE_0:// 四个方向 - if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { - // 右下 - tempDirection = Direction.DIRECTION_DOWN_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { - // 左下 - tempDirection = Direction.DIRECTION_DOWN_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { - // 左上 - tempDirection = Direction.DIRECTION_UP_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { - // 右上 - tempDirection = Direction.DIRECTION_UP_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if ((ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_LEFT) { - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP) { - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_8:// 八个方向 - if ((ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { - // 右下 - tempDirection = Direction.DIRECTION_DOWN_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN) { - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { - // 左下 - tempDirection = Direction.DIRECTION_DOWN_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle && tempDirection != Direction.DIRECTION_LEFT) { - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { - // 左上 - tempDirection = Direction.DIRECTION_UP_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle && tempDirection != Direction.DIRECTION_UP) { - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { - // 右上 - tempDirection = Direction.DIRECTION_UP_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - default: - break; - } + dealCallBackModeStateChange(angle); } } } + + private void dealCallBackModeMove(double angle) { + switch (mDirectionMode) { + case DIRECTION_2_HORIZONTAL:// 横向 左右两个方向 + if (ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) { //0-90度和270度-360度 + // 右 + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle) { //90度-270度 + // 左 + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } + break; + case DIRECTION_2_VERTICAL:// 纵向 上下两个方向 + if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle) { // 0度到-180度 + // 下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle) { // 180度到-360度 + // 上 + mOnShakeListener.direction(Direction.DIRECTION_UP); + } + break; + case DIRECTION_4_ROTATE_0:// 四个方向 + if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle) { // 0度到-90度 + // 右下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle) { // 90度到-180度 + // 左下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); + } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle) { // 180度到-270度 + // 左上 + mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); + } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle) { // 270度到-360度 + // 右上 + mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); + } + break; + case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 + if (ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) { //0-45度和315度-360度 + // 右 + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle) { //45度-135度 + // 下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle) { //135度-225度 + // 左 + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle) { //225度-315度 + // 上 + mOnShakeListener.direction(Direction.DIRECTION_UP); + } + break; + case DIRECTION_8:// 八个方向 + if (ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) { //0-22.5度和337.5度-360度 + // 右 + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle) { //22.5度 - 67.5度 + // 右下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle) {// 67.5度 - 112.5度 + // 下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle) {// 112.5度 - 157.5度 + // 左下 + mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); + } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle) {// 157.5度 - 202.5度 + // 左 + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle) {// 202.5度 - 247.5度 + // 左上 + mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); + } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle) {// 247.5度 - 292.5度 + // 上 + mOnShakeListener.direction(Direction.DIRECTION_UP); + } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle) {// 292.5度 - 337.5度 + // 右上 + mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); + } + break; + default: + break; + } + } + + private void dealCallBackModeStateChange(double angle) { + switch (mDirectionMode) { + case DIRECTION_2_HORIZONTAL:// 左右方向 + if ((ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + // 右 + tempDirection = Direction.DIRECTION_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_LEFT) { + // 左 + tempDirection = Direction.DIRECTION_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } + break; + case DIRECTION_2_VERTICAL:// 上下方向 + if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { + // 下 + tempDirection = Direction.DIRECTION_DOWN; + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP) { + // 上 + tempDirection = Direction.DIRECTION_UP; + mOnShakeListener.direction(Direction.DIRECTION_UP); + } + break; + case DIRECTION_4_ROTATE_0:// 四个方向 + if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { + // 右下 + tempDirection = Direction.DIRECTION_DOWN_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { + // 左下 + tempDirection = Direction.DIRECTION_DOWN_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); + } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { + // 左上 + tempDirection = Direction.DIRECTION_UP_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); + } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { + // 右上 + tempDirection = Direction.DIRECTION_UP_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); + } + break; + case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 + if ((ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + // 右 + tempDirection = Direction.DIRECTION_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { + // 下 + tempDirection = Direction.DIRECTION_DOWN; + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_LEFT) { + // 左 + tempDirection = Direction.DIRECTION_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP) { + // 上 + tempDirection = Direction.DIRECTION_UP; + mOnShakeListener.direction(Direction.DIRECTION_UP); + } + break; + case DIRECTION_8:// 八个方向 + if ((ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + // 右 + tempDirection = Direction.DIRECTION_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_RIGHT); + } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { + // 右下 + tempDirection = Direction.DIRECTION_DOWN_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN) { + // 下 + tempDirection = Direction.DIRECTION_DOWN; + mOnShakeListener.direction(Direction.DIRECTION_DOWN); + } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { + // 左下 + tempDirection = Direction.DIRECTION_DOWN_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); + } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle && tempDirection != Direction.DIRECTION_LEFT) { + // 左 + tempDirection = Direction.DIRECTION_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_LEFT); + } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { + // 左上 + tempDirection = Direction.DIRECTION_UP_LEFT; + mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); + } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle && tempDirection != Direction.DIRECTION_UP) { + // 上 + tempDirection = Direction.DIRECTION_UP; + mOnShakeListener.direction(Direction.DIRECTION_UP); + } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { + // 右上 + tempDirection = Direction.DIRECTION_UP_RIGHT; + mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); + } + break; + default: + break; + } + } + /** * 回调 * 结束 @@ -646,10 +657,25 @@ public void setCallBackMode(CallBackMode mode) { * 摇杆支持几个方向 */ public enum DirectionMode { + /** + * + */ DIRECTION_2_HORIZONTAL,// 横向 左右两个方向 + /** + * + */ DIRECTION_2_VERTICAL, // 纵向 上下两个方向 + /** + * + */ DIRECTION_4_ROTATE_0, // 四个方向 + /** + * + */ DIRECTION_4_ROTATE_45, // 四个方向 旋转45度 + /** + * + */ DIRECTION_8 // 八个方向 } @@ -657,15 +683,42 @@ public enum DirectionMode { * 方向 */ public enum Direction { - DIRECTION_LEFT, // 左 - DIRECTION_RIGHT, // 右 - DIRECTION_UP, // 上 - DIRECTION_DOWN, // 下 - DIRECTION_UP_LEFT, // 左上 - DIRECTION_UP_RIGHT, // 右上 - DIRECTION_DOWN_LEFT, // 左下 - DIRECTION_DOWN_RIGHT, // 右下 - DIRECTION_CENTER // 中间 + /** + * 左 + */ + DIRECTION_LEFT, + /** + * 右 + */ + DIRECTION_RIGHT, + /** + * 上 + */ + DIRECTION_UP, + /** + * 下 + */ + DIRECTION_DOWN, + /** + * 左上 + */ + DIRECTION_UP_LEFT, + /** + * 右上 + */ + DIRECTION_UP_RIGHT, + /** + * 左下 + */ + DIRECTION_DOWN_LEFT, + /** + * 右下 + */ + DIRECTION_DOWN_RIGHT, + /** + * 中间 + */ + DIRECTION_CENTER } /** diff --git a/Readme.md b/Readme.md index ede1f59..acdfeab 100644 --- a/Readme.md +++ b/Readme.md @@ -187,11 +187,11 @@ setOnShakeListener(DirectionMode directionMode, OnShakeListener listener) | 方向 | 图 | 描述 | |------------------------|------------------|------| -| DIRECTION_2_HORIZONTAL |![左右两个方向](http://img.blog.csdn.net/20160901183144896)| 横向 左右两个方向 | -| DIRECTION_2_VERTICAL |![上下两个方向](http://img.blog.csdn.net/20160901183332084)| 纵向 上下两个方向 | -| DIRECTION_4_ROTATE_0 | ![四个方向](http://img.blog.csdn.net/20160901183347055) |四个方向 | -| DIRECTION_4_ROTATE_45 | ![四个方向 旋转45°](http://img.blog.csdn.net/20160901183404461) |四个方向 旋转45° | -| DIRECTION_8 | ![八个方向](http://img.blog.csdn.net/20160901183419477) |八个方向 | +| DIRECTION_2_HORIZONTAL |![左右两个方向](https://img.blog.csdn.net/20160901183144896)| 横向 左右两个方向 | +| DIRECTION_2_VERTICAL |![上下两个方向](https://img.blog.csdn.net/20160901183332084)| 纵向 上下两个方向 | +| DIRECTION_4_ROTATE_0 | ![四个方向](https://img.blog.csdn.net/20160901183347055) |四个方向 | +| DIRECTION_4_ROTATE_45 | ![四个方向 旋转45°](s://img.blog.csdn.net/20160901183404461) |四个方向 旋转45° | +| DIRECTION_8 | ![八个方向](https://img.blog.csdn.net/20160901183419477) |八个方向 | 方向描述 From 9e8446968521853aa54b8a14675728267d932473 Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Tue, 8 Sep 2020 16:48:10 +0800 Subject: [PATCH 08/10] =?UTF-8?q?1=E3=80=81=E6=8A=BD=E5=8F=96=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E8=A7=92=E5=BA=A6=E5=88=A4=E6=96=AD=E6=96=B9=E5=90=91?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=E4=B8=BA=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kongqw/rockerlibrary/view/RockerView.java | 116 +++++++++++------- .../kongqw/kqwrockerdemo/MainActivity.java | 6 +- 2 files changed, 79 insertions(+), 43 deletions(-) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index 85b4033..75de0eb 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -433,80 +433,108 @@ private void callBack(double angle) { } } + /** + * 判断当前角度是否处于某个区间 + * + * @param targetAngle 当前角度 + * @param smallAngle 区间左边的角度 + * @param bigAngle 区间右边的角度 + * @return 是否当前角度是否处于某个区间 + */ + private boolean judgmentIsInRange(double targetAngle, double smallAngle, double bigAngle) { + return smallAngle <= targetAngle && bigAngle > targetAngle; + } + /** + * 判断当前角度是否处于某多个区间 + * 判断targetAngle是否处于 0度-firstAngle度区间 以及 secondAngle度-360度 区间内 + * + * @param targetAngle 当前角度 + * @param firstAngle 区间左边的角度 + * @param secondAngle 区间右边的角度 + * @return 是否当前角度是否处于某多个区间 + */ + private boolean multiConditionJudgmentIsInRange(double targetAngle, double firstAngle, double secondAngle) { + return judgmentIsInRange(targetAngle, ANGLE_0, firstAngle) || judgmentIsInRange(targetAngle, secondAngle, ANGLE_360); + } + + /** + * CallBackMode.CALL_BACK_MODE_MOVE 情况下 根据角度来判断方向,然后回调出去 + * @param angle 角度 + */ private void dealCallBackModeMove(double angle) { switch (mDirectionMode) { case DIRECTION_2_HORIZONTAL:// 横向 左右两个方向 - if (ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) { //0-90度和270度-360度 + if (multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //0-90度和270度-360度 // 右 mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle) { //90度-270度 + } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //90度-270度 // 左 mOnShakeListener.direction(Direction.DIRECTION_LEFT); } break; case DIRECTION_2_VERTICAL:// 纵向 上下两个方向 - if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle) { // 0度到-180度 + if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) { // 0度到-180度 // 下 mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle) { // 180度到-360度 + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360)) { // 180度到-360度 // 上 mOnShakeListener.direction(Direction.DIRECTION_UP); } break; case DIRECTION_4_ROTATE_0:// 四个方向 - if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle) { // 0度到-90度 + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P)) { // 0度到-90度 // 右下 mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle) { // 90度到-180度 + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P)) { // 90度到-180度 // 左下 mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle) { // 180度到-270度 + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P)) { // 180度到-270度 // 左上 mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle) { // 270度到-360度 + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360)) { // 270度到-360度 // 右上 mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); } break; case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if (ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) { //0-45度和315度-360度 + if (multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) { //0-45度和315度-360度 // 右 mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle) { //45度-135度 + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P)) { //45度-135度 // 下 mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle) { //135度-225度 + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P)) { //135度-225度 // 左 mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle) { //225度-315度 + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P)) { //225度-315度 // 上 mOnShakeListener.direction(Direction.DIRECTION_UP); } break; case DIRECTION_8:// 八个方向 - if (ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) { //0-22.5度和337.5度-360度 + if (multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) { //0-22.5度和337.5度-360度 // 右 mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle) { //22.5度 - 67.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P)) { //22.5度 - 67.5度 // 右下 mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle) {// 67.5度 - 112.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P)) {// 67.5度 - 112.5度 // 下 mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle) {// 112.5度 - 157.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P)) {// 112.5度 - 157.5度 // 左下 mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle) {// 157.5度 - 202.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P)) {// 157.5度 - 202.5度 // 左 mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle) {// 202.5度 - 247.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P)) {// 202.5度 - 247.5度 // 左上 mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle) {// 247.5度 - 292.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P)) {// 247.5度 - 292.5度 // 上 mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle) {// 292.5度 - 337.5度 + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P)) {// 292.5度 - 337.5度 // 右上 mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); } @@ -516,98 +544,102 @@ private void dealCallBackModeMove(double angle) { } } + /** + * CallBackMode.CALL_BACK_MODE_STATE_CHANGE 情况下 根据角度来判断方向,然后回调出去 + * @param angle 角度 + */ private void dealCallBackModeStateChange(double angle) { switch (mDirectionMode) { - case DIRECTION_2_HORIZONTAL:// 左右方向 - if ((ANGLE_0 <= angle && ANGLE_HORIZONTAL_2D_OF_0P > angle || ANGLE_HORIZONTAL_2D_OF_1P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + case DIRECTION_2_HORIZONTAL:// 横向 左右两个方向 + if ((multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) && tempDirection != Direction.DIRECTION_RIGHT) { //0-90度和270度-360度 并且当前不是右边方向 // 右 tempDirection = Direction.DIRECTION_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_HORIZONTAL_2D_OF_0P <= angle && ANGLE_HORIZONTAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P) && tempDirection != Direction.DIRECTION_LEFT) { //90度-270度 并且当前不是左边方向 // 左 tempDirection = Direction.DIRECTION_LEFT; mOnShakeListener.direction(Direction.DIRECTION_LEFT); } break; - case DIRECTION_2_VERTICAL:// 上下方向 - if (ANGLE_VERTICAL_2D_OF_0P <= angle && ANGLE_VERTICAL_2D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { + case DIRECTION_2_VERTICAL:// 纵向 上下两个方向 + if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN) { // 0度到-180度 并且当前不是下方向 // 下 tempDirection = Direction.DIRECTION_DOWN; mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_VERTICAL_2D_OF_1P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP) { + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360) && tempDirection != Direction.DIRECTION_UP) {// 180度到-360度 并且当前不是上方向 // 上 tempDirection = Direction.DIRECTION_UP; mOnShakeListener.direction(Direction.DIRECTION_UP); } break; case DIRECTION_4_ROTATE_0:// 四个方向 - if (ANGLE_4D_OF_0P <= angle && ANGLE_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN_RIGHT) {// 0度到-90度 并且当前不是右下方向 // 右下 tempDirection = Direction.DIRECTION_DOWN_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_4D_OF_1P <= angle && ANGLE_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P) && tempDirection != Direction.DIRECTION_DOWN_LEFT) {// 90度到-180度 并且当前不是左下方向 // 左下 tempDirection = Direction.DIRECTION_DOWN_LEFT; mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_4D_OF_2P <= angle && ANGLE_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P) && tempDirection != Direction.DIRECTION_UP_LEFT) {// 180度到-270度 并且当前不是左上方向 // 左上 tempDirection = Direction.DIRECTION_UP_LEFT; mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_4D_OF_3P <= angle && ANGLE_360 > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360) && tempDirection != Direction.DIRECTION_UP_RIGHT) {// 270度到-360度 并且当前不是右上方向 // 右上 tempDirection = Direction.DIRECTION_UP_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); } break; case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if ((ANGLE_0 <= angle && ANGLE_ROTATE45_4D_OF_0P > angle || ANGLE_ROTATE45_4D_OF_3P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + if ((multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) && tempDirection != Direction.DIRECTION_RIGHT) { //0-45度和315度-360度 并且当前不是右方向 // 右 tempDirection = Direction.DIRECTION_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_ROTATE45_4D_OF_0P <= angle && ANGLE_ROTATE45_4D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN) { + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN) { //45度-135度 并且当前不是下方向 // 下 tempDirection = Direction.DIRECTION_DOWN; mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_ROTATE45_4D_OF_1P <= angle && ANGLE_ROTATE45_4D_OF_2P > angle && tempDirection != Direction.DIRECTION_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P) && tempDirection != Direction.DIRECTION_LEFT) { //135度-225度 并且当前不是左方向 // 左 tempDirection = Direction.DIRECTION_LEFT; mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_ROTATE45_4D_OF_2P <= angle && ANGLE_ROTATE45_4D_OF_3P > angle && tempDirection != Direction.DIRECTION_UP) { + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P) && tempDirection != Direction.DIRECTION_UP) { //225度-315度 并且当前不是上方向 // 上 tempDirection = Direction.DIRECTION_UP; mOnShakeListener.direction(Direction.DIRECTION_UP); } break; case DIRECTION_8:// 八个方向 - if ((ANGLE_0 <= angle && ANGLE_8D_OF_0P > angle || ANGLE_8D_OF_7P <= angle && ANGLE_360 > angle) && tempDirection != Direction.DIRECTION_RIGHT) { + if ((multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) && tempDirection != Direction.DIRECTION_RIGHT) {//0-22.5度和337.5度-360度 并且当前不是右方向 // 右 tempDirection = Direction.DIRECTION_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (ANGLE_8D_OF_0P <= angle && ANGLE_8D_OF_1P > angle && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { //22.5度 - 67.5度 并且当前不是右下方向 // 右下 tempDirection = Direction.DIRECTION_DOWN_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (ANGLE_8D_OF_1P <= angle && ANGLE_8D_OF_2P > angle && tempDirection != Direction.DIRECTION_DOWN) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P) && tempDirection != Direction.DIRECTION_DOWN) {// 67.5度 - 112.5度 并且当前不是下方向 // 下 tempDirection = Direction.DIRECTION_DOWN; mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (ANGLE_8D_OF_2P <= angle && ANGLE_8D_OF_3P > angle && tempDirection != Direction.DIRECTION_DOWN_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P) && tempDirection != Direction.DIRECTION_DOWN_LEFT) {// 112.5度 - 157.5度 并且当前不是左下方向 // 左下 tempDirection = Direction.DIRECTION_DOWN_LEFT; mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (ANGLE_8D_OF_3P <= angle && ANGLE_8D_OF_4P > angle && tempDirection != Direction.DIRECTION_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P) && tempDirection != Direction.DIRECTION_LEFT) {// 157.5度 - 202.5度 并且当前不是左方向 // 左 tempDirection = Direction.DIRECTION_LEFT; mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (ANGLE_8D_OF_4P <= angle && ANGLE_8D_OF_5P > angle && tempDirection != Direction.DIRECTION_UP_LEFT) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P) && tempDirection != Direction.DIRECTION_UP_LEFT) {// 202.5度 - 247.5度 并且当前不是左上方向 // 左上 tempDirection = Direction.DIRECTION_UP_LEFT; mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (ANGLE_8D_OF_5P <= angle && ANGLE_8D_OF_6P > angle && tempDirection != Direction.DIRECTION_UP) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P) && tempDirection != Direction.DIRECTION_UP) {// 247.5度 - 292.5度 并且当前不是上方向 // 上 tempDirection = Direction.DIRECTION_UP; mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (ANGLE_8D_OF_6P <= angle && ANGLE_8D_OF_7P > angle && tempDirection != Direction.DIRECTION_UP_RIGHT) { + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P) && tempDirection != Direction.DIRECTION_UP_RIGHT) {// 292.5度 - 337.5度 并且当前不是右上方向 // 右上 tempDirection = Direction.DIRECTION_UP_RIGHT; mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); diff --git a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java index 86d9869..fc476af 100644 --- a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java +++ b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java @@ -2,12 +2,14 @@ import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.util.Log; import android.widget.TextView; import com.kongqw.rockerlibrary.view.RockerView; public class MainActivity extends AppCompatActivity { + private static final String TAG = "MainActivity"; private TextView mLogLeft; private TextView mLogRight; @@ -24,7 +26,7 @@ protected void onCreate(Bundle savedInstanceState) { //设置回调模式 rockerViewLeft.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE); // 监听摇动方向 - rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_8, new RockerView.OnShakeListener() { + rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_4_ROTATE_45, new RockerView.OnShakeListener() { @Override public void onStart() { mLogLeft.setText(null); @@ -33,6 +35,7 @@ public void onStart() { @Override public void direction(RockerView.Direction direction) { mLogLeft.setText("摇动方向 : " + getDirection(direction)); + Log.d(TAG,"摇动方向 : " + getDirection(direction)); } @Override @@ -54,6 +57,7 @@ public void onStart() { @Override public void angle(double angle) { mLogRight.setText("摇动角度 : " + angle); + Log.d(TAG,"摇动角度 : " + angle); } @Override From 02d5849b69ef6ac6395bb2e97b8d742d3fe6611d Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Mon, 14 Dec 2020 14:34:44 +0800 Subject: [PATCH 09/10] =?UTF-8?q?1=E3=80=81=E4=BD=BF=E7=94=A8=E7=AD=96?= =?UTF-8?q?=E7=95=A5=E6=A8=A1=E5=BC=8F=EF=BC=8C=E5=B0=86=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=91=87=E6=9D=86=E6=96=B9=E5=90=91=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E5=87=BA=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rockerlibrary/view/AngelConstants.java | 36 +++ .../view/Direction2HorizontalStrategy.java | 30 ++ .../view/Direction2VerticalStrategy.java | 33 ++ .../view/Direction4Rotate0Strategy.java | 47 +++ .../view/Direction4Rotate45Strategy.java | 47 +++ .../view/Direction8Strategy.java | 79 +++++ .../view/IDealRockerMoveStrategy.java | 21 ++ .../rockerlibrary/view/JudgmentUtil.java | 33 ++ .../kongqw/rockerlibrary/view/RockerView.java | 298 +++--------------- 9 files changed, 370 insertions(+), 254 deletions(-) create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java new file mode 100644 index 0000000..eb0114d --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java @@ -0,0 +1,36 @@ +package com.kongqw.rockerlibrary.view; + +public class AngelConstants { + // 角度 + static final double ANGLE_0 = 0; + static final double ANGLE_360 = 360; + + // 360°水平方向平分2份的边缘角度 + static final double ANGLE_HORIZONTAL_2D_OF_0P = 90; + static final double ANGLE_HORIZONTAL_2D_OF_1P = 270; + + // 360°垂直方向平分2份的边缘角度 + static final double ANGLE_VERTICAL_2D_OF_0P = 0; + static final double ANGLE_VERTICAL_2D_OF_1P = 180; + + // 360°平分4份的边缘角度 + static final double ANGLE_4D_OF_0P = 0; + static final double ANGLE_4D_OF_1P = 90; + static final double ANGLE_4D_OF_2P = 180; + static final double ANGLE_4D_OF_3P = 270; + // 360°平分4份的边缘角度(旋转45度) + static final double ANGLE_ROTATE45_4D_OF_0P = 45; + static final double ANGLE_ROTATE45_4D_OF_1P = 135; + static final double ANGLE_ROTATE45_4D_OF_2P = 225; + static final double ANGLE_ROTATE45_4D_OF_3P = 315; + + // 360°平分8份的边缘角度 + static final double ANGLE_8D_OF_0P = 22.5; + static final double ANGLE_8D_OF_1P = 67.5; + static final double ANGLE_8D_OF_2P = 112.5; + static final double ANGLE_8D_OF_3P = 157.5; + static final double ANGLE_8D_OF_4P = 202.5; + static final double ANGLE_8D_OF_5P = 247.5; + static final double ANGLE_8D_OF_6P = 292.5; + static final double ANGLE_8D_OF_7P = 337.5; +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java new file mode 100644 index 0000000..36ff61c --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java @@ -0,0 +1,30 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; +import static com.kongqw.rockerlibrary.view.AngelConstants.*; + +class Direction2HorizontalStrategy implements IDealRockerMoveStrategy { + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //0-90度和270度-360度 + // 右 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + } else if (JudgmentUtil.judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //90度-270度 + // 左 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if ((multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) { //0-90度和270度-360度 并且当前不是右边方向 + // 右 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) { //90度-270度 并且当前不是左边方向 + // 左 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java new file mode 100644 index 0000000..09b72d0 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java @@ -0,0 +1,33 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; +import static com.kongqw.rockerlibrary.view.AngelConstants.*; + +/** + * 纵向 上下两个方向 + */ +class Direction2VerticalStrategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) { // 0度到-180度 + // 下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360)) { // 180度到-360度 + // 上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if ((judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) { // 0度到-180度 并且当前不是下方向 + // 下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) { // 180度到-360度 并且当前不是上方向 + // 上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java new file mode 100644 index 0000000..a8c044f --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java @@ -0,0 +1,47 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; +import static com.kongqw.rockerlibrary.view.AngelConstants.*; + +/** + * 纵向 上下两个方向 + */ +class Direction4Rotate0Strategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P)) { // 0度到-90度 + // 右下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P)) { // 90度到-180度 + // 左下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P)) { // 180度到-270度 + // 左上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360)) { // 270度到-360度 + // 右上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_RIGHT) {// 0度到-90度 并且当前不是右下方向 + // 右下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_LEFT) {// 90度到-180度 并且当前不是左下方向 + // 左下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_LEFT) {// 180度到-270度 并且当前不是左上方向 + // 左上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_RIGHT) {// 270度到-360度 并且当前不是右上方向 + // 右上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java new file mode 100644 index 0000000..36eccf0 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java @@ -0,0 +1,47 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.AngelConstants.*; +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; + +/** + * 纵向 上下两个方向 + */ +class Direction4Rotate45Strategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) { //0-45度和315度-360度 + // 右 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, AngelConstants.ANGLE_ROTATE45_4D_OF_1P)) { //45度-135度 + // 下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, AngelConstants.ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P)) { //135度-225度 + // 左 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P)) { //225度-315度 + // 上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if ((multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) { //0-45度和315度-360度 并且当前不是右方向 + // 右 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) { //45度-135度 并且当前不是下方向 + // 下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) { //135度-225度 并且当前不是左方向 + // 左 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) { //225度-315度 并且当前不是上方向 + // 上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java new file mode 100644 index 0000000..19cc136 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java @@ -0,0 +1,79 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.AngelConstants.*; +import static com.kongqw.rockerlibrary.view.JudgmentUtil.judgmentIsInRange; +import static com.kongqw.rockerlibrary.view.JudgmentUtil.multiConditionJudgmentIsInRange; + +/** + * 纵向 上下两个方向 + */ +class Direction8Strategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) { //0-22.5度和337.5度-360度 + // 右 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P)) { //22.5度 - 67.5度 + // 右下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P)) {// 67.5度 - 112.5度 + // 下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P)) {// 112.5度 - 157.5度 + // 左下 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P)) {// 157.5度 - 202.5度 + // 左 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P)) {// 202.5度 - 247.5度 + // 左上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P)) {// 247.5度 - 292.5度 + // 上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P)) {// 292.5度 - 337.5度 + // 右上 + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + + if ((multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) {//0-22.5度和337.5度-360度 并且当前不是右方向 + // 右 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_RIGHT) { //22.5度 - 67.5度 并且当前不是右下方向 + // 右下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) {// 67.5度 - 112.5度 并且当前不是下方向 + // 下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_LEFT) {// 112.5度 - 157.5度 并且当前不是左下方向 + // 左下 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) {// 157.5度 - 202.5度 并且当前不是左方向 + // 左 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_LEFT) {// 202.5度 - 247.5度 并且当前不是左上方向 + // 左上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_LEFT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) {// 247.5度 - 292.5度 并且当前不是上方向 + // 上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_RIGHT) {// 292.5度 - 337.5度 并且当前不是右上方向 + // 右上 + rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_RIGHT); + rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); + } + + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java new file mode 100644 index 0000000..ff553c4 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java @@ -0,0 +1,21 @@ +package com.kongqw.rockerlibrary.view; + + +import com.kongqw.rockerlibrary.view.RockerView; + +public interface IDealRockerMoveStrategy { + + /** + * CallBackMode.CALL_BACK_MODE_MOVE 情况下 根据角度来判断方向,然后回调出去 + * + * @param angle 角度 + */ + void dealCallBackModeMove(RockerView rockerView, double angle); + + /** + * CallBackMode.CALL_BACK_MODE_STATE_CHANGE 情况下 根据角度来判断方向,然后回调出去 + * + * @param angle 角度 + */ + void dealCallBackModeStateChange(RockerView rockerView, double angle); +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java new file mode 100644 index 0000000..9815a00 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java @@ -0,0 +1,33 @@ +package com.kongqw.rockerlibrary.view; + +import static com.kongqw.rockerlibrary.view.AngelConstants.ANGLE_0; +import static com.kongqw.rockerlibrary.view.AngelConstants.ANGLE_360; + +public class JudgmentUtil { + + + /** + * 判断当前角度是否处于某多个区间 + * 判断targetAngle是否处于 0度-firstAngle度区间 以及 secondAngle度-360度 区间内 + * + * @param targetAngle 当前角度 + * @param firstAngle 区间左边的角度 + * @param secondAngle 区间右边的角度 + * @return 是否当前角度是否处于某多个区间 + */ + protected static boolean multiConditionJudgmentIsInRange(double targetAngle, double firstAngle, double secondAngle) { + return judgmentIsInRange(targetAngle, ANGLE_0, firstAngle) || judgmentIsInRange(targetAngle, secondAngle, ANGLE_360); + } + + /** + * 判断当前角度是否处于某个区间 + * + * @param targetAngle 当前角度 + * @param smallAngle 区间左边的角度 + * @param bigAngle 区间右边的角度 + * @return 是否当前角度是否处于某个区间 + */ + protected static boolean judgmentIsInRange(double targetAngle, double smallAngle, double bigAngle) { + return smallAngle <= targetAngle && bigAngle > targetAngle; + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index 75de0eb..b1c27cd 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -47,39 +47,27 @@ public class RockerView extends View { private CallBackMode mCallBackMode = CallBackMode.CALL_BACK_MODE_MOVE; private OnAngleChangeListener mOnAngleChangeListener; - private OnShakeListener mOnShakeListener; + private OnShakeListener OnShakeListener; + public OnShakeListener getOnShakeListener() { + return OnShakeListener; + } + + public void setOnShakeListener(OnShakeListener onShakeListener) { + this.OnShakeListener = onShakeListener; + } + + private IDealRockerMoveStrategy mDealRockerMoveStrategy; private DirectionMode mDirectionMode; private Direction tempDirection = Direction.DIRECTION_CENTER; - // 角度 - private static final double ANGLE_0 = 0; - private static final double ANGLE_360 = 360; - // 360°水平方向平分2份的边缘角度 - private static final double ANGLE_HORIZONTAL_2D_OF_0P = 90; - private static final double ANGLE_HORIZONTAL_2D_OF_1P = 270; - // 360°垂直方向平分2份的边缘角度 - private static final double ANGLE_VERTICAL_2D_OF_0P = 0; - private static final double ANGLE_VERTICAL_2D_OF_1P = 180; - // 360°平分4份的边缘角度 - private static final double ANGLE_4D_OF_0P = 0; - private static final double ANGLE_4D_OF_1P = 90; - private static final double ANGLE_4D_OF_2P = 180; - private static final double ANGLE_4D_OF_3P = 270; - // 360°平分4份的边缘角度(旋转45度) - private static final double ANGLE_ROTATE45_4D_OF_0P = 45; - private static final double ANGLE_ROTATE45_4D_OF_1P = 135; - private static final double ANGLE_ROTATE45_4D_OF_2P = 225; - private static final double ANGLE_ROTATE45_4D_OF_3P = 315; - - // 360°平分8份的边缘角度 - private static final double ANGLE_8D_OF_0P = 22.5; - private static final double ANGLE_8D_OF_1P = 67.5; - private static final double ANGLE_8D_OF_2P = 112.5; - private static final double ANGLE_8D_OF_3P = 157.5; - private static final double ANGLE_8D_OF_4P = 202.5; - private static final double ANGLE_8D_OF_5P = 247.5; - private static final double ANGLE_8D_OF_6P = 292.5; - private static final double ANGLE_8D_OF_7P = 337.5; + + public Direction getTempDirection() { + return tempDirection; + } + + public void setTempDirection(Direction tempDirection) { + this.tempDirection = tempDirection; + } // 摇杆可移动区域背景 private static final int AREA_BACKGROUND_MODE_PIC = 0; @@ -407,8 +395,8 @@ private void callBackStart() { if (null != mOnAngleChangeListener) { mOnAngleChangeListener.onStart(); } - if (null != mOnShakeListener) { - mOnShakeListener.onStart(); + if (null != OnShakeListener) { + OnShakeListener.onStart(); } } @@ -424,231 +412,15 @@ private void callBack(double angle) { mOnAngleChangeListener.angle(angle); } // 方向的还得做一系列的逻辑判断 - if (null != mOnShakeListener) { + if (null != OnShakeListener) { if (CallBackMode.CALL_BACK_MODE_MOVE == mCallBackMode) { - dealCallBackModeMove(angle); + mDealRockerMoveStrategy.dealCallBackModeMove(this, angle); } else if (CallBackMode.CALL_BACK_MODE_STATE_CHANGE == mCallBackMode) { - dealCallBackModeStateChange(angle); + mDealRockerMoveStrategy.dealCallBackModeStateChange(this, angle); } } } - /** - * 判断当前角度是否处于某个区间 - * - * @param targetAngle 当前角度 - * @param smallAngle 区间左边的角度 - * @param bigAngle 区间右边的角度 - * @return 是否当前角度是否处于某个区间 - */ - private boolean judgmentIsInRange(double targetAngle, double smallAngle, double bigAngle) { - return smallAngle <= targetAngle && bigAngle > targetAngle; - } - - /** - * 判断当前角度是否处于某多个区间 - * 判断targetAngle是否处于 0度-firstAngle度区间 以及 secondAngle度-360度 区间内 - * - * @param targetAngle 当前角度 - * @param firstAngle 区间左边的角度 - * @param secondAngle 区间右边的角度 - * @return 是否当前角度是否处于某多个区间 - */ - private boolean multiConditionJudgmentIsInRange(double targetAngle, double firstAngle, double secondAngle) { - return judgmentIsInRange(targetAngle, ANGLE_0, firstAngle) || judgmentIsInRange(targetAngle, secondAngle, ANGLE_360); - } - - /** - * CallBackMode.CALL_BACK_MODE_MOVE 情况下 根据角度来判断方向,然后回调出去 - * @param angle 角度 - */ - private void dealCallBackModeMove(double angle) { - switch (mDirectionMode) { - case DIRECTION_2_HORIZONTAL:// 横向 左右两个方向 - if (multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //0-90度和270度-360度 - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //90度-270度 - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } - break; - case DIRECTION_2_VERTICAL:// 纵向 上下两个方向 - if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) { // 0度到-180度 - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360)) { // 180度到-360度 - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_4_ROTATE_0:// 四个方向 - if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P)) { // 0度到-90度 - // 右下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P)) { // 90度到-180度 - // 左下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P)) { // 180度到-270度 - // 左上 - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360)) { // 270度到-360度 - // 右上 - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if (multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) { //0-45度和315度-360度 - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P)) { //45度-135度 - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P)) { //135度-225度 - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P)) { //225度-315度 - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_8:// 八个方向 - if (multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) { //0-22.5度和337.5度-360度 - // 右 - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P)) { //22.5度 - 67.5度 - // 右下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P)) {// 67.5度 - 112.5度 - // 下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P)) {// 112.5度 - 157.5度 - // 左下 - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P)) {// 157.5度 - 202.5度 - // 左 - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P)) {// 202.5度 - 247.5度 - // 左上 - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P)) {// 247.5度 - 292.5度 - // 上 - mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P)) {// 292.5度 - 337.5度 - // 右上 - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - default: - break; - } - } - - /** - * CallBackMode.CALL_BACK_MODE_STATE_CHANGE 情况下 根据角度来判断方向,然后回调出去 - * @param angle 角度 - */ - private void dealCallBackModeStateChange(double angle) { - switch (mDirectionMode) { - case DIRECTION_2_HORIZONTAL:// 横向 左右两个方向 - if ((multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) && tempDirection != Direction.DIRECTION_RIGHT) { //0-90度和270度-360度 并且当前不是右边方向 - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P) && tempDirection != Direction.DIRECTION_LEFT) { //90度-270度 并且当前不是左边方向 - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } - break; - case DIRECTION_2_VERTICAL:// 纵向 上下两个方向 - if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN) { // 0度到-180度 并且当前不是下方向 - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360) && tempDirection != Direction.DIRECTION_UP) {// 180度到-360度 并且当前不是上方向 - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_4_ROTATE_0:// 四个方向 - if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN_RIGHT) {// 0度到-90度 并且当前不是右下方向 - // 右下 - tempDirection = Direction.DIRECTION_DOWN_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P) && tempDirection != Direction.DIRECTION_DOWN_LEFT) {// 90度到-180度 并且当前不是左下方向 - // 左下 - tempDirection = Direction.DIRECTION_DOWN_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P) && tempDirection != Direction.DIRECTION_UP_LEFT) {// 180度到-270度 并且当前不是左上方向 - // 左上 - tempDirection = Direction.DIRECTION_UP_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360) && tempDirection != Direction.DIRECTION_UP_RIGHT) {// 270度到-360度 并且当前不是右上方向 - // 右上 - tempDirection = Direction.DIRECTION_UP_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - case DIRECTION_4_ROTATE_45:// 四个方向 旋转45度 - if ((multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) && tempDirection != Direction.DIRECTION_RIGHT) { //0-45度和315度-360度 并且当前不是右方向 - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN) { //45度-135度 并且当前不是下方向 - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P) && tempDirection != Direction.DIRECTION_LEFT) { //135度-225度 并且当前不是左方向 - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P) && tempDirection != Direction.DIRECTION_UP) { //225度-315度 并且当前不是上方向 - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } - break; - case DIRECTION_8:// 八个方向 - if ((multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) && tempDirection != Direction.DIRECTION_RIGHT) {//0-22.5度和337.5度-360度 并且当前不是右方向 - // 右 - tempDirection = Direction.DIRECTION_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P) && tempDirection != Direction.DIRECTION_DOWN_RIGHT) { //22.5度 - 67.5度 并且当前不是右下方向 - // 右下 - tempDirection = Direction.DIRECTION_DOWN_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P) && tempDirection != Direction.DIRECTION_DOWN) {// 67.5度 - 112.5度 并且当前不是下方向 - // 下 - tempDirection = Direction.DIRECTION_DOWN; - mOnShakeListener.direction(Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P) && tempDirection != Direction.DIRECTION_DOWN_LEFT) {// 112.5度 - 157.5度 并且当前不是左下方向 - // 左下 - tempDirection = Direction.DIRECTION_DOWN_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P) && tempDirection != Direction.DIRECTION_LEFT) {// 157.5度 - 202.5度 并且当前不是左方向 - // 左 - tempDirection = Direction.DIRECTION_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P) && tempDirection != Direction.DIRECTION_UP_LEFT) {// 202.5度 - 247.5度 并且当前不是左上方向 - // 左上 - tempDirection = Direction.DIRECTION_UP_LEFT; - mOnShakeListener.direction(Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P) && tempDirection != Direction.DIRECTION_UP) {// 247.5度 - 292.5度 并且当前不是上方向 - // 上 - tempDirection = Direction.DIRECTION_UP; - mOnShakeListener.direction(Direction.DIRECTION_UP); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P) && tempDirection != Direction.DIRECTION_UP_RIGHT) {// 292.5度 - 337.5度 并且当前不是右上方向 - // 右上 - tempDirection = Direction.DIRECTION_UP_RIGHT; - mOnShakeListener.direction(Direction.DIRECTION_UP_RIGHT); - } - break; - default: - break; - } - } /** * 回调 @@ -661,8 +433,8 @@ private void callBackFinish() { if (null != mOnAngleChangeListener) { mOnAngleChangeListener.onFinish(); } - if (null != mOnShakeListener) { - mOnShakeListener.onFinish(); + if (null != OnShakeListener) { + OnShakeListener.onFinish(); } } @@ -770,7 +542,25 @@ public void setOnAngleChangeListener(OnAngleChangeListener listener) { */ public void setOnShakeListener(DirectionMode directionMode, OnShakeListener listener) { mDirectionMode = directionMode; - mOnShakeListener = listener; + mDealRockerMoveStrategy = initStrategy(mDirectionMode); + OnShakeListener = listener; + } + + private IDealRockerMoveStrategy initStrategy(DirectionMode mDirectionMode) { + IDealRockerMoveStrategy dealRockerMoveStrategy = new Direction2HorizontalStrategy(); + //根据不同的方向来生成不同的策略 + if (mDirectionMode == DirectionMode.DIRECTION_2_HORIZONTAL) { + dealRockerMoveStrategy = new Direction2HorizontalStrategy(); + } else if (mDirectionMode == DirectionMode.DIRECTION_2_VERTICAL) { + dealRockerMoveStrategy = new Direction2VerticalStrategy(); + } else if (mDirectionMode == DirectionMode.DIRECTION_4_ROTATE_0) { + dealRockerMoveStrategy = new Direction4Rotate0Strategy(); + } else if (mDirectionMode == DirectionMode.DIRECTION_4_ROTATE_45) { + dealRockerMoveStrategy = new Direction4Rotate45Strategy(); + } else if (mDirectionMode == DirectionMode.DIRECTION_8) { + dealRockerMoveStrategy = new Direction8Strategy(); + } + return dealRockerMoveStrategy; } /** From 0157ccd389d3706f833864cc2e803b0453157c23 Mon Sep 17 00:00:00 2001 From: ouyangpeng Date: Mon, 14 Dec 2020 14:48:06 +0800 Subject: [PATCH 10/10] =?UTF-8?q?1=E3=80=81=E5=B0=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8A=BD=E5=8F=96=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rockerlibrary/view/AngelConstants.java | 45 +++---- .../rockerlibrary/view/CallBackMode.java | 15 +++ .../kongqw/rockerlibrary/view/Direction.java | 43 +++++++ .../view/Direction2VerticalStrategy.java | 33 ----- .../view/Direction4Rotate0Strategy.java | 47 ------- .../view/Direction8Strategy.java | 79 ------------ .../rockerlibrary/view/DirectionMode.java | 27 ++++ .../rockerlibrary/view/JudgmentUtil.java | 6 +- .../view/OnAngleChangeListener.java | 19 +++ .../rockerlibrary/view/OnShakeListener.java | 19 +++ .../kongqw/rockerlibrary/view/RockerView.java | 120 +----------------- .../Direction2HorizontalStrategy.java | 24 ++-- .../strategy/Direction2VerticalStrategy.java | 36 ++++++ .../strategy/Direction4Rotate0Strategy.java | 50 ++++++++ .../Direction4Rotate45Strategy.java | 40 +++--- .../view/strategy/Direction8Strategy.java | 82 ++++++++++++ .../IDealRockerMoveStrategy.java | 2 +- .../kongqw/kqwrockerdemo/MainActivity.java | 15 ++- 18 files changed, 370 insertions(+), 332 deletions(-) create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/CallBackMode.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction.java delete mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java delete mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java delete mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/DirectionMode.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnAngleChangeListener.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnShakeListener.java rename KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/{ => strategy}/Direction2HorizontalStrategy.java (50%) create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2VerticalStrategy.java create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate0Strategy.java rename KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/{ => strategy}/Direction4Rotate45Strategy.java (50%) create mode 100644 KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction8Strategy.java rename KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/{ => strategy}/IDealRockerMoveStrategy.java (91%) diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java index eb0114d..14f4e6c 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/AngelConstants.java @@ -2,35 +2,36 @@ public class AngelConstants { // 角度 - static final double ANGLE_0 = 0; - static final double ANGLE_360 = 360; + public static final double ANGLE_0 = 0; + public static final double ANGLE_360 = 360; // 360°水平方向平分2份的边缘角度 - static final double ANGLE_HORIZONTAL_2D_OF_0P = 90; - static final double ANGLE_HORIZONTAL_2D_OF_1P = 270; + public static final double ANGLE_HORIZONTAL_2D_OF_0P = 90; + public static final double ANGLE_HORIZONTAL_2D_OF_1P = 270; // 360°垂直方向平分2份的边缘角度 - static final double ANGLE_VERTICAL_2D_OF_0P = 0; - static final double ANGLE_VERTICAL_2D_OF_1P = 180; + public static final double ANGLE_VERTICAL_2D_OF_0P = 0; + public static final double ANGLE_VERTICAL_2D_OF_1P = 180; // 360°平分4份的边缘角度 - static final double ANGLE_4D_OF_0P = 0; - static final double ANGLE_4D_OF_1P = 90; - static final double ANGLE_4D_OF_2P = 180; - static final double ANGLE_4D_OF_3P = 270; + public static final double ANGLE_4D_OF_0P = 0; + public static final double ANGLE_4D_OF_1P = 90; + public static final double ANGLE_4D_OF_2P = 180; + public static final double ANGLE_4D_OF_3P = 270; + // 360°平分4份的边缘角度(旋转45度) - static final double ANGLE_ROTATE45_4D_OF_0P = 45; - static final double ANGLE_ROTATE45_4D_OF_1P = 135; - static final double ANGLE_ROTATE45_4D_OF_2P = 225; - static final double ANGLE_ROTATE45_4D_OF_3P = 315; + public static final double ANGLE_ROTATE45_4D_OF_0P = 45; + public static final double ANGLE_ROTATE45_4D_OF_1P = 135; + public static final double ANGLE_ROTATE45_4D_OF_2P = 225; + public static final double ANGLE_ROTATE45_4D_OF_3P = 315; // 360°平分8份的边缘角度 - static final double ANGLE_8D_OF_0P = 22.5; - static final double ANGLE_8D_OF_1P = 67.5; - static final double ANGLE_8D_OF_2P = 112.5; - static final double ANGLE_8D_OF_3P = 157.5; - static final double ANGLE_8D_OF_4P = 202.5; - static final double ANGLE_8D_OF_5P = 247.5; - static final double ANGLE_8D_OF_6P = 292.5; - static final double ANGLE_8D_OF_7P = 337.5; + public static final double ANGLE_8D_OF_0P = 22.5; + public static final double ANGLE_8D_OF_1P = 67.5; + public static final double ANGLE_8D_OF_2P = 112.5; + public static final double ANGLE_8D_OF_3P = 157.5; + public static final double ANGLE_8D_OF_4P = 202.5; + public static final double ANGLE_8D_OF_5P = 247.5; + public static final double ANGLE_8D_OF_6P = 292.5; + public static final double ANGLE_8D_OF_7P = 337.5; } diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/CallBackMode.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/CallBackMode.java new file mode 100644 index 0000000..ff2237a --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/CallBackMode.java @@ -0,0 +1,15 @@ +package com.kongqw.rockerlibrary.view; + +/** + * 回调模式 + */ +public enum CallBackMode { + /** + * 有移动就立刻回调 + */ + CALL_BACK_MODE_MOVE, + /** + * 只有状态变化的时候才回调 + */ + CALL_BACK_MODE_STATE_CHANGE +} \ No newline at end of file diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction.java new file mode 100644 index 0000000..eba47a8 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction.java @@ -0,0 +1,43 @@ +package com.kongqw.rockerlibrary.view; + +/** + * 方向 + */ +public enum Direction { + /** + * 左 + */ + DIRECTION_LEFT, + /** + * 右 + */ + DIRECTION_RIGHT, + /** + * 上 + */ + DIRECTION_UP, + /** + * 下 + */ + DIRECTION_DOWN, + /** + * 左上 + */ + DIRECTION_UP_LEFT, + /** + * 右上 + */ + DIRECTION_UP_RIGHT, + /** + * 左下 + */ + DIRECTION_DOWN_LEFT, + /** + * 右下 + */ + DIRECTION_DOWN_RIGHT, + /** + * 中间 + */ + DIRECTION_CENTER +} \ No newline at end of file diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java deleted file mode 100644 index 09b72d0..0000000 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2VerticalStrategy.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.kongqw.rockerlibrary.view; - -import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; -import static com.kongqw.rockerlibrary.view.AngelConstants.*; - -/** - * 纵向 上下两个方向 - */ -class Direction2VerticalStrategy implements IDealRockerMoveStrategy{ - @Override - public void dealCallBackModeMove(RockerView rockerView, double angle) { - if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) { // 0度到-180度 - // 下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360)) { // 180度到-360度 - // 上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); - } - } - - @Override - public void dealCallBackModeStateChange(RockerView rockerView, double angle) { - if ((judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) { // 0度到-180度 并且当前不是下方向 - // 下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) { // 180度到-360度 并且当前不是上方向 - // 上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); - } - } -} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java deleted file mode 100644 index a8c044f..0000000 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate0Strategy.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.kongqw.rockerlibrary.view; - -import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; -import static com.kongqw.rockerlibrary.view.AngelConstants.*; - -/** - * 纵向 上下两个方向 - */ -class Direction4Rotate0Strategy implements IDealRockerMoveStrategy{ - @Override - public void dealCallBackModeMove(RockerView rockerView, double angle) { - if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P)) { // 0度到-90度 - // 右下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P)) { // 90度到-180度 - // 左下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P)) { // 180度到-270度 - // 左上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360)) { // 270度到-360度 - // 右上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); - } - } - - @Override - public void dealCallBackModeStateChange(RockerView rockerView, double angle) { - if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_RIGHT) {// 0度到-90度 并且当前不是右下方向 - // 右下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_LEFT) {// 90度到-180度 并且当前不是左下方向 - // 左下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_LEFT) {// 180度到-270度 并且当前不是左上方向 - // 左上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_RIGHT) {// 270度到-360度 并且当前不是右上方向 - // 右上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); - } - } -} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java deleted file mode 100644 index 19cc136..0000000 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction8Strategy.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.kongqw.rockerlibrary.view; - -import static com.kongqw.rockerlibrary.view.AngelConstants.*; -import static com.kongqw.rockerlibrary.view.JudgmentUtil.judgmentIsInRange; -import static com.kongqw.rockerlibrary.view.JudgmentUtil.multiConditionJudgmentIsInRange; - -/** - * 纵向 上下两个方向 - */ -class Direction8Strategy implements IDealRockerMoveStrategy{ - @Override - public void dealCallBackModeMove(RockerView rockerView, double angle) { - if (multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) { //0-22.5度和337.5度-360度 - // 右 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P)) { //22.5度 - 67.5度 - // 右下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P)) {// 67.5度 - 112.5度 - // 下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P)) {// 112.5度 - 157.5度 - // 左下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P)) {// 157.5度 - 202.5度 - // 左 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P)) {// 202.5度 - 247.5度 - // 左上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P)) {// 247.5度 - 292.5度 - // 上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P)) {// 292.5度 - 337.5度 - // 右上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); - } - } - - @Override - public void dealCallBackModeStateChange(RockerView rockerView, double angle) { - - if ((multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) {//0-22.5度和337.5度-360度 并且当前不是右方向 - // 右 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); - - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_RIGHT) { //22.5度 - 67.5度 并且当前不是右下方向 - // 右下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) {// 67.5度 - 112.5度 并且当前不是下方向 - // 下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN_LEFT) {// 112.5度 - 157.5度 并且当前不是左下方向 - // 左下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) {// 157.5度 - 202.5度 并且当前不是左方向 - // 左 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_LEFT) {// 202.5度 - 247.5度 并且当前不是左上方向 - // 左上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) {// 247.5度 - 292.5度 并且当前不是上方向 - // 上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); - } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP_RIGHT) {// 292.5度 - 337.5度 并且当前不是右上方向 - // 右上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP_RIGHT); - } - - } -} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/DirectionMode.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/DirectionMode.java new file mode 100644 index 0000000..55919ac --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/DirectionMode.java @@ -0,0 +1,27 @@ +package com.kongqw.rockerlibrary.view; + +/** + * 摇杆支持几个方向 + */ +public enum DirectionMode { + /** + * + */ + DIRECTION_2_HORIZONTAL,// 横向 左右两个方向 + /** + * + */ + DIRECTION_2_VERTICAL, // 纵向 上下两个方向 + /** + * + */ + DIRECTION_4_ROTATE_0, // 四个方向 + /** + * + */ + DIRECTION_4_ROTATE_45, // 四个方向 旋转45度 + /** + * + */ + DIRECTION_8 // 八个方向 +} \ No newline at end of file diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java index 9815a00..0751e84 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/JudgmentUtil.java @@ -4,8 +4,6 @@ import static com.kongqw.rockerlibrary.view.AngelConstants.ANGLE_360; public class JudgmentUtil { - - /** * 判断当前角度是否处于某多个区间 * 判断targetAngle是否处于 0度-firstAngle度区间 以及 secondAngle度-360度 区间内 @@ -15,7 +13,7 @@ public class JudgmentUtil { * @param secondAngle 区间右边的角度 * @return 是否当前角度是否处于某多个区间 */ - protected static boolean multiConditionJudgmentIsInRange(double targetAngle, double firstAngle, double secondAngle) { + public static boolean multiConditionJudgmentIsInRange(double targetAngle, double firstAngle, double secondAngle) { return judgmentIsInRange(targetAngle, ANGLE_0, firstAngle) || judgmentIsInRange(targetAngle, secondAngle, ANGLE_360); } @@ -27,7 +25,7 @@ protected static boolean multiConditionJudgmentIsInRange(double targetAngle, dou * @param bigAngle 区间右边的角度 * @return 是否当前角度是否处于某个区间 */ - protected static boolean judgmentIsInRange(double targetAngle, double smallAngle, double bigAngle) { + public static boolean judgmentIsInRange(double targetAngle, double smallAngle, double bigAngle) { return smallAngle <= targetAngle && bigAngle > targetAngle; } } diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnAngleChangeListener.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnAngleChangeListener.java new file mode 100644 index 0000000..c7a1c8d --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnAngleChangeListener.java @@ -0,0 +1,19 @@ +package com.kongqw.rockerlibrary.view; + +/** + * 摇动角度的监听接口 + */ +public interface OnAngleChangeListener { + // 开始 + void onStart(); + + /** + * 摇杆角度变化 + * + * @param angle 角度[0,360) + */ + void angle(double angle); + + // 结束 + void onFinish(); +} \ No newline at end of file diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnShakeListener.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnShakeListener.java new file mode 100644 index 0000000..c01a442 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/OnShakeListener.java @@ -0,0 +1,19 @@ +package com.kongqw.rockerlibrary.view; + +/** + * 摇动方向监听接口 + */ +public interface OnShakeListener { + // 开始 + void onStart(); + + /** + * 摇动方向 + * + * @param direction 方向 + */ + void direction(Direction direction); + + // 结束 + void onFinish(); +} \ No newline at end of file diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java index b1c27cd..fc57ce4 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/RockerView.java @@ -20,6 +20,12 @@ import com.kongqw.rockerlibrary.Logger; import com.kongqw.rockerlibrary.R; +import com.kongqw.rockerlibrary.view.strategy.Direction2HorizontalStrategy; +import com.kongqw.rockerlibrary.view.strategy.Direction2VerticalStrategy; +import com.kongqw.rockerlibrary.view.strategy.Direction4Rotate0Strategy; +import com.kongqw.rockerlibrary.view.strategy.Direction4Rotate45Strategy; +import com.kongqw.rockerlibrary.view.strategy.Direction8Strategy; +import com.kongqw.rockerlibrary.view.strategy.IDealRockerMoveStrategy; /** * Created by kqw on 2016/8/30. @@ -438,15 +444,7 @@ private void callBackFinish() { } } - /** - * 回调模式 - */ - public enum CallBackMode { - // 有移动就立刻回调 - CALL_BACK_MODE_MOVE, - // 只有状态变化的时候才回调 - CALL_BACK_MODE_STATE_CHANGE - } + /** * 设置回调模式 @@ -457,74 +455,6 @@ public void setCallBackMode(CallBackMode mode) { mCallBackMode = mode; } - /** - * 摇杆支持几个方向 - */ - public enum DirectionMode { - /** - * - */ - DIRECTION_2_HORIZONTAL,// 横向 左右两个方向 - /** - * - */ - DIRECTION_2_VERTICAL, // 纵向 上下两个方向 - /** - * - */ - DIRECTION_4_ROTATE_0, // 四个方向 - /** - * - */ - DIRECTION_4_ROTATE_45, // 四个方向 旋转45度 - /** - * - */ - DIRECTION_8 // 八个方向 - } - - /** - * 方向 - */ - public enum Direction { - /** - * 左 - */ - DIRECTION_LEFT, - /** - * 右 - */ - DIRECTION_RIGHT, - /** - * 上 - */ - DIRECTION_UP, - /** - * 下 - */ - DIRECTION_DOWN, - /** - * 左上 - */ - DIRECTION_UP_LEFT, - /** - * 右上 - */ - DIRECTION_UP_RIGHT, - /** - * 左下 - */ - DIRECTION_DOWN_LEFT, - /** - * 右下 - */ - DIRECTION_DOWN_RIGHT, - /** - * 中间 - */ - DIRECTION_CENTER - } - /** * 添加摇杆摇动角度的监听 * @@ -562,40 +492,4 @@ private IDealRockerMoveStrategy initStrategy(DirectionMode mDirectionMode) { } return dealRockerMoveStrategy; } - - /** - * 摇动方向监听接口 - */ - public interface OnShakeListener { - // 开始 - void onStart(); - - /** - * 摇动方向 - * - * @param direction 方向 - */ - void direction(Direction direction); - - // 结束 - void onFinish(); - } - - /** - * 摇动角度的监听接口 - */ - public interface OnAngleChangeListener { - // 开始 - void onStart(); - - /** - * 摇杆角度变化 - * - * @param angle 角度[0,360) - */ - void angle(double angle); - - // 结束 - void onFinish(); - } } diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2HorizontalStrategy.java similarity index 50% rename from KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java rename to KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2HorizontalStrategy.java index 36ff61c..9d61e04 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction2HorizontalStrategy.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2HorizontalStrategy.java @@ -1,30 +1,34 @@ -package com.kongqw.rockerlibrary.view; +package com.kongqw.rockerlibrary.view.strategy; + +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.JudgmentUtil; +import com.kongqw.rockerlibrary.view.RockerView; import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; import static com.kongqw.rockerlibrary.view.AngelConstants.*; -class Direction2HorizontalStrategy implements IDealRockerMoveStrategy { +public class Direction2HorizontalStrategy implements IDealRockerMoveStrategy { @Override public void dealCallBackModeMove(RockerView rockerView, double angle) { if (multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //0-90度和270度-360度 // 右 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); } else if (JudgmentUtil.judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) { //90度-270度 // 左 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); } } @Override public void dealCallBackModeStateChange(RockerView rockerView, double angle) { - if ((multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) { //0-90度和270度-360度 并且当前不是右边方向 + if ((multiConditionJudgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P)) && rockerView.getTempDirection() != Direction.DIRECTION_RIGHT) { //0-90度和270度-360度 并且当前不是右边方向 // 右 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) { //90度-270度 并且当前不是左边方向 + rockerView.setTempDirection(Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_HORIZONTAL_2D_OF_0P, ANGLE_HORIZONTAL_2D_OF_1P) && rockerView.getTempDirection() != Direction.DIRECTION_LEFT) { //90度-270度 并且当前不是左边方向 // 左 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + rockerView.setTempDirection(Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); } } } diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2VerticalStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2VerticalStrategy.java new file mode 100644 index 0000000..60c7883 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction2VerticalStrategy.java @@ -0,0 +1,36 @@ +package com.kongqw.rockerlibrary.view.strategy; + +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.RockerView; + +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; +import static com.kongqw.rockerlibrary.view.AngelConstants.*; + +/** + * 纵向 上下两个方向 + */ +public class Direction2VerticalStrategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) { // 0度到-180度 + // 下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360)) { // 180度到-360度 + // 上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if ((judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_0P, ANGLE_VERTICAL_2D_OF_1P)) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN) { // 0度到-180度 并且当前不是下方向 + // 下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_VERTICAL_2D_OF_1P, ANGLE_360) && rockerView.getTempDirection() != Direction.DIRECTION_UP) { // 180度到-360度 并且当前不是上方向 + // 上 + rockerView.setTempDirection(Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate0Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate0Strategy.java new file mode 100644 index 0000000..3be5a49 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate0Strategy.java @@ -0,0 +1,50 @@ +package com.kongqw.rockerlibrary.view.strategy; + +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.RockerView; + +import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; +import static com.kongqw.rockerlibrary.view.AngelConstants.*; + +/** + * 纵向 上下两个方向 + */ +public class Direction4Rotate0Strategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P)) { // 0度到-90度 + // 右下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P)) { // 90度到-180度 + // 左下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P)) { // 180度到-270度 + // 左上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360)) { // 270度到-360度 + // 右上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_RIGHT); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + if (judgmentIsInRange(angle, ANGLE_4D_OF_0P, ANGLE_4D_OF_1P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN_RIGHT) {// 0度到-90度 并且当前不是右下方向 + // 右下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_1P, ANGLE_4D_OF_2P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN_LEFT) {// 90度到-180度 并且当前不是左下方向 + // 左下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_2P, ANGLE_4D_OF_3P) && rockerView.getTempDirection() != Direction.DIRECTION_UP_LEFT) {// 180度到-270度 并且当前不是左上方向 + // 左上 + rockerView.setTempDirection(Direction.DIRECTION_UP_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_4D_OF_3P, ANGLE_360) && rockerView.getTempDirection() != Direction.DIRECTION_UP_RIGHT) {// 270度到-360度 并且当前不是右上方向 + // 右上 + rockerView.setTempDirection(Direction.DIRECTION_UP_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_RIGHT); + } + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate45Strategy.java similarity index 50% rename from KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java rename to KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate45Strategy.java index 36eccf0..a95d38a 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/Direction4Rotate45Strategy.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction4Rotate45Strategy.java @@ -1,4 +1,8 @@ -package com.kongqw.rockerlibrary.view; +package com.kongqw.rockerlibrary.view.strategy; + +import com.kongqw.rockerlibrary.view.AngelConstants; +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.RockerView; import static com.kongqw.rockerlibrary.view.AngelConstants.*; import static com.kongqw.rockerlibrary.view.JudgmentUtil.*; @@ -6,42 +10,42 @@ /** * 纵向 上下两个方向 */ -class Direction4Rotate45Strategy implements IDealRockerMoveStrategy{ +public class Direction4Rotate45Strategy implements IDealRockerMoveStrategy{ @Override public void dealCallBackModeMove(RockerView rockerView, double angle) { if (multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) { //0-45度和315度-360度 // 右 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, AngelConstants.ANGLE_ROTATE45_4D_OF_1P)) { //45度-135度 // 下 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); } else if (judgmentIsInRange(angle, AngelConstants.ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P)) { //135度-225度 // 左 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P)) { //225度-315度 // 上 - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); } } @Override public void dealCallBackModeStateChange(RockerView rockerView, double angle) { - if ((multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_RIGHT) { //0-45度和315度-360度 并且当前不是右方向 + if ((multiConditionJudgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_3P)) && rockerView.getTempDirection() != Direction.DIRECTION_RIGHT) { //0-45度和315度-360度 并且当前不是右方向 // 右 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_RIGHT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_RIGHT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_DOWN) { //45度-135度 并且当前不是下方向 + rockerView.setTempDirection(Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_0P, ANGLE_ROTATE45_4D_OF_1P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN) { //45度-135度 并且当前不是下方向 // 下 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_DOWN); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_DOWN); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_LEFT) { //135度-225度 并且当前不是左方向 + rockerView.setTempDirection(Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_1P, ANGLE_ROTATE45_4D_OF_2P) && rockerView.getTempDirection() != Direction.DIRECTION_LEFT) { //135度-225度 并且当前不是左方向 // 左 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_LEFT); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_LEFT); - } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P) && rockerView.getTempDirection() != RockerView.Direction.DIRECTION_UP) { //225度-315度 并且当前不是上方向 + rockerView.setTempDirection(Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_ROTATE45_4D_OF_2P, ANGLE_ROTATE45_4D_OF_3P) && rockerView.getTempDirection() != Direction.DIRECTION_UP) { //225度-315度 并且当前不是上方向 // 上 - rockerView.setTempDirection(RockerView.Direction.DIRECTION_UP); - rockerView.getOnShakeListener().direction(RockerView.Direction.DIRECTION_UP); + rockerView.setTempDirection(Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); } } } diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction8Strategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction8Strategy.java new file mode 100644 index 0000000..df01862 --- /dev/null +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/Direction8Strategy.java @@ -0,0 +1,82 @@ +package com.kongqw.rockerlibrary.view.strategy; + +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.RockerView; + +import static com.kongqw.rockerlibrary.view.AngelConstants.*; +import static com.kongqw.rockerlibrary.view.JudgmentUtil.judgmentIsInRange; +import static com.kongqw.rockerlibrary.view.JudgmentUtil.multiConditionJudgmentIsInRange; + +/** + * 纵向 上下两个方向 + */ +public class Direction8Strategy implements IDealRockerMoveStrategy{ + @Override + public void dealCallBackModeMove(RockerView rockerView, double angle) { + if (multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) { //0-22.5度和337.5度-360度 + // 右 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P)) { //22.5度 - 67.5度 + // 右下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P)) {// 67.5度 - 112.5度 + // 下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P)) {// 112.5度 - 157.5度 + // 左下 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P)) {// 157.5度 - 202.5度 + // 左 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P)) {// 202.5度 - 247.5度 + // 左上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P)) {// 247.5度 - 292.5度 + // 上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P)) {// 292.5度 - 337.5度 + // 右上 + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_RIGHT); + } + } + + @Override + public void dealCallBackModeStateChange(RockerView rockerView, double angle) { + + if ((multiConditionJudgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_7P)) && rockerView.getTempDirection() != Direction.DIRECTION_RIGHT) {//0-22.5度和337.5度-360度 并且当前不是右方向 + // 右 + rockerView.setTempDirection(Direction.DIRECTION_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_RIGHT); + + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_0P, ANGLE_8D_OF_1P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN_RIGHT) { //22.5度 - 67.5度 并且当前不是右下方向 + // 右下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_RIGHT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_1P, ANGLE_8D_OF_2P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN) {// 67.5度 - 112.5度 并且当前不是下方向 + // 下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_2P, ANGLE_8D_OF_3P) && rockerView.getTempDirection() != Direction.DIRECTION_DOWN_LEFT) {// 112.5度 - 157.5度 并且当前不是左下方向 + // 左下 + rockerView.setTempDirection(Direction.DIRECTION_DOWN_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_DOWN_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_3P, ANGLE_8D_OF_4P) && rockerView.getTempDirection() != Direction.DIRECTION_LEFT) {// 157.5度 - 202.5度 并且当前不是左方向 + // 左 + rockerView.setTempDirection(Direction.DIRECTION_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_4P, ANGLE_8D_OF_5P) && rockerView.getTempDirection() != Direction.DIRECTION_UP_LEFT) {// 202.5度 - 247.5度 并且当前不是左上方向 + // 左上 + rockerView.setTempDirection(Direction.DIRECTION_UP_LEFT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_LEFT); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_5P, ANGLE_8D_OF_6P) && rockerView.getTempDirection() != Direction.DIRECTION_UP) {// 247.5度 - 292.5度 并且当前不是上方向 + // 上 + rockerView.setTempDirection(Direction.DIRECTION_UP); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP); + } else if (judgmentIsInRange(angle, ANGLE_8D_OF_6P, ANGLE_8D_OF_7P) && rockerView.getTempDirection() != Direction.DIRECTION_UP_RIGHT) {// 292.5度 - 337.5度 并且当前不是右上方向 + // 右上 + rockerView.setTempDirection(Direction.DIRECTION_UP_RIGHT); + rockerView.getOnShakeListener().direction(Direction.DIRECTION_UP_RIGHT); + } + + } +} diff --git a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/IDealRockerMoveStrategy.java similarity index 91% rename from KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java rename to KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/IDealRockerMoveStrategy.java index ff553c4..d81102f 100644 --- a/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/IDealRockerMoveStrategy.java +++ b/KqwRockerLibrary/src/main/java/com/kongqw/rockerlibrary/view/strategy/IDealRockerMoveStrategy.java @@ -1,4 +1,4 @@ -package com.kongqw.rockerlibrary.view; +package com.kongqw.rockerlibrary.view.strategy; import com.kongqw.rockerlibrary.view.RockerView; diff --git a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java index fc476af..cf371d4 100644 --- a/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java +++ b/app/src/main/java/com/kongqw/kqwrockerdemo/MainActivity.java @@ -5,6 +5,11 @@ import android.util.Log; import android.widget.TextView; +import com.kongqw.rockerlibrary.view.CallBackMode; +import com.kongqw.rockerlibrary.view.Direction; +import com.kongqw.rockerlibrary.view.DirectionMode; +import com.kongqw.rockerlibrary.view.OnAngleChangeListener; +import com.kongqw.rockerlibrary.view.OnShakeListener; import com.kongqw.rockerlibrary.view.RockerView; public class MainActivity extends AppCompatActivity { @@ -24,16 +29,16 @@ protected void onCreate(Bundle savedInstanceState) { RockerView rockerViewLeft = (RockerView) findViewById(R.id.rockerView_left); if (rockerViewLeft != null) { //设置回调模式 - rockerViewLeft.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE); + rockerViewLeft.setCallBackMode(CallBackMode.CALL_BACK_MODE_STATE_CHANGE); // 监听摇动方向 - rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_4_ROTATE_45, new RockerView.OnShakeListener() { + rockerViewLeft.setOnShakeListener(DirectionMode.DIRECTION_4_ROTATE_45, new OnShakeListener() { @Override public void onStart() { mLogLeft.setText(null); } @Override - public void direction(RockerView.Direction direction) { + public void direction(Direction direction) { mLogLeft.setText("摇动方向 : " + getDirection(direction)); Log.d(TAG,"摇动方向 : " + getDirection(direction)); } @@ -48,7 +53,7 @@ public void onFinish() { RockerView rockerViewRight = (RockerView) findViewById(R.id.rockerView_right); if (rockerViewRight != null) { // 监听摇动角度 - rockerViewRight.setOnAngleChangeListener(new RockerView.OnAngleChangeListener() { + rockerViewRight.setOnAngleChangeListener(new OnAngleChangeListener() { @Override public void onStart() { mLogRight.setText(null); @@ -68,7 +73,7 @@ public void onFinish() { } } - private String getDirection(RockerView.Direction direction) { + private String getDirection(Direction direction) { String message = null; switch (direction) { case DIRECTION_LEFT: