From ad03559dac9d9785eb9f990761fa9b69143ee6fb Mon Sep 17 00:00:00 2001 From: chenbin Date: Mon, 14 Sep 2020 16:43:36 +0800 Subject: [PATCH] modify --- .../sipcall/call/InCallMeetingActivity.java | 208 ++++++++++++++---- .../java/com/tianrun/sipcall/db/DBUser.java | 6 +- .../tianrun/sipcall/login/LoginActivity.java | 22 +- .../tianrun/sipcall/login/MainActivity.java | 4 +- .../java/com/tianrun/sipcall/net/Net.java | 2 - app/src/main/res/drawable-hdpi/fullscreen.png | Bin 0 -> 1751 bytes app/src/main/res/drawable-hdpi/kick.png | Bin 0 -> 1805 bytes app/src/main/res/drawable-hdpi/mute.png | Bin 0 -> 1603 bytes app/src/main/res/drawable-hdpi/unmute.png | Bin 0 -> 1330 bytes app/src/main/res/drawable-hdpi/unvideo.png | Bin 0 -> 2353 bytes app/src/main/res/layout/activity_login.xml | 4 +- .../main/res/layout/incallmeetingactivity.xml | 19 ++ 12 files changed, 203 insertions(+), 62 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/fullscreen.png create mode 100644 app/src/main/res/drawable-hdpi/kick.png create mode 100644 app/src/main/res/drawable-hdpi/mute.png create mode 100644 app/src/main/res/drawable-hdpi/unmute.png create mode 100644 app/src/main/res/drawable-hdpi/unvideo.png diff --git a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java index 1c25cc7..dc06a66 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java @@ -2,7 +2,6 @@ package com.tianrun.sipcall.call; import android.annotation.SuppressLint; -import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; import android.content.DialogInterface; @@ -39,10 +38,8 @@ import com.qmuiteam.qmui.widget.tab.QMUITabIndicator; import com.qmuiteam.qmui.widget.tab.QMUITabSegment; import com.tianrun.sipcall.R; import com.tianrun.sipcall.SipEngine; -import com.tianrun.sipcall.db.DBGroup; import com.tianrun.sipcall.db.DBUser; import com.tianrun.sipcall.db.UserMeetingViews; -import com.tianrun.sipcall.db.UserViews; import com.tianrun.sipcall.net.Net; import com.tianrun.sipcall.ui.TrAdapter; import com.tianrun.sipcall.ui.TrBaseActivity; @@ -70,6 +67,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList private SMPercentFrameLayout remoteRenderLayout; private ImageButton incall_answer, incall_hangup; private View imageButtonAddUser; + ImageButton incall_mute; + ImageButton incall_muteVideo; private TextView show; GridView gridUser; QMUITabSegment mTabSegment; @@ -166,6 +165,13 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList remoteRenderLayout = (SMPercentFrameLayout) findViewById(R.id.remote_video_layout); engineServer = new EngineServer(localRender, remoteRender, localRenderLayout, remoteRenderLayout, true); + incall_mute = findViewById(R.id.incall_mute); + incall_mute.setOnClickListener(this); + incall_muteVideo = findViewById(R.id.incall_muteVideo); + incall_muteVideo.setOnClickListener(this); + incall_mute.setVisibility(View.INVISIBLE); + incall_muteVideo.setVisibility(View.INVISIBLE); + mTabSegment = findViewById(R.id.ScreenType); mContentViewPager = findViewById(R.id.contentViewPager); imageButtonAddUser = findViewById(R.id.imageButtonAddUser); @@ -253,6 +259,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } else { views = (UserMeetingViews) (prefabView.getTag()); } + + views.memberStatus3.setVisibility(View.GONE); DBUser d = (DBUser) data; views.textViewName.setText(d.name); views.textViewNum.setText(d.phone); @@ -272,6 +280,22 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList views.imageViewPhoneIcon.setVisibility(View.VISIBLE); views.imageViewAddflag.setVisibility(View.INVISIBLE); } + + if (d.isMute) { + views.memberStatus1.setImageResource(R.drawable.mute); + } else { + views.memberStatus1.setImageResource(R.drawable.unmute); + } + if (VIDEOSTATE) { + views.memberStatus2.setVisibility(View.VISIBLE); + if (d.isVMute) { + views.memberStatus2.setImageResource(R.drawable.unvideo); + } else { + views.memberStatus2.setImageResource(R.drawable.video); + } + } else { + views.memberStatus2.setVisibility(View.GONE); + } } @Override @@ -289,7 +313,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); if (DBUser.mySelf.isManager) { if (d.isMute) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("取消禁言").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("取消禁言").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -308,7 +332,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } )); } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("禁言").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.mute).text("禁言").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -330,7 +354,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList if (VIDEOSTATE) { if (d.isVMute) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("回复视频").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.video).text("恢复视频").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -349,7 +373,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } )); } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("停止视频").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unvideo).text("停止视频").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -369,45 +393,24 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList )); } - if (d.isLayout) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("恢复布局").onClick( - new QMUIQuickAction.OnClickListener() { - @Override - public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { - quickAction.dismiss(); - Net.vidlayoutMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - getMembers(); - } + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.fullscreen).text("切到主界面").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } - @Override - public void onRequestError(int cmd, String result, Object orgs) { - } - }, null); - } + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); } - )); - } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("切换布局").onClick( - new QMUIQuickAction.OnClickListener() { - @Override - public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { - quickAction.dismiss(); - Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - getMembers(); - } - - @Override - public void onRequestError(int cmd, String result, Object orgs) { - } - }, null); - } - } - )); - } + } + )); } qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("移除").onClick( @@ -454,8 +457,18 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList super.onResume(); if (callstate.equals("来电")) { incall_answer.setVisibility(View.VISIBLE); + incall_mute.setVisibility(View.GONE); + incall_muteVideo.setVisibility(View.GONE); } else { incall_answer.setVisibility(View.GONE); + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + if (VIDEOSTATE) { + incall_muteVideo.setVisibility(View.VISIBLE); + } else { + incall_muteVideo.setVisibility(View.GONE); + } + } } show.setText(callnumber + callstate); //控件显示号码,来电,去电,通话中... @@ -585,6 +598,11 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList */ engineServer.startVideoStream(this, server, rport, lport, payload, BitRate, FrameRate, w, h, c, true); VIDEOSTATE = true; + + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + incall_muteVideo.setVisibility(View.VISIBLE); + } } } @@ -600,11 +618,113 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList break; case R.id.incall_answer: incall_answer.setVisibility(View.GONE); + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + } SipEngine.getInstance().answer(callid); break; + case R.id.incall_mute: + muteAll(v); + break; + case R.id.incall_muteVideo: + videomuteAll(v); + break; } } + public void muteAll(View view) { + QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this, + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56), + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56)) + .shadow(true) + .dimAmount(0.5f) + .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) + .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.mute).text("全部禁言").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.muteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("全部取消禁言").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.unmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.show(view); + } + + public void videomuteAll(View view) { + QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this, + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56), + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56)) + .shadow(true) + .dimAmount(0.5f) + .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) + .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unvideo).text("全部关闭视频").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.vmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.video).text("全部恢复视频").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.unvmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.show(view); + } public void ShowVideoView(boolean show) { if (show) { diff --git a/app/src/main/java/com/tianrun/sipcall/db/DBUser.java b/app/src/main/java/com/tianrun/sipcall/db/DBUser.java index 56aa42b..1dbff53 100644 --- a/app/src/main/java/com/tianrun/sipcall/db/DBUser.java +++ b/app/src/main/java/com/tianrun/sipcall/db/DBUser.java @@ -36,11 +36,15 @@ public class DBUser { this.phone = d.getString("extn"); this.status = d.getString("sip_state"); String weight = d.getString("weight"); - if(weight != null) { + if (weight != null) { this.isManager = weight.equals("1"); } else { this.isManager = false; } + String ifMute = d.getString("ifMute"); + this.isMute = ifMute != null ? ifMute.equals("true") : false; + String ifVMute = d.getString("ifVMute"); + this.isVMute = ifVMute != null ? ifVMute.equals("true") : false; } public boolean isBusy() { diff --git a/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java b/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java index 60986b7..7828081 100644 --- a/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java @@ -344,17 +344,17 @@ public class LoginActivity extends TrBaseActivity { } public void exit2(View view) { - Net.login(this.name, this.pw, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - ActivityMgr.sendMsg(CONS.LOGIN, null); - } - - @Override - public void onRequestError(int cmd, String result, Object orgs) { - UIUtl.toastI("取得token失败"); - } - }, null); +// Net.login(this.name, this.pw, new HttpUtl.CallBack() { +// @Override +// public void onRequestComplete(int cmd, String result, Object orgs) { +// ActivityMgr.sendMsg(CONS.LOGIN, null); +// } +// +// @Override +// public void onRequestError(int cmd, String result, Object orgs) { +// UIUtl.toastI("取得token失败"); +// } +// }, null); } } diff --git a/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java b/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java index 3033fb4..bd8db94 100644 --- a/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java @@ -404,7 +404,7 @@ public class MainActivity extends TrBaseActivity { public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { quickAction.dismiss(); QMUITipDialog dialog = UIUtl.toastLoading(""); - Net.kickMember4Group(currSelectData.id, d.phone, new HttpUtl.CallBack() { + Net.kickMember4Group(currSelectData.audio_code, d.phone, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { UIUtl.toastS("移除分机成功"); @@ -478,7 +478,7 @@ public class MainActivity extends TrBaseActivity { members = members + phNum + ","; } - Net.addMember2Group(currSelectData.id, members, new HttpUtl.CallBack() { + Net.addMember2Group(currSelectData.audio_code, members, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { Net.getGroupMenbers(currSelectData.id, null, currSelectData.id); diff --git a/app/src/main/java/com/tianrun/sipcall/net/Net.java b/app/src/main/java/com/tianrun/sipcall/net/Net.java index be989f3..b72a9f7 100644 --- a/app/src/main/java/com/tianrun/sipcall/net/Net.java +++ b/app/src/main/java/com/tianrun/sipcall/net/Net.java @@ -128,7 +128,6 @@ public class Net { HttpUtl.doPostAsyn(url, _params, _callback, CMD_deleteGroup, params); } - //TODO:确认下参数 public static void addMember2Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) { String url = "http://" + ip + ":" + port + "/api/conferences/conference/add"; String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members; @@ -136,7 +135,6 @@ public class Net { HttpUtl.doPostAsyn(url, _params, _callback, CMD_addUser2Group, params); } - //TODO:确认下参数 public static void kickMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) { String url = "http://" + ip + ":" + port + "/api/conferences/conference/update"; String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=kick"; diff --git a/app/src/main/res/drawable-hdpi/fullscreen.png b/app/src/main/res/drawable-hdpi/fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b3f21cb59ea8011a79fe4adadf21abadd79fcf GIT binary patch literal 1751 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/mute.png b/app/src/main/res/drawable-hdpi/mute.png new file mode 100644 index 0000000000000000000000000000000000000000..cccb3362fd69f96ccb28736505d216e8cd734252 GIT binary patch literal 1603 zcmV-J2E6%+P)9 z*U&6UriR0q|Ac-7_BR{knKFs_qm}}Pq`IcICia;|6q>Ik8vYNOs5KPc#!_;x3C$j| zO@4s6LQ0I$<`(L=jbPkQu1A`%GPpk=_q&-><6pGM`_5*4vw;eZshVn0zUzGTCHzcDe5LBV*G zE0PkM+KyPtQ&dccOIu zifm$@OV00i1@i3+qygVkA~;%+ei0c62#rtF0k`%YASg0huCoF{rzS+st}9X{G>{NU zdXDeHF(LSSf44+pLOQTwLfIm@LTy=+E7XyQ3So}8wnC_55#TB2#mtEjp=^;SnG4B< zipi4pvj_}EgpN1mKW1LSTtm+KpvY#q9%s^a$~7jm!{pUX(`J)a5?M`Q;FT?m2-y&H zh+LOei2#_Cuv+|_dA_7AVtz{QHN=GMqT-K~2&U2RnCFr6t~Vw9Jt{_Aq+9pKb-IWb z5E4Q7Ue3IYxsrJ$^VUGV&^X#otz}fD2yi>|D5>Zc;aYOjDI)F#%o|0Zs*fr~fE&nl z;3j##TId4;>zP-?gi?d?3v&H%8S`0k6Pp5V`VjMddG`CLDO7j0f=wM9!H({8ygbo~ zuiHzapis9(e4(CLVue(!bOhE7py3ZP=aU--KCrS}E_wELQ`7>xZ0w|uA?Nm?bzT(^ zAZ91>V9h>9i12tR$*E%}u!cO&eAGO{0Wnk5H3&m;W-?b1i1FB)!O=T%4Qt3_1 zAm`u!VtyTiPNsY#6xd2!LvEsK8==z(xCS;lIR;JWq!C>xUwPt@V-S2DE2EF7y)&MU zBTk)DmAVG$ITC(bPkHA^JvT&=YtU56Gw7fhqUe=D2i*`wuX`vPoh~2Lpclw3!*z+B zYf#U71c!_#nrAF2HU#p)AT?r;@(miMFt9Y8WS)N^w>c^yWys~sm&`K+$4SF2a5jk@ z)sfVmL51Cz!MoJj6a%leYsebU5F8ET^V%{mAGVfQGhuh3`_UYOLYUzh0j!KQG-U{c zo?t#~(y-t9gvxK`D{>3M=c)KDv93WDICAj69Ij%17;9*q!TyLe;7)nQeh!A<>(&x4 zFAnnO3IU8UEDVn&_wDLiaz&*qLbwjx>P1R_lt8e+mr;zVxzt*p zg$zm>0p!jj_#BJle++2!#(Y!9L`hqmS*Idr43*ICgov@QNQhp+$<00F{+^HvG!kc! z=v7RN?d*rTaxj3iEK1&bKk*$?&Xgae2jEW{>1i|h?vFAeDiQU>89 z2GR3>Z-~M-2%ih**$llj1OZ`HApN%v>QsYD_z#W(@&XlwxSaq1002ovPDHLkV1ns4 B@vQ&= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/unmute.png b/app/src/main/res/drawable-hdpi/unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd6e108fa1739409afa5ddcaf53464b18ec19c4 GIT binary patch literal 1330 zcmV-21#O=+ zXI5FiTV2iS7V3PO|D)P6r5&@`uBA&<1)Gb^FzqU_=@;f`m&OO7?%F*BUSK|s)iDEy znIn=`dSWNo5A7}HX{*dABfrF0B)rEw#XQd(&s->l?^EINm2__pS3BKoh<|lSxUxgrigU^MB zq&{O4Ip(HFk(dI$o@`{k&76~kNCj)MIF82=-?FL4{$Ap_?=6jT8Yg1$-iKHN%+4Nmb&4;`I!+$T|@LFlRT)byreOvR>}tf%`Kr8g);~@2)5jU>oye<`Gi!^+QR|QE}j4 z0t*N2ex}9|!G^#`BJhAztb5ecIPfR4My^M=3iyU_N9H|dCn`iDD@a+1MaWR**QC}- z8d&KcOCkbvW`4(#m?^NKzlA6V1D7rn`hncCC5>vM$|WgRR>Na z^)hn+b2D?6qwE+VR{Y%~+PzL{-`ux7x>>X|@|5ya23rzCm}jW4Q9qN^P5{ni|Fg;; zV)l@0ge{1O`^i0)#Rw8_2lQSd6&VjU(we0YmqQ(mj`)B;8T ots&OR1QkPK0B(4PBdta76hY_kZLVUmRR91007*qoM6N<$f;RMZ*#H0l literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/unvideo.png b/app/src/main/res/drawable-hdpi/unvideo.png new file mode 100644 index 0000000000000000000000000000000000000000..d66af94ffa5a1f749bde442e4c282168469425ee GIT binary patch literal 2353 zcmY*bdpwiv8-IqGkZ4L_jFj`n$YF>v3^`3Xmhw_2y)B8L~Fm*U;3pZE8>@6Y{Q-|Kq5*Y|s0&tFfbi<9kkQCU#{0JhuVuy|fX z@eWc%7yv+Hq#J>}1VqN$S^|wj@}GH03c=GZ#L*GZ;9(H}4B80@@+rIxfMfyi4-5eI zAh|7!2dVwy2mnBO7$EeEF5HtijE<`4jnfypQ4y4EAx%E*3WxV!b1LaB9ecN#TyXGe}mLT=peVWd99}WD%v?FjKFi|>mSlJ z{lWad+AkkdB;WjhF7tEJA64F{heS=0Tc7Qa=;3ZvF8~l`+hH+BLcz1eUe}Kv-ScF= z;&pQwQ>BDhfRiW;u!HKmBCWC59pGII@ZMe00az}_Di`BoCbG+V1RDT$bn(U*gc)XI zj|}6Xnq2g&t8dPhbKk_xl2?l7?%6&VhHT#M;5I}jKPp+7T&GY*E7@%J35+VoAZATu z2eq$L-|?_ZR{oiOue=@BlWJWUlJ2Ey`=JLKsogQ!*4G=M`DyH-p&_MhpXkZ{J2^rl zFb++Mdrq6GdC=(yy#?F;Rt*098C9wqE8{7pq9fYbZqqV-l9DKv5$vx>HbkSmkwWy__5tG#IagGkUw^C*1~UnrhqQ-5reSnSiAznv zq~>G4DcAD4#(Rs~#B4bFE)8z3kW(6~EzgAybczSMPKDplhvGFL^=b+Is)-3jPU}ng zRjoGH+oa_Qcc>BSvGWg)8X0Bmzj8e0Zq|KwZ}h5fRDNb$=~u4!29(iTE#8^rFDggv z?@_xRi}3QRp=<~#k^1GRp~J;SC|lhM8;#BIuukXHO}T28&v;GbAdnv9H~*nAoLmv$ z=HvXONvYAQ{Oq03z{nQ5OT(w0v>a+)j#JRnXC<8aanTD5ZrMaynfiUbz!1%<+o|pq zqb}2ohbsNu3A_Jpq8yyFtg4>Yz+m53?7?_!*H#9(H;mVtPMSHPU$Yx5@RG3Rto6x(+t6|uK41qxg0 zP!A{nsjl5GgK-Opbd$|+=&sh`eW`Vi);PBVL>%H zEfyi~aq~_-m=Nh=${V3x>=Vi6s!z_e3IRM*1370Z{CFKUa(=gs%R8gAB%$H+M;gui5N3cnLciR!*sH!3P0 zcths$N!#^|)LAHfyg>QbJg(kss;;~WGrTGYGrdMww6$I>dDS&GWaQoI*tFKTzEkpZ zc7vTCr0}9dca^yk#O_9lFQjsr7@KP=c8_=&iM#r=8Zv9FfLo8V^D$^rSDcheQ3ZXp zw(z4{pP}wPdpZy|Kuk@!I9I@(V_}gmjI=*UV zDfWuDQt~^4J}Ub4w9~>`^OCIOXZv?>nm@z5^=j9k1nesqp6q4s@sw$ojW5ZV^HqMD zA+Y@VRzW+H=(H1kd2PyKG~9CK7Sv~)wj)?S|2@e}6Xx*uc_S$>VdwnbMKHd${Pl6c zE@y}$$o0OKLq6;KC!3Cv%*bi^!x!*+V}caJRh> z_hS0vlJBKnYV|DyG`R2Nd9^c-`Cq2j~DoRmj2{Ii=TozWI5$EU<;`Mvop z9TVIMdbCwUl49<+P%-0CsXAcx8#I2l)MDW`T9idFESW8m3l3)Y8jbb(K};u_`qI&w zy^H#j%YPIxUk+e2hsn&US=KnKp+H;m+fj>W*IxKHe+