1 |
hs_account_log |
资金账户表 |
资金增、查 |
2 |
hs_ad |
广告位置表 |
广告位置增删改查;查询分页;查询名下广告数量;广告名称不能为空 |
3 |
hs_ad_position |
广告品牌位置表 |
广告位置增删改查;查询分页;查询所有的品牌;广告名称不能为空 |
4 |
hs_article |
文章表 |
文章增删改查;查询分页 |
5 |
hs_article_cat |
文章分类表 |
文章分类增删改查;查询父类所在层次;查询所在分组最顶级父类ID;查询是否存在子分类 |
6 |
he_article_scheme |
专家方案表 |
文章分类增删改查;文章命中 |
7 |
hs_balance_record |
资金校验操作记录表 |
资金校验记录增、查;资金校验操作;用户充值总额;退款总额;支出总额;提现总额;手续费总额;查询是否存在校验记录更新资金校验进度;查询当前是否存在校验任务; |
8 |
he_expert_adept |
专家兴趣表 |
获取专家兴趣 |
9 |
he_expert_attention |
专家关注表 |
是否关注该专家;关注和取消关注;关注时间;个人关注榜 返回关注专家;关注数量 |
10 |
he_expert_he_expertcates |
专家分类表 |
为了做分类拓展用 |
11 |
he_expert_hit |
专家命中表 |
开奖保存专家命中记录;专家命中率 按最近7场 ,返回场次,中的场次和命中率 |
12 |
he_expert_soccer_scheme |
专家足球方案表 |
方案增、删、查;用户等级对应方案价格特权;专家预测查询;赔率变化表;统计方案请求次数;关联赛事 |
13 |
he_expertcate |
专家类型表 |
专家类型查询;获取第一个key;判断是否选择 |
14 |
he_football_scheme |
足球方案表 |
方案增、改;开奖后,修改玩法中奖状态;方案详情 |
15 |
he_task |
任务列表 |
查询任务列表 |
16 |
he_task_record |
任务完成记录 |
增、改任务完成记录;根据用户id 和 任务ID 今天日期 是否 有数据 查询数据;领取任务 事物;获取 推荐的 免费 可以投注的 文章;根据方案id 查询 he_expert_soccer_scheme 投注赔率 编号;生成随机数 |
17 |
he_thirdparty_soccer_matches |
第三方足球比赛表 |
文章Id查询赛事;保存赛事 |
18 |
he_tianxia_article |
天下足彩表 |
记录天下足彩信息 |
19 |
he_tianxia_expert |
天下足彩专家表 |
记录天下足彩专家基本信息 |
20 |
he_tianxia_matches |
天下足彩赛事表 |
记录天下足彩赛事信息 |
21 |
he_tianxia_win_scheme |
天下足彩的专家方案表 |
记录天下足彩的专家方案 |
22 |
hs_article_images |
文章表 |
查询文章图片 |
23 |
hs_bank_card |
银行卡表 |
银行卡增、改 |
24 |
hs_brand |
品牌表 |
品牌增删改查;分类、品牌名称、品牌网址不能为空;查询分页 |
25 |
hs_capital_detail |
资金明细表 |
交易记录增删改查;分页查询交易记录 根据userId;支出总额;退款总额;[交易明细][充值,提现,购物支付,佣金收入,商家退款] |
26 |
hs_captcha_record |
发送短信记录表 |
短信日志新增;获取ip当天次数;获取手机号次数;获取最新的交易商校验码;更新已读; 获取短信列表;搜索条件;排序 |
27 |
hs_charts |
排行榜记录表 |
获取每天的记录排行榜 |
28 |
hs_check_member_record |
会员校验记录列表 |
分页显示校验失败列表;排序;添加校验失败;校验列表是否存在;更新会员校验记录列表 |
29 |
hs_commission |
佣金表 |
佣金增删改查 |
30 |
hs_commission_record |
佣金记录表 |
记录佣金信息 |
31 |
hg_odds_correctscore |
波胆 赔率表 |
波胆 赔率增、改;根据比赛编号查询 |
32 |
hg_odds_firstgoalteam |
最先入球球队 赔率表 |
最先入球球队 赔率增、改;根据比赛编号查询 |
33 |
hg_odds_halffull |
半全场赛果 赔率表 |
半全场赛果 赔率增、改;根据比赛编号查询 |
34 |
hg_odds_hftotal |
上/下半场入球较多 赔率表 |
上/下半场入球较多 赔率增、改;根据比赛编号查询 |
35 |
hg_sp |
玩法节点表 |
通过code 初始化赔率模型对象;获取全部玩法;根据玩法id获取选项;根据玩法编号 跟赛事id查询对应玩法的赔率;根据比赛id获取全部赔率;根据比赛id 查询共有几种玩法 |
36 |
hg_odds_numbg |
球队入球数 赔率表 |
球队入球数 赔率增、改;根据比赛编号查询 |
37 |
hg_odds_oddeven |
入球单/双数 赔率表 |
入球单/双数 赔率增、改;根据比赛编号查询 |
38 |
hg_odds_totalgoals |
全场入球总数 赔率表 |
全场入球总数 赔率增、改;根据比赛编号查询 |
39 |
hg_odds_win |
亚洲让球赔率表 |
亚洲让球赔率增、改;根据比赛编号查询 |
40 |
hg_odds_windrawwin |
标准盘赔率表 |
标准盘赔率增、改;根据比赛编号查询 |
41 |
hg_odds_overunder |
上下盘赔率表 |
上下盘赔率增、改;根据比赛编号查询 |
42 |
hg_odds_windrawwinf |
上半场标准盘赔率表 |
上半场标准盘赔率增、改;根据比赛编号查询 |
43 |
hs_competition_attention_record |
用户关注赛程数据记录表 |
添加关注的赛程数据;获取关注的赛程数据 |
44 |
hs_competition_comment |
侃球表 |
添加评论数据;查询当前最大的Id;侃球查询 |
45 |
hs_competition_conced_odds |
亚盘让球赔率 |
用来记录亚盘的让球赔率基本信息 |
46 |
hs_competition_conced_odds_copy |
亚盘让球赔率 |
根据比赛编号查询;亚洲让球赔率增、改;校验数据是否存在;获取一条让球赔率 |
47 |
hs_competition_firstgoal |
首个进球表 |
为了做分析详情数据使用 |
48 |
hs_competition_future |
未来赛程数据 |
未来赛程数据增、查;校验数据是否存在 |
49 |
hs_competition_goal_record |
比赛进球名单 |
新增进球名单数据;校验数据是否存在;获取当前的事件数据 |
50 |
hs_competition_history |
比赛往绩 |
新增赛事往绩数据;校验数据是否存在;获取往绩数据 |
51 |
hs_competition_integral |
赛事积分排名 |
新增积分数据;查询该场积分数据是否存在;更新积分数据;根据比赛ID获取积分排名数据;根据比赛ID和球队获取获取积分排名数据;获取同一联赛的所有赛事数据 |
52 |
hs_competition_norm_odds |
赛事标准盘赔率表 |
添加标准盘赔率;校验数据是否存在;获取赔率数据;获取该比赛所有赔率数据;获取一条数据数据;根据比赛编号查询 |
53 |
hs_competition_odds |
|
|
54 |
hs_competition_oddsway |
盘路统计信息表 |
盘路统计信息增、改;校验该盘路信息是否存在 |
55 |
hs_competition_ou_odds |
大小球指数表 |
亚洲让球赔率增、改;根据比赛编号查询;校验数据是否存在;获取大小球赔率 |
56 |
hs_competition_push_record |
用户开启推送的赛程数据表 |
添加开启推送的赛程数据;获取用户选择推送的赛程数据;校验数据是否存在 |
57 |
hs_competition_schedule |
赛事赛程表1 |
赛事增、改;获取今天的所有期号;校验数据是否存在 |
58 |
hs_competition_schedule_europe |
赛事赛程表2 |
根据比赛编号查询;添加赛程;更新赛程;根据当天日期查询赛程;查询最后一期数据期号;保存队标;分页获取赛事数据;根据当天日期查询赛程 |
59 |
hs_competition_schedule_info |
赛事赛程表3 |
用于记录赛事的赛程 |
60 |
hs_competition_score |
实时比分表 |
记录实时比分信息 |
61 |
hs_competition_score_europe |
实时比分列表 |
根据比赛编号查询;比分增、改;让分算法;获取比分信息;比赛状态对应 |
62 |
hs_competition_team |
球队信息表 |
球队信息增、改;校验数据是否存在;根据编号查询;获取盘路历史 |
63 |
hs_competiton |
所有赛事数据表 |
赛事增、查、改;分页获取赛事数据 |
64 |
hs_competiton_copy |
|
|
65 |
hs_config |
配置表 |
配置查询;修改配置inc_type |
66 |
hs_delivery_doc |
发货单表1 |
发货单添加;获取发货记录;根据订单号修改物流信息;获取发货单列表;排序;搜索条件;导入发货单;发货记录列表发货;更新订单发货状态;批量更改发货记录状态 |
67 |
hs_delivery_doc_import |
发货单表2 |
记录发货单号等物流信息 |
68 |
hs_diamond_detail |
钻石资金明细表 |
分页查询交易记录 根据userId ,[交易明细][充值,提现,购物支付,佣金收入,商家退款] |
69 |
hs_diamond_recharge |
道具表 |
道具查询 |
70 |
hs_diamond_recharge_log |
道具修改日志表 |
用于记录修改道具的日志 |
71 |
hs_expense_log |
支出日志表 |
获取支出日志;搜索条件;支出日志添加 |
72 |
hs_express_company |
快递公司表 |
获取快递公司列表 |
73 |
hs_freight_config |
运费配置表 |
通过id获取配置信息;根据所选运费模板等参数获取价格 |
74 |
hs_freight_templete |
运费模板表 |
运费配置增删改查;根据ID获取信息 |
75 |
hs_friend_link |
友情链接表 |
友情链接增删改查 |
76 |
hs_fund_total |
总额统计表 |
用来统计充值、退款、消费、提现的表 |
77 |
hs_goldbeans_detail |
金豆资金明细 |
分页查询交易记录 根据userId |
78 |
hs_goods |
商品表 |
商品查、改;查询升级后商品;查询是否为升级够商品 |
79 |
hs_goods_attr |
商品属性对应表 |
用来记录商城中商品对应的基本信息 |
80 |
hs_goods_attribute |
商品属性表 |
用来记录商城中商品的价格和属性 |
81 |
hs_goods_category |
商品分类表 |
商品分类查询;查询推荐;查询推荐的分类数量;查询点击次数排序;获取顶级分类;查询组别;获取顶级分组分类;获取下级节点;判断是否存在;更新点击次数;无限极分类;获取所有的分组实体 |
82 |
hs_goods_images |
商品图片表 |
查询所属模型列表 |
83 |
hs_goods_ladder |
价格阶段表 |
价格阶段增删改查 |
84 |
hs_goods_tag |
商品标签表 |
查询商品标签;获取显示的tag数量;更新点击次数 |
85 |
hs_goods_type |
商品模型表 |
校验模型名称不能为空;商品模型增删改查 |
86 |
hs_goods_up |
商品升级表 |
一个商品只能对应一个升级的商品,查询升级商品信息 |
87 |
hs_group |
机构表 |
机构增、删、改;获取所有分组;获取子级机构;通过ID进行查询;通过orgcode查询;获取层级组别;获取公司机构;获取显示公司;无限极分类;联合查询;获取上级机构;通过orgcode查询;判断是否存在;通过orgcode查询;获取直属下级数;获取所有的分组实体;查询机构代码是否存在;获取机构中最大级 |
88 |
hs_group_goldbeans_detail |
服务商金豆明细表 |
用于[交易明细][充值,提现,购物支付,佣金收入,商家退款] |
89 |
hs_group_manage |
机构管理表1 |
机构删除;通过uid查找组;通过gid查找组;添加角色;批量添加;判断用户是否为管理员 |
90 |
hs_group_manage_level |
机构管理表2 |
用户存在上下级的管理; 通过uid查找组;判断用户是否为组管理;通过gid查找组;添加角色;批量添加角色;判断是否为管理员;删除 |
91 |
hs_group_wallet |
服务商钱包表 |
根据 id 查询;更新服务商钱包;钱包组合操作 |
92 |
hg_data |
抽奖数据表 |
抽奖数据增删改查;获取最新一期数据;分页加载;获取最近5条数据 |
93 |
hg_order |
竞猜订单表 |
获取赛事列表;生成投注订单;更新赛事统计表;更新用户钱包 减金豆;根据比赛id 跟 比赛唯一编号 获取订单数据;查询玩法是否可以投注;获取投注日志;根据用户ID和订单ID获取数据;根据赛事id 查询参与人数;获取当前赔率 |
94 |
hg_push_log |
推送日志表 |
添加推送日志 |
95 |
hg_push_monitor |
|
|
96 |
hg_result |
竞猜结果表 |
存放所有的竞猜结果表 |
97 |
hg_result_overunder |
让球竞猜结果表 |
存放所有的让球竞猜结果表 |
98 |
hg_result_win |
中奖竞猜结果表 |
存放所有的中奖竞猜结果表 |
99 |
hs_log_browse |
浏览记录表 |
查询列表;查询一条;检验标题不能为空;增加;获取分页数据 |
100 |
hs_log_correctscore_odds |
波胆 赔率表 |
波胆 赔率增、改、查 |
101 |
hs_log_firstgoalteam_odds |
最先入球球队 赔率表 |
最先入球球队 赔率增、改、查 |
102 |
hs_log_halffull_odds |
半全场赛果表 |
(赔率 A 主队 B 客队)半全场赛果 赔率增、改、查 |
103 |
hs_log_hftotal_odds |
上/下半场入球较多表 |
上/下半场入球较多 赔率增、改、查 |
104 |
hs_log_login |
登录日志表 |
插入记录、获取分页数据 |
105 |
hs_log_numbg_odds |
球队入球数 赔率表 |
球队入球数 赔率增、改、查 |
106 |
hs_log_oddeven_odds |
入球单/双数 赔率表 |
入球单/双数 赔率增、改、查 |
107 |
hs_log_overunder_odds |
上下盘赔率表 |
上下盘赔率增、改、查 |
108 |
hs_log_pay |
支付错误日志表 |
插入记录;获取分页数据 |
109 |
hs_log_regiest |
注册日志表 |
插入记录;获取分页数据 |
110 |
hs_log_retry |
重试日志表 |
插入记录;查询是否存在;更新;获取分页数据 |
111 |
hs_log_search |
搜索记录表 |
查询列表;查询一条;增加;获取分页数据;检验标题不能为空 |
112 |
hs_log_totalgoals_odds |
全场入球总数 赔率表 |
全场入球总数 赔率增、改、查 |
113 |
hs_log_web |
浏览记录表1 |
浏览记录增加;判断是否存在 |
114 |
hs_log_web_count |
浏览记录表2 |
浏览记录增加;按日期查询 访问量 |
115 |
hs_log_win_odds |
亚洲让球赔率表--历史 |
亚洲让球赔率(历史)增、改、查 |
116 |
hs_log_windrawwin_f_odds |
上半场标准盘赔率表 |
上半场标准盘赔率增、改、查 |
117 |
hs_log_windrawwin_odds |
标准盘赔率表 |
标准盘赔率增、改、查 |
118 |
hs_matches_impoert_record |
导入记录表 |
记录导入联赛和球队的信息 |
119 |
hs_member |
会员表 |
用户增删改查;查询分页;获取单个用户信息;通过手机号码获取用户;检测会员是否存在;通过用户名获取用户;通过手机获取用户 hcz;通过昵称获取用户 hcz;通过用户名获取用户;Modify Status;根据推荐人ID的所有用户ID;根据管理员ID查找所属机构下的所有用户ID;根据GroupId查找所属机构下的所有用户ID;根据推荐人ID的所有用户UID;根据管理员ID查找所属机构下的所有用户UID;更新用户支付密码;获取所有用户的;获取所有用户信息;修改推荐人;查询推荐人名下客户数量 |
120 |
hs_member_level |
用户等级表 |
用户等级增删改查;等级列表查询分页;通过id获取信息;获取最大等级 |
121 |
hs_member_prop |
用户拥有道具表 |
添加用户道具;获取用户道具数量 |
122 |
hs_message |
消息中心表 |
存放公告和通知消息的表 |
123 |
hs_message_record |
消息已读记录表 |
记录已读消息表 |
124 |
hs_navigation |
前台导航表 |
前台导航增删改查 |
125 |
hs_node |
节点表 |
根据url获取节点信息;获取顶级节点;获取下级节点;系统菜单获取下级;获取功能节点;判断是否有权限 |
126 |
hs_node_hs_roles |
权限表 |
每个用户的权限 |
127 |
hs_notify_record |
微信通知记录表 |
微信通知记录增加 |
128 |
hs_order |
订单表 |
订单增删改查;获取订单列表;获取订单详情;获取当前可操作的按钮;订单操作;获取发货单列表;获取发货单列表-已发货;获取发货单列表-已完成;订单发货事务;获取退款单列表;订单退款事务;退款到用户余额;退款到用户余额 用于退货退款;退换货 提交处理;根据订单ID恢复商品库存;查询商品运费;获取所有发货单信息 |
129 |
hs_order_article |
专家策略订单表 |
记录购买专家方案的订单 |
130 |
hs_order_goods |
订单和商品关系表 |
订单商品增删改查;查询订单商品 关联升级商品 |
131 |
hs_order_log |
订单日志 |
订单日志增、查 |
132 |
hs_order_logistics |
订单物流 |
订单日志增、查 |
133 |
hs_order_logistics_push |
订单物流推送 |
订单物流推送增加 |
134 |
hs_plugin |
城市区域表 |
城市区域查询 |
135 |
hs_prop_recharge |
道具表 |
获取道具充值信息;钻石购买道具;添加用户道具;获取所有充值道具;获取所有充值道具列表;获取所有充值道具分页列表 |
136 |
hs_prop_recharge_log |
道具修改日志表 |
记录总的操作道具各项信息 |
137 |
hs_recharge_check |
充值对账记录表 |
充值对账记录查询分页 |
138 |
hs_recharge_checkerror |
充值对账错误记录表 |
充值对账记录查询分页 |
139 |
hs_recharge_record |
充值记录表 |
充值记录查询;充值详情查询;更新订单openId;查询充值信息;更新PrepayId;更新微信订单号;查询订单;更改失败订单状态;更新成功充值订单;获取充值总额;获取充值成功数;获取未校验数据 |
140 |
hs_region |
城市区域表 |
城市区域增、删、查;查询上级;循环查询上级 > 上上级名称 |
141 |
hs_remittance |
会员汇款转账列表 |
增加汇款记录表;查询分页;汇款失败列表;汇款记录列表;根据Id获取信息;获取待转账的数据;自动对账更新状态;根据单号获取数据;修改备注 |
142 |
hs_remittance_import |
会员汇款转账列表 |
事物导入多个资金查询;根据提现编号查询一转账;修改转账流水和转账金额 |
143 |
hs_request_record |
请求记录表 |
记录各种请求 |
144 |
hs_return_goods |
退货表 |
获取退货单列表;获取退换货申请单详情;删除退换货申请单;更新退换货申请单;获取用户的退款总额 |
145 |
hs_role |
角色表 |
角色增删改查;通过角色ID获取用户的节点;获取机构角色;判断机构角色是否存在;判断机构是否存在;获取机构角色id;获取内置会员单位角色 |
146 |
hs_screen_record |
用户筛选记录表 |
记录表增、改、查;查询该用户是否存在记录; |
147 |
hs_setting_reg |
注册设置 |
注册设置改、查 |
148 |
hs_settlement |
结算记录表 |
结算记录增加;自动结算流水事务处理 |
149 |
hs_shop |
商户表 |
获取单个商户信息 |
150 |
hs_sign |
会员签到表 |
会员签到查询分页 |
151 |
hs_sign_record |
用户签到详情表 |
签到历史列表 |
152 |
hs_sign_rule |
签到规则表 |
获取签到规则表;修改规则 |
153 |
hs_sms_template |
短信模板表 |
短信模板增删改查 |
154 |
hs_soccer_competition |
赛事竞猜 |
添加赛事;获取赛事文件名;获取赛事信息;更新赛事;根据ID查询一条数据 |
155 |
hs_soccer_country |
足球国家表 |
分页获取赛事数据;国家增、改;国家信息改、查;获取所有洲 |
156 |
hs_soccer_guess |
赛事竞猜表 |
根据赛事编号获取 该场比赛的数据;查询当前时间竞猜记录; |
157 |
hs_soccer_guess_score |
赛事竞猜实时比分表 |
记录每场赛事的实时比分 |
158 |
hs_soccer_league |
足球联赛表1 |
足球联赛增、改、查 |
159 |
hs_soccer_league_team |
足球联赛表2 |
记录足球联赛信息 |
160 |
hs_soccer_map |
足球关键字匹配表 |
用于自动匹配赛程 |
161 |
hs_soccer_matches |
足球赛程表 |
查询分页;分页获取赛事数据;根据比赛编号查询;校验赛事是否存在;按照字母归类; |
162 |
hs_soccer_matches_data |
足球赛程匹配数据表 |
足球数据增、改;获取足球赛程匹配数据uid;获取现在的足球数据;获取已存档的足球数据;获取足球比赛;更改比赛状态 |
163 |
hs_soccer_matches_league |
足球联赛待匹配数据表 |
用于记录待匹配的赛程 |
164 |
hs_soccer_matches_source |
赛事匹配来源 |
|
165 |
hs_soccer_matches_team |
足球球队待匹配数据表 |
记录球队待匹配的数据 |
166 |
hs_soccer_matchs_info |
赛程表 |
记录赛程 |
167 |
hs_soccer_source |
足球赛程数据来源表 |
足球赛程数据来源增加;通过key获取足球赛程数据来源;获取所有足球赛程数据来源;不包含;获取默认足球赛程数据来源; |
168 |
hs_soccer_team |
足球球队表 |
足球球队的各项基本信息 |
169 |
hs_spec |
规格表 |
规格增删改查;校验“所属商品模型”和“模型名称”是否为空;查询分页;查询所属模型列表;查询模型数量 |
170 |
hs_spec_goods_price |
商品规格价格表 |
商品规格价格增删改查;查询分页;查询所属模型列表;查询 GoodsId Key;删除所属商品id;删除相关联的规格价格;修改库存 |
171 |
hs_spec_iamge |
商品规格图片表 |
商品规格图片增删改查;查询分页;查询所属模型列表;删除所属商品id; |
172 |
hs_spec_item |
规格项表 |
规格项增删改查;批量增加;查询SpecId的数量;按照规格查询;查询是否存在规格 |
173 |
hs_statement |
对账表 |
查询分页;查询BillDate;查询NchSn |
174 |
hs_statement_member_total |
会员账单单日总和表 |
查询分页;查询BillDate;查询NchSn |
175 |
hs_statement_record |
对账单记录表 |
对账单记录增、改、查;查询是否有成功的记录;查询公司是否生成成功;查询分页 |
176 |
hs_statement_total |
对账单总和表 |
对账单记录增、查;判断是否有数据 |
177 |
hs_suppliers |
供应商表 |
校验“供应商名称”、“供应商描述”、“供应商电话”是否为空;供应商增删改查;查询分页 |
178 |
hs_system_rule |
机构代码规则表 |
通过层级获取规则;获取最大的层级;检查该层级是否存在;机构代码规则增、改、查 |
179 |
hs_topic |
公告表 |
查询公告 |
180 |
hs_upgrade_record |
升级记录表 |
查询分页;根据期数查询所有记录表;根据状态查询所有记录;查询当前期数中上一期;根据订单号查询中奖记录;修改升级记录支付状态;升级记录增删改查 |
181 |
hs_upload_record |
上传记录表 |
修改上传进度;修改数据总数;修改上传状态;上传记录增、查 |
182 |
hs_user |
用户表 |
用户增删改查;根据团队id取得所有该团队下面的用户;根据ID获取user;根据Uname获取user;更新用户登录时间;获取单个用户信息;获取用户列表;获取总页数;事务更新;获取Uker用户信息;校验用户是否存在;获取机构用户列表;获取角色的所属用户;获取同一结构人数;获取管理员列表;批量操作用户;批量删除用户;判断用户是否绑定过ukey;绑定ukey;查询机构下用户数量;查询InviteCode是否存在;修改用户状态 |
183 |
hs_user_address |
用户收货地址表 |
用户收货地址增、改、查 |
184 |
hs_wallet |
钱包表 |
钱包增、删;根据 wallet、id、userId、 更新;根据 id、userId、用户名 查询;添加用户钱包信息;根据会员id获取钱包信息;钱包组合操作 |
185 |
hs_withdraw_log |
提现操作日志表 |
提现操作日志增加 |
186 |
hs_withdrawals |
提现申请表 |
查询分页;提现失败列表;删除申请表;提现申请成功;提现申请失败;获取一条提现申请表;根据流水单号 获取一条记录;修改备注;计算提现总额;计算手续费总额;查询所有待审核申请表;分页数据;根据单号获取数据;提现办理退回处理;提现审核成功;提现退还余额;提现申请列表资金校验 |
187 |
he_expert |
专家表 |
专家列表(全部);人气榜;专家盈利率列表;推荐专家;专家基本信息;专家近期的中奖和命中率信息;专家个人文章列表 |
188 |
hs_problem |
用户反馈表 |
查询;增加;判断文件夹是否存在 |
189 |
hs_competition_comment_whitelist |
侃球白名单表 |
校验用户评论是否已存在在白名单中,存在则返回true |
190 |
hs_member_prop_detail |
道具流水 |
TODO加锁 |
191 |
hs_rececive |
充值表 |
记录用户充值道具 |
192 |
hs_user_relation |
用户关系 |
查询关系;确认父级;保存关系 |
193 |
hs_app_plan |
任务列表 |
查询列表;验证属性;增加一个任务;查询一个任务;修改任务;删除任务 |
194 |
he_soccer_matches |
赛程表 |
用于记录所有赛程 |
195 |
hg_total |
|
|
196 |
hs_app_user |
App中我的设置表 |
|
197 |
hs_application |
提现充值申请列表 |
用于记录提现和充值的申请信息 |
198 |
hs_log_riskwarn |
风控记录表 |
用于记录赛程的所有异常信息 |
199 |
hs_recharge_application |
|
|
200 |
hs_recharge_import |
服务商/用户充值列表 |
用于记录充值导入信息 |
201 |
hs_recharge_log |
充值操作日志 |
记录充值的操作基本信息 |
202 |
hs_recharges |
充值记录表 |
记录充值的基本信息 |
203 |
hs_soccer_continent |
足球大洲 |
记录赛程所属州的基本信息 |
204 |
he_article_scheme |
专家方案表 |
用来查看专家方案详情 |
205 |
he_mission |
做任务的,现在不用了 |
|
206 |
he_share |
分享表1 |
做分享信息的来源 |
207 |
he_share_http |
分享表2 |
用来配置主域名连接的分享表(存链接用) |
208 |
he_task_category |
任务列表1 |
用来记录任务、分类 |
209 |
he_task_module |
任务列表2 |
用来记录任务模块 |
210 |
he_user_stat |
用户统计日报表 |
统计每日用户的登录、任务、是否充值。 |
211 |
hg_bean_list |
用户金豆结算表 |
|
212 |
hg_diamond_list |
用户钻石结算表 |
【结算日期、资金明细id、钱包id、用户唯一id、会员昵称、会员手机、所属机构、钻石充值、不中返钻、钻石消耗、期初钻石、期末钻石、校验状态、创建时间】 |
213 |
hg_draw_detail |
比分查询记录表 |
记录比分查询、派奖、赛果、回滚等状态 |
214 |
hg_draw_log |
|
|
215 |
hg_order_group |
|
|
216 |
hg_soccer_log |
|
|
217 |
hg_user_fund_temp |
|
|
218 |
hs_affiliation_record |
用户归属设置记录转移日志表 |
【源服务商转移日志,源推荐人,目标服务,目标推荐人,操作人】 |
219 |
hs_app_plan |
App模块开关方案表 |
【方案名称,方案情况,是否开启,类型】 |
220 |
hs_beans_source |
金豆来源表 |
【获得金豆用户,金豆来源,】 |
221 |
hs_coupon |
|
|
222 |
hs_coupon_goods |
|
|
223 |
hs_coupon_offline |
|
|
224 |
hs_goods_nav |
|
|
225 |
hs_goods_nav_item |
|
|
226 |
hs_group_wallet_daily |
|
|
227 |
hs_group_wallet_daily_settle |
|
|
228 |
hs_group_wallet_settle |
|
|
229 |
hs_hit_rate_list |
|
|
230 |
hs_log_export |
|
|
231 |
hs_login_info |
|
|
232 |
hs_newbie_record |
|
|
233 |
hs_order_diamond_record |
|
|
234 |
hs_quizzes_list |
|
|
235 |
hs_rate_of_return |
|
|
236 |
hs_rich_list |
|
|
237 |
hs_seditor |
|
|
238 |
hs_setting_pay |
|
|
239 |
hs_setting_pay_type |
|
|
240 |
hs_soccer_matches_data_bak |
|
|
241 |
hs_soccer_matches_type |
|
|
242 |
hs_user_coupon |
|
|
243 |
|
|
|
244 |
|
|
|
245 |
|
|
|
246 |
|
|
|
247 |
|
|
|
248 |
|
|
|
249 |
|
|
|
250 |
|
|
|
251 |
|
|
|
252 |
|
|
|
253 |
|
|
|
254 |
|
|
|
255 |
|
|
|
256 |
|
|
|
257 |
|
|
|
258 |
|
|
|
259 |
|
|
|
260 |
|
|
|
261 |
|
|
|
262 |
|
|
|
263 |
|
|
|
264 |
|
|
|
265 |
|
|
|
266 |
|
|
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|